IE7中絕對(duì)定位元素之間的遮蓋問(wèn)題示例探討
發(fā)布時(shí)間:2014-03-31 11:05:37 作者:佚名
我要評(píng)論
設(shè)置絕地定位的元素必須設(shè)置兩個(gè)相對(duì)定位的元素,也就是小A的紅色框框,和小C的藍(lán)色框框,設(shè)置他們的層級(jí)關(guān)系,下面有個(gè)示例,大家可以參考下
個(gè)人比較支持IE9以上的版本,認(rèn)為他們的樣式和效果都是比較人性化的,不過(guò)很多時(shí)候還是不得不考慮其他版本瀏覽器的感受,這里IE6就不用考慮他了,這貨簡(jiǎn)直就是IT史上的奇葩,這里要說(shuō)一個(gè)IE7的絕對(duì)定位和相對(duì)定位后,出現(xiàn)元素遮擋的問(wèn)題。
問(wèn)題在這里:
由于頁(yè)面復(fù)雜就不上現(xiàn)實(shí)例子,舉例說(shuō)明。
兩個(gè)同層級(jí)<div>元素,都設(shè)置了 position: relative;相對(duì)定位。
他們的內(nèi)部的元素(不管什么元素了)都設(shè)置了position: absolute;
而第一個(gè)<div>元素中的元素需要?jiǎng)澾^(guò)顯示效果,要遮擋下方的<div>,可在這個(gè)時(shí)候,恰恰相反,居然被后者遮蓋了(下方的<div>很不服氣,有木有)。
這里我需要截圖演示:
這里有兩個(gè)部落:一個(gè)紅色框里面套著一個(gè)黃色板塊 這里我們叫它小A
一個(gè)藍(lán)色框里面套著一個(gè)綠色板塊 這里我們叫它小C(因?yàn)樾不好聽(tīng),我們就不叫了)
首先說(shuō)一下,小A的紅色框和小C的藍(lán)色框都是相對(duì)定位(position: relative;),而小A的黃色板塊和小C的綠的板塊都是絕對(duì)定位(position: absolute),這里說(shuō)下兩個(gè)板塊的絕對(duì)定位都是相對(duì)于自己的父元素而言的,不了解的同學(xué)可以去補(bǔ)習(xí)下CSS。
我在這里要實(shí)現(xiàn)什么效果呢:就是鼠標(biāo)移到黃色的板塊,然后他不耐寂寞的變長(zhǎng),然后覆蓋下面的小C。
效果看下圖:
這才是我要的效果,可是IE7偏偏很二貨的逆天了,大家看看他什么效果:
簡(jiǎn)直狂拽炫酷屌炸天啊。
有些同學(xué)肯定說(shuō)了,設(shè)置一下層級(jí)關(guān)系好了。這個(gè)辦法非常好,但是給誰(shuí)設(shè)置呢?很多同學(xué)和我一樣首先給黃色板塊設(shè)置了z-index:999;
你們可以試一下,對(duì)于這個(gè)二貨IE7來(lái)講,簡(jiǎn)直令人發(fā)指,他偏偏不這么做。
(不說(shuō)多了,不然大家說(shuō)我在這逗比了,我不是猴子派來(lái)逗比的。)
說(shuō)一下正確的解決辦法:
這里設(shè)置絕地定位的元素是沒(méi)有用的,應(yīng)該設(shè)置兩個(gè)相對(duì)定位的元素,也就是小A的紅色框框,和小C的藍(lán)色框框,設(shè)置他們的層級(jí)關(guān)系。給小A的紅色框框設(shè)置z-index:999;(數(shù)值只要夠大即可)。
給小C的藍(lán)色框框設(shè)置z-index:0;(比小A的小就行)。然后我們期望的效果就出現(xiàn)了。哈哈哈
當(dāng)然不設(shè)置的話 IE7以上版本都不會(huì)有這問(wèn)題哦。
下面是我的代碼,你們闊以去試驗(yàn)下吧
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
.div1 {width: 300px;height: 80px;border: 3px solid red;position: relative;z-index:999;}
.div11 {width: 200px;height: 60px;position: absolute;left: 50px;top: 10px;background: orange;}
.div11:hover {height: 300px;}
.div2 {margin-top: 10px;width: 300px;height: 80px;border: 3px solid blue;position: relative;}
.div21 {width: 280px;height: 60px;position: absolute;left: 10px;top: 10px;background: green;}
</style>
</head>
<body>
<div class="div1">
<div class="div11"></div>
</div>
<div class="div2">
<div class="div21"></div>
</div>
</body>
</html>
問(wèn)題在這里:
由于頁(yè)面復(fù)雜就不上現(xiàn)實(shí)例子,舉例說(shuō)明。
兩個(gè)同層級(jí)<div>元素,都設(shè)置了 position: relative;相對(duì)定位。
他們的內(nèi)部的元素(不管什么元素了)都設(shè)置了position: absolute;
而第一個(gè)<div>元素中的元素需要?jiǎng)澾^(guò)顯示效果,要遮擋下方的<div>,可在這個(gè)時(shí)候,恰恰相反,居然被后者遮蓋了(下方的<div>很不服氣,有木有)。
這里我需要截圖演示:
這里有兩個(gè)部落:一個(gè)紅色框里面套著一個(gè)黃色板塊 這里我們叫它小A
一個(gè)藍(lán)色框里面套著一個(gè)綠色板塊 這里我們叫它小C(因?yàn)樾不好聽(tīng),我們就不叫了)
首先說(shuō)一下,小A的紅色框和小C的藍(lán)色框都是相對(duì)定位(position: relative;),而小A的黃色板塊和小C的綠的板塊都是絕對(duì)定位(position: absolute),這里說(shuō)下兩個(gè)板塊的絕對(duì)定位都是相對(duì)于自己的父元素而言的,不了解的同學(xué)可以去補(bǔ)習(xí)下CSS。
我在這里要實(shí)現(xiàn)什么效果呢:就是鼠標(biāo)移到黃色的板塊,然后他不耐寂寞的變長(zhǎng),然后覆蓋下面的小C。
效果看下圖:
這才是我要的效果,可是IE7偏偏很二貨的逆天了,大家看看他什么效果:
簡(jiǎn)直狂拽炫酷屌炸天啊。
有些同學(xué)肯定說(shuō)了,設(shè)置一下層級(jí)關(guān)系好了。這個(gè)辦法非常好,但是給誰(shuí)設(shè)置呢?很多同學(xué)和我一樣首先給黃色板塊設(shè)置了z-index:999;
你們可以試一下,對(duì)于這個(gè)二貨IE7來(lái)講,簡(jiǎn)直令人發(fā)指,他偏偏不這么做。
(不說(shuō)多了,不然大家說(shuō)我在這逗比了,我不是猴子派來(lái)逗比的。)
說(shuō)一下正確的解決辦法:
這里設(shè)置絕地定位的元素是沒(méi)有用的,應(yīng)該設(shè)置兩個(gè)相對(duì)定位的元素,也就是小A的紅色框框,和小C的藍(lán)色框框,設(shè)置他們的層級(jí)關(guān)系。給小A的紅色框框設(shè)置z-index:999;(數(shù)值只要夠大即可)。
給小C的藍(lán)色框框設(shè)置z-index:0;(比小A的小就行)。然后我們期望的效果就出現(xiàn)了。哈哈哈
當(dāng)然不設(shè)置的話 IE7以上版本都不會(huì)有這問(wèn)題哦。
下面是我的代碼,你們闊以去試驗(yàn)下吧
復(fù)制代碼
代碼如下:<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
.div1 {width: 300px;height: 80px;border: 3px solid red;position: relative;z-index:999;}
.div11 {width: 200px;height: 60px;position: absolute;left: 50px;top: 10px;background: orange;}
.div11:hover {height: 300px;}
.div2 {margin-top: 10px;width: 300px;height: 80px;border: 3px solid blue;position: relative;}
.div21 {width: 280px;height: 60px;position: absolute;left: 10px;top: 10px;background: green;}
</style>
</head>
<body>
<div class="div1">
<div class="div11"></div>
</div>
<div class="div2">
<div class="div21"></div>
</div>
</body>
</html>
相關(guān)文章
- 這篇文章主要為大家介紹了絕對(duì)定位元素被遮擋的解決方法,涉及使用css絕對(duì)定位的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-12-13
CSS絕對(duì)定位元素left設(shè)為50%實(shí)現(xiàn)水平居中
絕對(duì)定位的元素left設(shè)為50%時(shí),是已左上角為原點(diǎn)的,所以只要再使用margin屬性添加負(fù)值補(bǔ)償回來(lái)即可,下面示例代碼,需要的朋友可以參考下2014-09-04絕對(duì)定位的元素在ie6下不顯示隱藏了的有效解決方法
當(dāng)絕對(duì)定位元素的鄰近浮動(dòng)元素的寬度大于父層寬度減3時(shí),該絕對(duì)定位元素在ie6下面會(huì)隱藏,解決方法就是調(diào)整浮動(dòng)元素的寬度,即寬度小于或等于父層寬度減32014-06-05將一個(gè)絕對(duì)定位的div水平垂直居中對(duì)齊
在某些時(shí)候可能需要將一個(gè)絕對(duì)定位的div在它的父對(duì)象中垂直居中對(duì)齊,可能用到的頻率不是太高,但是偶爾也會(huì)用到,下面就簡(jiǎn)單介紹一下如何實(shí)現(xiàn)此功能2014-01-27- 本文主要介紹了css的絕對(duì)定位的使用方法,大家參考使用吧2014-01-27
- 下面小編就為大家?guī)?lái)一篇有關(guān)絕對(duì)定位的全面理解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-20

