展会信息港展会大全

IE6中a:hover的bug解决办法详解
来源:互联网   发布日期:2016-03-25 16:28:07   浏览:2466次  

导读:本文章来给各位同学总结了在IE6中a:hover的bug解决办法,希望些文章对各位同学有所帮助哦。先看html部分:代码如下复制代码 <li><a href=...

本文章来给各位同学总结了在IE6中a:hover的bug解决办法,希望些文章对各位同学有所帮助哦。

先看html部分:

代码如下

复制代码

<li>

<a href="">

<span class="item_icon item_icon_11"></span>

密码提示问题

</a>

</li>

<li>

<a href="">

<span class="item_icon item_icon_12"></span>

</a>

</li>

再看css部分:

代码如下

复制代码

a span.item_icon_11{background-position: -1000px 0;}

a span.item_icon_12{background-position: -1100px 0;}

a:hover span.item_icon_11{background-position: -1000px -82px;}

a:hover span.item_icon_12{background-position: -1100px -82px;}

想实现,当鼠标移到链接上时,改变span的背景。其他浏览器下常,但在ie6下,出现了问题。移动到链接上时,背景改变了,但是过一会才消失、很迟缓。

找了一下原因如下:

原因是IE6不允许a:hover的属性与a:link的属性相同,如果a:hover 中没有样式的改变,hover就不会被触发,所以需要加一个属性来区别,不论a:hover里写入任何属性,都可以使之恢复正常,最常见的是a:hover{zoom:1;}

修改后的css部分:

代码如下

复制代码

.aq_section ul li a:hover{

zoom:1;

}

好了我们再补充一下淘宝网ude写的一篇文章

如上图,在制作数码热销排行的页面时,每种手机的图片都是固定的160×120大小,但是出于页面美观及内容可读性的考虑,在列表页上图片都压缩为原大小的50%显示;也就是80×60像素大校不过当用户将鼠标移动到缩略图上时,我们会按原图大小显示出来。类似的效果在抓虾上也被应用在显示用户头像上:

抓虾使用的技术是利用一个隐藏的浮动层,每张缩略图上注册mouseover事件,当鼠标移动到缩略图上时,设置浮动层中img元素的src属性为头像的图片URL,然后通过JavaScript计算绝对定位,将放大后的头像显示在缩略图上。

事实上,如果图片显示的大小已经固定的话,不需要JavaScript,只需要纯CSS就可以实现类似的效果。如在数码产品热销排行页中,CSS的定义大致如下:

代码如下

复制代码

.DigitalImage a {

position: relative;

}

.DigitalImage a:hover {

position: relative;

z-index: 1;border: none;}

.DigitalImage a img {

position: static;

width: 80px;

height: 60px;

border: none;

}

.DigitalImage a:hover img {

position: absolute;

z-index: 2;

width: 160px;

height: 120px;

border: 1px solid #CCC;

left: -40px;

top: -30px;

}

原理很简单,设置a元素的position属性为relative,图片最开始显示为50%大小,使用默认定位;当:hover被触发的时候,图片更改为绝对定位,同时显示为原图大小,为了使效果看起来像是对称的盖在缩略图上,同时设置top和left为缩略图的宽高的一半的负数。

以上CSS中比较让人费解的大概就是粗斜显示的 border:none 一句。这看似一个毫无意义的效果,可是如果没有这一句的话,在IE6中就无法触发hover。

以前未曾遇到类似的问题,一番google,才知道这是IE6处理CSS伪类:hover的Bug。例如如下的代码:

代码如下

复制代码

<style>

a {}

a span {color: green;}

a:hover {}

a:hover span {color: red; }

</style>

<a href=”http://www.111cn.net“> 淘宝网 <span> 淘你喜欢 </span></a>

在IE7/FF中,鼠标移动到链接上时,”淘你喜欢”字样会变为红色,但IE6则无反应。所以IE6的bug就是如果a 与 a:hover 的css定义是一样的,也就是说如果a:hover 中没有样式的改变,hover就不会被触发。但如果在a:hover{}增加一些特定的属性,例如

代码如下

复制代码

a:hover{border:none;}

或者

a:hover{padding:0;}

又或者

a:hover{background: none;}

此时hover就可以触发了。这样的属性还包括direction/text-align/text-indent/float/overflow/position …… 等等。我在数码产品畅销榜页面就是选择了使用border:none。更详细的信息请参考:

赞助本站

人工智能实验室

相关热词: 开发 编程 android

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港