【jQuery】VRトラッキングみたいに、カーソルを丸くしクリックアクションを追加する方法

この記事は約4分で読めます。
広告

カーソル(cursor)を矢印ではなく丸くし、クリックでポワンっと広がるアニメーションを追加する方法を説明!
この~。。。なんて言うんだろう?
「カーソルが好きな形に変化するや~つ(仮名)」がサイトに実装されてると「こだわってる!」感があるから好きです。

でも、「どうせ難しいんでしょ」って今まで敬遠してたけど、作ってみると意外と簡単でした★
作ったのが嬉しくて、コピペで使いまわしてくれるとさらに嬉しいです。
自分でも、今後このサイトからコピペします。

【コピペする前に簡単に説明を】

jQueryを使って「div」をカーソル(cursor)に合わせて移動させています。
クリックしたら、どんな場所であれアニメーションをするクラスを追加しています。

カーソルがウィンドウから出た場合は消えるようにしています。
この処理をしないと、画面上に黒い点が残っちゃってみっともないんだ。

さらに、「aタグ」エリアに入ったらカーソルを少し変更させて、
クリッカブルな要素だと伝わるようにしています。
「aタグ」エリアに入った時に、もっと変化させた方が分かりやすいけど、
クリックアニメとかぶっちゃうから控えめにしてます。

それではデモですが、こちらのページがそのままデモページとなっています。

下にページ遷移はしませんが「aタグ」のボタンを置いてあるので、
カーソルを載せたりクリックしたりしてみてください!

遷移しないボタン

それではHTMLとCSS、jQueryを。
ご自身のサイトで利用してれたら嬉しいです!

HTML

<div class="cursor fade"></div>

CSS

* {
  cursor: none;
}
.cursor {
  position: fixed;
  z-index: 100;
  width: 14px;
  height: 14px;
  margin-top: -7px;
  margin-left: -7px;
  background: rgba(10, 18, 60, 0.5);
  display: block;
  border-radius: 20px;
  pointer-events: none;
}
// 「aタグ」に乗った時のアニメ
.active {transform: scale(1.5);opacity: .4;}

// クリックした時のアニメ
.click {animation: .6s click;}
@keyframes click {
  50% {transform: scale(7);opacity: 0;}
  51% {transform: scale(0);opacity: 0;}
  100% {transform: scale(1);opacity: 1;}
}

// カーソルがウィンドウから外れた時のアニメ
.fade {animation: .15s fade forwards;}
@keyframes fade {100% {opacity: 0;}}

jQuery

var cursor=$(".cursor");
  $(window).on("mousemove",function(e){
    var x=e.clientX;
    var y=e.clientY;
    cursor.removeClass("fade");
    // 黒丸をカーソルに合わせて移動
    cursor.css({
      "top": y,
      "left": x
    });
  });

  $(window).on("mouseout",function(e) {
    // カーソルがウィンドウから外れた時の処理
    cursor.addClass("fade");
  });

  $("body").on("click", function() {
    // クリックした時のアニメーション
    cursor.addClass("click");
    setTimeout(function() {
      cursor.removeClass("click");
    },600);
  });

  $("a").on({
    // カーソルが「aタグ」のエリアに入った時の処理
    "mouseenter": function() {
      cursor.addClass("active");
    },"mouseleave": function() {
      cursor.removeClass("active");
    }
  });

  $("a").on("click", function() {
    // 「aタグ」を押したときにアニメーションの間遷移を止める
    event.preventDefault();
    var link = $(this).attr('href');
    setTimeout(function() {
      location.href= link;
    }, 300);
  });
エンデ・バタローをフォローする
javascriptjQuery

埼玉県北本市に越してきて2年と少しになります。以前は東京都の京王線沿線に、その前は神戸の三宮、さらにその前は名古屋の八事霊園近くに住んでいました。

怖い話が大好きで、ネット怪談、ホラー小説、心霊Youtuber(オウマガドキch、ゾゾゾ)を寝る前のお供にしてます。

フロントエンドエンジニアとして9年目のキャリアを積んでおり、figma、Illustrator、Photoshop、WordPress、HTML、CSS(scss)、JavaScript(jQuery)、PHPなど使って日々仕事をしています。

仕事で検索する手間を省くためフロントエンド技術に関するブログを書いています。

エンデ・バタローをフォローする
広告
初めてのブログ

コメント

  1. 三五笑话 より:

    不知道说啥,开心快乐每一天吧!

タイトルとURLをコピーしました