国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 網頁設計 > 正文

解析IE6中a:hover的bug

2024-08-30 08:33:04
字體:
來源:轉載
供稿:網友
 

如上圖,在制作數碼熱銷排行的頁面時,每種手機的圖片都是固定的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.taobao.com“> 淘寶網 <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。更詳細的信息請參考:

  • IE Pure CSS Pop Ups Bug
  • IE中偽類:hover的使用及BUG

另外,通過閱讀 position:relative/absolute無法沖破的等級,發現CSS還有改進的空間,改動后如下:

.DigitalImage a:hover {
position: relative;
}
.DigitalImage a img {
position: static;
width: 80px;
height: 60px;
border: none;
}
.DigitalImage a:hover img {
position: absolute;
width: 160px;
height: 120px;
border: 1px solid #CCC;
left: -40px;
top: -30px;
}

改動的原理就是去掉了a樣式定義,直接定義a:hover。這樣即避免了IE6的hover的Bug(position也是一個觸發顯示的屬性),另外也避免了 position:relative/absolute無法沖破的等級 一文中提到的z-index的問題,所以你會發現改進后的樣式中,z-index屬性也去掉了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鹰潭市| 静海县| 永胜县| 侯马市| 夹江县| 武宣县| 莲花县| 额敏县| 株洲市| 宾阳县| 灵山县| 花莲县| 延庆县| 巴楚县| 乐亭县| 乌兰浩特市| 西充县| 鸡东县| 个旧市| 达孜县| 郸城县| 张家港市| 景谷| 汝阳县| 肇东市| 宜昌市| 千阳县| 阜平县| 沙雅县| 玛沁县| 堆龙德庆县| 广丰县| 湛江市| 德化县| 孟州市| 普格县| 邳州市| 雅安市| 乌兰县| 永定县| 西华县|