問題10:jqueryでボタンを作ろう1
今回はクリックするとその点から円が広がっていくようなアニメーションを作りましょう!
あらかじめエディタに書くコード
<div class="btn">ここをクリック<span></span></div>
¥HTML¥
.btn{
position: relative;
width: 200px;
height: 50px;
text-align: center;
line-height: 50px;
cursor: pointer;
border: 2px solid black;
overflow: hidden;
}
.btn span{
position: absolute;
background-color: #bbbbbb;
border-radius: 50%;
transform: translate(-50%,-50%);
opacity
¥CSS¥
期待する画面
解答ソースコード
$(function () {
$(".btn").click(function (e) {
$(this).find("span").css({width:0,height:0});
var position = $(this).offset(),
x = e.pageX - position.left,
y = e.pageY - position.top;
$(this).find("span").css({ "top": y, "left": x }).animate({width:"400px", height:"400px"});
});
});
¥JavaScript¥
解説
btnがクリックされた時をトリガーとしてfunctionの引数にeを与えてthisからoffsetでクリックされたbtnの位置を取得し、それを変数に代入し、そこからleft、topによってx軸、y軸方向の位置を取得し、クリックされた位置をe.pageX、e.pageYで取得しそれぞれ先ほど得られたbtn自体の位置を引いてあげればボタン内左上からの距離を得られる。それをfindでspanを指定し、cssでtop、leftを与えてあげ、最後にanimateで円が大きくなっていくように見せるためにwidthとheightを設定します。この大きさは自由に決めてください。補足なのですが、今回は2回目以降も同じようにアニメーションが動くように処理の最初にwidthとheightを0にして初期化しています。
ログインして解答を見る
#忍者CODE無料問題集で活動を記録しよう
完了にする!