鉴于以下内容:
ul li .main .meta {opacity:0;}
<ul>
<li> <span class="main">TITLE</span> <span class="meta">meta</span> </li>
<li> <span class="main">TITLE 2 </span> <span class="meta">meta</span> </li>
<li> <span class="main">TITLE 3</span> <span class="meta">meta</span> </li>
etc... long list...
</ul>
Run Code Online (Sandbox Code Playgroud)
我可以做什么样的JQUERY魔术,以便每当用户将鼠标悬停在LI中的AnyWhere上时,具有class = META的SPAN,更改为Opacity:1,并且当用户将其鼠标移离LI时,LI的meta将返回到不透明度:0,新LI的元素去Opacity 1.等....
谢谢!
这里有几个问题.最简单的实现是:
$("li").hover(function() {
$(this).find("span.meta").stop().fadeIn();
}, function() {
$(this).find("span.meta").stop().fadeOut();
});
Run Code Online (Sandbox Code Playgroud)
这将是一种工作.问题是跨度是内联元素,fadeIn()并将其更改为块级元素.
注意:stop()如果您在同一目标上快速启动多个动画,那么放入其中是一个很好的习惯,否则会产生意想不到的影响.
您也可以使用类来执行此操作:
$("li").hover(function() {
$(this).find("span.meta").removeClass("hidden");
}, function() {
$(this).find("span.meta").addClass("hidden");
});
Run Code Online (Sandbox Code Playgroud)
有:
span.hidden { display: none; }
Run Code Online (Sandbox Code Playgroud)
但是你会以这种方式失去淡入和淡出效果.但它确实解决了这个display: block问题.
你可以选择animate(),opacity但opacity在IE上并不支持.见不透明度:
IE兼容性说明
如果您希望不透明度适用于所有IE版本,则顺序应为:
Run Code Online (Sandbox Code Playgroud).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});
});
Run Code Online (Sandbox Code Playgroud)
您必须回答的一个问题是:您是否希望"元"内容不被呈现或者不可见?有区别.不被渲染就像display: none.不可见是opacity: 0因为文本仍然可以选择,因此可能会使用户感到困惑.
恕我直言,我认为你最好不要接受显示器的块性质或使用工具提示(甚至是丰富的工具提示).
| 归档时间: |
|
| 查看次数: |
892 次 |
| 最近记录: |