0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

JavaScript+CSS/アニメーション実装方法

Posted at

Javascriptの勉強。
カーソルを動かすたびにカラフルで可愛いハート💛が現れるアニメーションの実装方法を模写して学習しました!
カラフルで本当にかわいい…!

勉強に使用した動画:https://www.youtube.com/watch?v=I0R0T7p5oR8

記述したコードはこちら。

①index.html

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>Colorful Hearts On Mousemove</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <script type="text/javascript">
    document.addEventListener("mousemove", function(e){
      let body = document.querySelector('body');
      let heart = document.createElement("span");
      let x = e.offsetX;
      let y = e.offsetY;
      heart.style.left = x + 'px';
      heart.style.top = y + 'px';
      let size = Math.random() * 100;
      heart.style.width = 20 + size + 'px';
      heart.style.height = 20 + size + 'px';
      body.appendChild(heart);

      setTimeout(function(){
        heart.remove();
      },2000);
    })
  </script>
</body>
</html>

②style.css

* {
  margin: 0;
  padding: 0;
}

body {
  overflow: hidden;
  background: #000;
  height: 100vh;
}

span{
  position: absolute;
  background: url(heart.png);
  pointer-events: none;
  width: 50px;
  height: 50px;
  background-size: cover;
  transform: translate(-50%,-50%);
  animation: animate 2s linear infinite;
}
@keyframes animate {
  0% {
   transform: translate(-50%,-50%);
   opacity: 1;
   filter: hue-rotate(0deg);
  }
  100% {
    transform: tranlate(-50%, -1000%);
    opacity: 0;
    filter: hue-rotate(720deg);
  }
}

addEventListenerとは?

→指定した対象について、特定のイベントが実行される度に関数の呼び出しや処理の設定ができる。

指定したターゲット.addEventListener("イベントの種別",function(){})

今回の場合は…

 document.addEventListener("mousemove", function(e){

なので、mousemove(マウスカーソルが移動)した時にイベントが発火。 

document.querySelector()とは?

→documentオブジェクトの()内に記述された要素を取得。

今回の場合は、

let body = document.querySelector('body');

なので、「body」という要素を取得してbodyに代入している。

document.createElement()とは?

→ ()内のタグ名をもつ要素を生成して、メモリに保存する。

なので、

let heart = document.createElement("span");

「span」のタグ名を持つ要素を生成→heartに代入。

offsetとは?

event.offsetX → 要素内でのカーソル座標Xを取得
event.offsetY → 要素内でのカーソル座標Yを取得

eventをeと省略。

let x = e.offsetX;
let y = e.offsetY;

Math.random()とは?

→ 0以上1未満の乱数を表示。

なので、

let size = Math.random() * 100;

0以上1未満の乱数を表示させsizeに代入。100倍する。

appendChildとは?

→ 特定の親要素の中に要素を追加する。
要素を指定してその要素の子要素としてHTMLタグを追加する。
※追加される場所は親要素の閉じタグの直前。

setTimeoutとは?

→ 待ち時間後にfunctionを一度だけ実行するメソッド。

setTimeout(ファンクション、待ち時間)

なので、

setTimeout(function(){
        heart.remove();
},2000);

2秒後にハートを消去する。

0
1
1

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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?