用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:hover span{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不兼容hover ie6 a hover属性失效解决办法
ie6 a hover不起作用已经是众所周知的了,网上也有大量于此相关的文章,看了一下吗把自己的总结写了出来,感兴趣的朋友可以了解下,或许对你学习浏览器兼容会有很多的帮助2013-02-05csshover.htc在IE7下使用:active伪类无效解决方法
相信做前端开发都知道,IE6、IE7都不支持:active伪类,IE6更甚,连:hover伪类都不支持。为了解决这个问题,一般都会引入一个csshover.htc文件来解决,本文将介绍解决此问题2012-12-24csshover.htc可以解决ie6下hover不起作用等兼容问题
在ie6 下只有 a 才支持 :hover 伪类,其它标签都不支持,现在可以通过 csshover.htc 可以解决 ie6 的 hover 兼容问题,需要的朋友可以了解下2012-12-15- 这里挑几个重要的bug或者说失误,来进行说明:hover状态不触发 可点区域不可点击等相关解决方法,需要的朋友可以了解下2024-05-07
- 当鼠标移动上去时,周围显示一个方框,但是后面的会向后移动,如何才能使得当鼠标移上去时后面的li不浮动2012-12-11
在CSS中定义a:link、a:visited、a:hover、a:active正确顺序
以前用CSS一直没有遇到过这个问题:a:link、a:visited、a:hover、a:active定义时的正确排序是什么?很是疑惑,于是乎搜集整理一番,写出来和大家分享一下,希望可以帮助你们2012-12-07链接伪类(:hover)CSS背景图片有闪动BUG的解决方法
IE6下链接伪类(:hover)CSS背景图片有闪动BUG,主要原因ie会再一次请求这张图片,或者说图片没被缓存。2011-04-28- 在使用 link的时候,要使用如下顺序,否则hover则没有任何效果2010-08-27
- 在处理css的机制上,IE总是有很多让人吐血的举动,但对于他们现在的改进力度还是值得高兴的。2009-12-08
- IE中伪类hover的使用及BUG ,需要的朋友可以参考下。2009-11-13
最新评论