我参加这个聚会很晚了——但是有一个更好的方法可以做到这一点,所以为了未来的浏览器,我想添加它。这种效果根本不需要 jQuery 。
首先,将这两个项目包装在一个容器中(这里我使用带有 class 的 div container
),并将一个类应用于您想要在 hove 上出现/消失的项目(这里我使用元素show-on-hover
上的类)#divId
<div class="container">
<a id="hlDiv" href="...">link text</a>
<div class="show-on-hover" id="divId">popup stuff</div>
</div>
接下来,按如下方式设置您的 CSS:
.container > .show-on-hover { display: none; }
.container:hover > .show-on-hover { display: block; }
#divId { /* whatever styles you want */ }
效果是悬停现在完全由 CSS 控制 - 但是,它没有您最初拥有的 1s 过渡。这有点复杂(目前在 IE 中不起作用 - 但从 IE10 开始将受支持)。
只需按如下方式更改 CSS:
.container { position: relative; }
.container > .show-on-hover { opacity: 0.0; position: absolute; }
.container:hover > .show-on-hover { opacity: 1.0; }
.show-on-hover {
-webkit-transition: opacity 1s; /* Chrome / Safari */
-moz-transition: opacity 1s; /* Firefox */
-o-transition: opacity 1s; /* Opera */
}
相对定位.container
意味着容器为其子元素及其定位设置自己的边界框。这意味着当您将> .show-on-hover
样式设置为 时position: absolute;
,它仍将被限制在其父级(如果您设置left: 0;
为示例,它将移动到 的左边缘.container
,而不是屏幕)。
切换现在opacity
只是使绝对定位的项目显示/消失在您放置它的任何位置(并且您将更新 CSS 以将其准确放置在您想要的位置,相对于超链接)。因为我们不再使用display: none
-DIV
将始终占用屏幕上的空间 - 即使在隐藏时(这可能不是您想要的)。
最后 - 设置转换的最后一个块告诉现代浏览器,每当 class 元素的不透明度发生变化时.show-on-hover
,都会使该变化发生在 1 秒的补间中。
这是一个显示转换的 jsFiddle:http: //jsfiddle.net/TroyAlford/nHrXK/2
这是一个只显示切换的 jsFiddle:http: //jsfiddle.net/TroyAlford/nHrXK/3/