今天小编跟大家讲解下有关用hover配合(纯css)position实现网页动态展示效果 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了有关用hover配合(纯css)position实现网页动态展示效果 的相关资料,希望小伙伴们看了有所帮助。
如上网页效果用js很容易实现 但用纯css实现此动态功能 意在加深对hover和position定位的理解。与大家分享 欢迎指正。
可以看到 这种效果底层是a标签 hover状态中凭空弹出一个解释框 我们称为元素2。那么要想让元素2实现弹出效果而且不影响底层a标签的排布 显然应该用相对定位。因此确立了hover配合position的基本方法。我们以a标签为相对定位的基准 代码如下:
css复制代码代码如下: a{ display:block; height:30px; width:30px; background-color:green; float:left; margin-left:10px; position:relative; } a span{ display:hidden; } a:hover{ background-color:red; } a:hover span{ width:100px; height:50px; background-color:yellow; display:block; position:absolute; left:35px; top:5px; } html复制代码代码如下: <body> <a href=""><span></span></a> <a href=""><span></span></a> <a href=""><span></span></a> </body> 实现的效果如下图所示(黄色span为元素2 绿色为a标签 a标签hover时为红色):
可以看到 hover加position定位实现了弹出解释框的效果。但显然这不是我们想要的效果 关键在于如何使元素2覆盖到a标签上面来。在现代浏览器中很简单 我们给span设置z-index属性便可:
a:hoverspan{z-index:1;}
现代浏览器中实现效果如下:
这便是我们想要的效果 但是在ie6中…
可以看到万恶的ie6又不兼容了 显然z- index没有起作用 那么怎么才能让元素2覆盖a标签呢 经过大量实验我发现 元素2用来定位的基准标签的兄弟标签是会覆盖元素2的。例如上图 第三个 a标签覆盖了元素2 是因为元素2是以第二个a标签为基准定位的。找到原因 那么解决这个兼容问题也很容易 只需在a标签内再嵌套一个标 签<em> 我们让元素2以<em>为基准定位 就会发现a标签不能再覆盖元素2了(虽然<em>还是会覆盖元素 2 但em是空标签 而且可以设为隐藏 因此无影响)。代码如下:
css复制代码代码如下: a{ display:block; height:30px; width:30px; background-color:green; float:left; margin-left:10px; } a em{ display:block; height:30px; width:30px; position:relative; } a span{ display:hidden; } a:hover{ background-color:red; } a:hover span{ width:100px; height:50px; background-color:yellow; display:block; position:absolute; left:35px; top:5px; z-index:1; } html复制代码代码如下: <body> <a href=""><em><span></span></em></a> <a href=""><em><span></span></em></a> <a href=""><em><span></span></em></a> </body>
这样在ie6中也能完美运行了 最终通过纯css实现了能够兼容的如本文开头的网页动态效果!来源:爱蒂网