如何使用 jQuery 将鼠标悬停在 div 上时显示覆盖 div?
我想在悬停的 div 顶部显示一个覆盖 div,类似于 IBM 网站上的此效果: http: //www.ibm.com/us/en/
请查看页脚附近的 3 个框。将鼠标悬停在“让我们建设一个更智能的星球”框上即可查看效果。
I want to show an overlay div sitting on top of the hovered div similar to this effect on IBM website: http://www.ibm.com/us/en/
Please look at the 3 boxes near the footer. Hover on the box "Let's build a smarter planet" to view the effect.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我创建了一个工作示例。基本上,您需要创建 3 个带有可见和不可见容器的 div,添加悬停事件处理程序并在该处理程序中切换工具提示的可见性。
HTML:
CSS:
jQuery 代码:
I've created a working example. Basically you need to create 3 divs with a visible and the invisible containers, add hover event handler and toggle the tooltip's visibility in that handler.
HTML:
CSS:
jQuery code:
IBM 正在使用Dojo 的.expand 方法。您可以使用 expand 插件在 jQuery 中执行相同的功能。
IBM is using Dojo's .expand method. You can do the same functionality in jQuery using the expand plugin.
您可以轻松做到这一点。步骤应遵循:
1) 有 3 个块,例如 DIV 或 UL LI,并在其中添加隐藏容器(或者如果您使用 jQuery 设置位置也没关系。
如果您的结构是:
2) 将 mouseenter 和 mouseleave 事件附加到所有 3 个块,例如:
3) 您应该根据元素的位置方法修改 JS 或 CSS,以便当调用
show()
时,该元素将显示在该元素的正上方。例如,如果您的隐藏块具有 CSS 规则position:absolute
,您将使用:在这种情况下,显示的容器将调整到悬停块的右上角。
由于隐藏容器是块容器的子容器 - 不会调用 mouseleave 事件,因此它会保持良好的显示状态。
You can easily do that. The steps should follow:
1) Have 3 blocks like DIVs or UL LIs and add the hidden container inside(or it doesn't matter if you will set the position with jQuery.
If your structure would be:
2) Attach mouseenter and mouseleave events to all 3 blocks like:
3) You should modify JS or CSS according to the position methods for your elements so when
show()
is called the element would be displayed right on top of the element. For example if you hidden block would have a CSS ruleposition: absolute
you would use:In this case the shown container would be adjusted to the right upper corner of the hovered block.
As the hidden container is a child of the block container - no mouseleave event would be called so it would stay nicely displayed.