サイトオリジナルのマウスカーソルを作る
See the Pen
by ぼぶ@朝活input中 (@bobu_6326)
on CodePen.
HTML+JQuery
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://code.jquery.com/jquery-3.6.0.js" integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk="
crossorigin="anonymous"></script>
<style>
html{
position: relative;
cursor: none;
}
body a:hover{
cursor: none;
}
.cursor{
position: fixed;
display: inline-block;
width: 20px;
height: 20px;
z-index: 99999;
pointer-events: none;
border-radius: 50%;
background-color: lightskyblue;
}
</style>
</head>
<body>
<div class="cursor"></div>
<script>
$(function(){
$(document).on('mousemove',function(e){
let x = e.clientX,
y = e.clientY;
$('.cursor').css({
"top": y+ "px",
"left": x+ "px"
});
})
});
</script>
</body>
</html>
解説
非表示にしたカーソルに .cursor の要素が付いてくるコードです。
HTML に JQuery を読み込んだものを用意しました。
HTML
- CSS で HTML 全体に position: relative; で top や left を使えるようにする
- cursor: none; で元のカーソルを非表示にする a:hover も忘れずに非表示にする
.cursor の CSS
- position: fixed; = 位置をスクリーンに固定する。
- display: inline-block; = 要素に width と height を与えるため
- z-index: 99999; = 他の要素より前面に表示する
- pointer-events: none; = リンク等に hover してもカーソルが変化しないように
- border-radius: 50% , background-color: lightskyblue = カーソルの見た目
JQuery
- $(document).on(‘mousemove’,function(e){}); = マウスが動くたびにイベントが動作する
- let x = e.clientX, y = e.clientY; = function(e) でマウスを変数e で設定しているので、e.clientX で X軸、e.clientY で Y軸の値を取得
- $(‘.cursor’).css({ }); = .cursor に top と left の CSS を付与する事でマウスと同じ座標を移動させる