ただいま、jqueryを勉強中です。
現在、ツールチップを作成しているのですが、コードは問題なく、ツールチップが表示されるのですが、その仕組みがよく理解できなく困っております。
HTMLのサンプルコードのp要素のabbrにtooltipと言うクラスを作成し、
tooltipのabbr要素やa要素にマウスがのったときにはツールチップがアニメーションで表示され、マウスをはずしてしばらくするとアニメーションしながら消えていくような仕様です。
jqueryのサンプルコード内の①と②の箇所なのですが、
当初は先に②を記述していました。
ですが、それだとブラウザを小さくするとツールチップの中が改行されて、高さが高くなり、
オフセットする高さが足らずにabbr要素にツールチップが重なってしまったため、
先に①のX軸の配置をきめてから、高さを取得するように書き直しました。
そうすると、もしツールチップが画面右に配置されて改行されても
その分の高さを取得することができるそうなのですが、
なぜ、先に高さを設定すると改行された分の高さを取得できないのでしょうか。
x軸を決めてからなら、改行された分の高さが取得できるという仕組みがいまいちよくわからず、offsetについてやheightについて2日間ずっと、インターネットで調べたのですが、
そのような仕組みが書かれているものが見つけることができませんでした。
初心者で、大変お恥ずかしいご質問なのですが、
どうかご教授いただけませんでしょうか。
どうぞよろしくお願いいたします。
/****************************************
jQueryのサンプルコード
*****************************************/
$(function() {
$(".tooltip").each(function(){
var toolTip = $('<div class="tooltip-body">');
var toolTipText = $(this).attr("data-tooltip");
toolTip.html( '<p>' + toolTipText + '</p><span class="tail"></span>' ).hide();
$("body").append(toolTip);
$(this).hover(function(){
if(toolTip.css("display") == "none"){
var targetPostion = $(this).offset();
toolTip.css({
"display":"block",
"position": "absolute",
"left": targetPostion.left + "px",//=======①
"z-index": "9999"
});
var toolTipHeight = toolTip.height();//======②
toolTip.css({
"top": targetPostion.top - toolTipHeight -3 + "px",
"opacity": "0"
})
.stop().animate({
"top" : "-=10px",
"opacity": "1"
}, 250);
}
},
function(){
if(toolTip.css("display") != "none"){
setTimeout(function(){
toolTip.stop().animate({
"top": "-=10px",
"opacity": "0"
}, 250, function(){
toolTip.hide();
}
);
}, 1000);
}
});
});
});
</script>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/05/03 14:31