有幾個問題在這裏。最簡單的實施方式是:
$("li").hover(function() {
$(this).find("span.meta").stop().fadeIn();
}, function() {
$(this).find("span.meta").stop().fadeOut();
});
這將工作。問題是跨度是內聯元素,並且fadeIn()
會將其更改爲塊級元素。
注:將stop()
在那裏是一個很好的習慣進入,否則你可以得到意想不到的效果,如果你很快火了同一目標上幾個動畫。
你可以用類就此別過:
$("li").hover(function() {
$(this).find("span.meta").removeClass("hidden");
}, function() {
$(this).find("span.meta").addClass("hidden");
});
有:
span.hidden { display: none; }
,但你失去在淡入和淡出效果這樣。但它確實解決了display: block
問題。
你可以選擇animate()
opacity
但是opacity
在IE上並不支持。見opacity:
IE兼容性注意
如果你想的不透明度在所有IE版本 工作,順序應該是:
.opaque {
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; // first!
filter: alpha(opacity=50); // second!
}
如果不使用這個命令, IE8-as-IE7不適用不透明度, 雖然IE8和純IE7做的。
該代碼看起來是這樣的:
$("li").hover(function() {
$(this).find("span.meta").stop().animate({opacity: 0.0});
}, function() {
$(this).find("span.meta").stop().animate({opacity: 1.0});
});
一個問題,你必須回答是:做你想要的「元」的內容不會被渲染或只是不可見?有一個區別。不被渲染就像display: none
。不可見就像opacity: 0
這可能會混淆用戶,因爲文本仍然可以選擇。
恕我直言,我認爲你最好接受顯示器的塊性質或使用工具提示(即使是豐富的工具提示)。
這不會在mouseout上隱藏。 – SLaks 2010-01-08 03:55:32
同意。正如其他答案所示,處理鼠標懸停事件非常容易。 – 2010-01-08 04:06:44