用hover配合(纯css)position实现网页动态展示效果_ Div+Css教程-查字典教程网
用hover配合(纯css)position实现网页动态展示效果
用hover配合(纯css)position实现网页动态展示效果
发布时间:2016-12-27 来源:查字典编辑
摘要:如上网页效果用js很容易实现,但用纯css实现此动态功能,意在加深对hover和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实现了能够兼容的如本文开头的网页动态效果!

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新 Div+Css教程学习
    热门 Div+Css教程学习
    网页设计子分类