關於定位和z index的一些小經歷

2022-08-05 02:15:14 字數 2015 閱讀 6574

今天在工作過程中,遇到這麼乙個奇葩問題,搞了好一陣子才找到原因,遂總結了一下...

先上demo:

<

div

style

="width:800px; height:400px;"

>

<

div

style

="width:380px; height:400px; float:left;"

>

<

div

id="a1"

style

=" position:relative; z-index:1;"

>

<

div

style

="position:absolute;"

>

<

div

style

="width:400px; height:200px; position:absolute; background:#f00; left:100px; top:50px;"

>

div>

div>

div>

div>

<

div

style

="width:380px; height:400px; float:right;"

>

<

div

id="a2"

style

=" position:relative; z-index:1;"

>

<

div

style

="position:absolute;"

>

<

div

style

="width:400px; height:200px; position:absolute; background:#0f0; left:-100px; top:100px;"

>

div>

div>

div>

div>

div>

<

input

type

="button"

value

="click"

onclick

="document.getelementbyid('a1').style.zindex=3"

/>

當你用ie7執行此段**

(ie6暫未確認是否會出此問題,不過推斷也會有這問題,畢竟這兩瀏覽器就是一對奇葩... )

你會發現,不管怎麼點按鈕,紅色層死活不肯跑到綠色層上面...

而在其他瀏覽器不會,唯獨ie的奇葩兄弟會這樣

但是...如果你用css直接定義乙個z-index:3給a1,紅框又能蓋住綠框了...

並且用頁面載入事件( 如jquery的$(document).ready(function()) )來觸發js,修改a1的z-index也是可以實現紅框蓋住綠框...

也就是說,唯獨像點選,滑鼠經過這樣的時間所觸發執行的js是無效果的...

此時此刻...無比鬱悶了吧...

解決方法是:

將a1和a2的父級元素都設為相對定位( position:relative )

然後修改按鈕onclick事件觸發的js,讓其功能變為如下...

修改a1父級元素的z-index,使a1的父級元素的z-index值大於a2的父級元素的z-index值

這樣就正常了

總結:ie6 和 ie7 下,兩個

相對定位

元素,如果他們的上一級

父級元素( 注意,是最親的一級 )不是同一元素。

其z-index值通過頁面載入事件以外的其他事件來執行js進行修改,均無效果。

而直接定義css,或通過ready事件來執行js進行修改,則有效果。

關於z index的一些疑惑

當我使用z index這個屬性的時候,為了實現首頁的banner圖,我還同是用到了乙個bootstrap的carousels外掛程式,然後我就鬱悶了,開始沒有發現,然後出現了在360瀏覽器上當banner滑動的時候我的頭部居然閃爍的現象,開始一直找不到原因。最後仔細的觀察居然是這個屬性的問題就是z ...

關於編譯的一些小知識

gnu編譯器 g 編譯 c 程式 在windows下,進入源 所在的路徑下,在命令列中輸入 g o test.exe test.cpp將test.cpp 編譯生成 test.exe 可執行檔案,如果沒有 o test.exe 選項,預設生成 a.exe 在linux下,進入源 所在的路徑下,在命令列...

關於dialog的一些小結

1.自定義dialog繼承dialog,2.或者activity在mainifest中設定 android theme style commondialog android theme.dialog 或者 3.處理一些手機寬高不能與螢幕寬高等同問題 顯示在底部與螢幕寬度一樣 private void...