LoginSignup
1
0

More than 3 years have passed since last update.

年末まで毎日webサイトを作り続ける大学生 〜72日目 Mouse Overと画像~

Posted at

はじめに

こんにちは!@70days_jsです。
mouseoverで画像が少しずつ現れるサイトを作りました。(gif)↓

test3.gif

今日は72日目。(2019/12/29)
よろしくお願いします。

サイトURL

やったこと

mouseoverで画像が少しずつ現れるものを作りました。

今回JavaScriptとcssで作ったので、htmlは何も書いていません。

html↓

  <body></body>

cssではあらかじめ画像を表示したり、スタイルを用意しています。

css↓

body {
  width: 100vw;
  height: 100vh;
  overflow: hidden;
  margin: 0;
  background-image: url("day31_image/4.jpg");
  background-size: cover;
}

.oneBlock {
  background-color: white;
  position: absolute;
  border-right: solid 2px black;
  border-bottom: solid 2px black;
  display: flex;
  justify-content: center;
  align-items: center;
}

JavaScript↓

let bodyWidth = window.innerWidth,
  bodyHeight = window.innerHeight,
  oneBlockWidth = bodyWidth / 10,
  oneBlockHeight = bodyHeight / 10,
  oneBlockList = [];

for (var i = 0; i < 10; i++) {
  for (var j = 0; j < 10; j++) {
    let div = document.createElement("div");
    div.classList.add("oneBlock");
    div.style.width = oneBlockWidth - 1 + "px";
    div.style.height = oneBlockHeight - 1 + "px";
    div.style.top = oneBlockHeight * i + "px";
    div.style.left = oneBlockWidth * j + "px";
    let number = i * 10 + (j + 1);
    div.setAttribute("id", number);
    div.innerHTML = number;
    oneBlockList.push(div);
    document.body.appendChild(div);
  }
}

for (var i = 0; i < oneBlockList.length; i++) {
  let oneBlock = oneBlockList[i];
  oneBlock.addEventListener("mouseover", function() {
    oneBlock.style.backgroundColor = "rgba(0,0,0,0)";
    oneBlock.innerHTML = "";
  });
}

まず1~100のblockはdivで出来ていますが、これはfor文のネストで作っています。↓

for (var i = 0; i < 10; i++) {
for (var j = 0; j < 10; j++) {
...
}
}

この段階で全てのdivのスタイル・idを設定し、全てのdivを1つの配列に格納しています。

oneBlockList.push(div);

その後、配列をfor文で回してイベントリスナーをつけています。↓

for (var i = 0; i < oneBlockList.length; i++) {
...
oneBlock.addEventListener("mouseover", function() {
...
}
}

わざわざ配列に入れずに初めのfor文に書いてもいいのですが、長くなりすぎるのを懸念して分けて書きました。
そう考えると、スタイルの付与等も役割別で分けてもよかったかもしれません。

感想

残りあと2日。頑張ろう

最後まで読んでいただきありがとうございます。明日も投稿しますのでよろしくお願いします。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0