position:relativeabsolute無法沖破_Div+CSS教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
前段時(shí)間記得似乎是誰在群里提出了一個實(shí)在是讓大家都覺得很不理解的一個問題:
假如我我們設(shè)定LI為position:relative;設(shè)置span為position:absolute;那么我們會發(fā)現(xiàn)無論SPAN的z-index值設(shè)置得再高都將永遠(yuǎn)在后面父級的下面。
[ 可先修改部分代碼 再運(yùn)行查看效果 ]
試一下很輕易發(fā)現(xiàn)我們的子級,z-index的值達(dá)到了1000的被設(shè)定了position:absolut;子級都被檔在了父級的下面。我想了很久,我覺得其根本問題是:設(shè)置同樣的position:relative/absolute;同級標(biāo)簽之間的等級是無法用z-index超越的。我們上面的例子中的第一個LI的等級永遠(yuǎn)都要小于后一個LI的等級,所以我們在LI里的子級身上設(shè)置了position:absolute;,給了非常高的z-index值。
也許你會這樣來想:只要針對有span的LI設(shè)置position:relative;不就好了嗎?非常正確。當(dāng)其它的LI都不設(shè)置position:relative;那么我們需要的那個子級就可以浮在所有的內(nèi)容之上。但是假如實(shí)際上,所有的LI中都要有span,并且屬性都需要一樣怎么辦?當(dāng)然我們不大會需要有這樣的效果。但是我們需要有這樣的效果:子級全部是隱藏的,當(dāng)有鼠標(biāo)反應(yīng)時(shí)出現(xiàn)并且浮在所有的內(nèi)容之上。我們要知道,這確實(shí)是件讓人頭疼的事,因?yàn)槲覀兩厦嬉娮R到了,子級在顯示的時(shí)候都被壓在了下一個父級標(biāo)簽的下面。下面我們來實(shí)現(xiàn)一下這個鼠標(biāo)反應(yīng)的定位效果:
我們通過鏈接的鼠標(biāo)事件來完成這個顯示隱藏效果:
[ 可先修改部分代碼 再運(yùn)行查看效果 ]
我們設(shè)定了a為position:relative;這樣他的子級就會根據(jù)父級的左上角為坐標(biāo)原點(diǎn)進(jìn)行定位了。然后我們設(shè)定span的具體外形以及定位屬性,然后把他隱藏了。我們再通過A的偽類:hover使得span被激活。我們看一下結(jié)果,我們會發(fā)現(xiàn),所有應(yīng)該在上面的現(xiàn)在全在下面了。那我們怎么解決這個難題呢,其實(shí)以CSS想強(qiáng)行突破是不太可能,所以我們反過來想,能不能讓這個沒有被觸發(fā)的父級標(biāo)簽沒有position:relative;屬性,而只是觸發(fā)的時(shí)候才有級這個父級賦上這樣的值?其實(shí)想到這里基本上已經(jīng)可以解決所有的問題了:
[ 可先修改部分代碼 再運(yùn)行查看效果 ]
我們只要針對a:hover來設(shè)定其屬性為position:relative;就可以了,這樣只有在鼠標(biāo)觸發(fā)的時(shí)候A才會被賦于一個相對定位的屬性。這樣就完成可以解決被其它父級標(biāo)簽所擋的尷尬了。
當(dāng)然假如不介意IE5這樣的瀏覽器我們還可以把代碼再做簡化:
CSS可以改成這樣:
[ 可先修改部分代碼 再運(yùn)行查看效果 ]
原始閱讀:http://andymao.com/andy/post/67.html
示例代碼 [hl5o.cn]
<ul>
<li>第一塊</li>
<li><span>第二塊</span></li>
<li>第三塊</li>
<li>第四塊</li>
<li>第五塊</li>
</ul>
<li>第一塊</li>
<li><span>第二塊</span></li>
<li>第三塊</li>
<li>第四塊</li>
<li>第五塊</li>
</ul>
假如我我們設(shè)定LI為position:relative;設(shè)置span為position:absolute;那么我們會發(fā)現(xiàn)無論SPAN的z-index值設(shè)置得再高都將永遠(yuǎn)在后面父級的下面。
示例代碼 [hl5o.cn]
*{margin:0; padding:0; list-style:none;}
li {width:100px; height:100px; margin:0 5px 0 0; background:#000; float:left; position:relative; z-index:1;}
li span {width:200px; height:200px; background:#c00; position:absolute; top:0; left:100px; z-index:1000;}
li {width:100px; height:100px; margin:0 5px 0 0; background:#000; float:left; position:relative; z-index:1;}
li span {width:200px; height:200px; background:#c00; position:absolute; top:0; left:100px; z-index:1000;}
代碼調(diào)試框 [hl5o.cn]
[ 可先修改部分代碼 再運(yùn)行查看效果 ]
試一下很輕易發(fā)現(xiàn)我們的子級,z-index的值達(dá)到了1000的被設(shè)定了position:absolut;子級都被檔在了父級的下面。我想了很久,我覺得其根本問題是:設(shè)置同樣的position:relative/absolute;同級標(biāo)簽之間的等級是無法用z-index超越的。我們上面的例子中的第一個LI的等級永遠(yuǎn)都要小于后一個LI的等級,所以我們在LI里的子級身上設(shè)置了position:absolute;,給了非常高的z-index值。
也許你會這樣來想:只要針對有span的LI設(shè)置position:relative;不就好了嗎?非常正確。當(dāng)其它的LI都不設(shè)置position:relative;那么我們需要的那個子級就可以浮在所有的內(nèi)容之上。但是假如實(shí)際上,所有的LI中都要有span,并且屬性都需要一樣怎么辦?當(dāng)然我們不大會需要有這樣的效果。但是我們需要有這樣的效果:子級全部是隱藏的,當(dāng)有鼠標(biāo)反應(yīng)時(shí)出現(xiàn)并且浮在所有的內(nèi)容之上。我們要知道,這確實(shí)是件讓人頭疼的事,因?yàn)槲覀兩厦嬉娮R到了,子級在顯示的時(shí)候都被壓在了下一個父級標(biāo)簽的下面。下面我們來實(shí)現(xiàn)一下這個鼠標(biāo)反應(yīng)的定位效果:
示例代碼 [hl5o.cn]
<ul>
<li><a href="" title=""><span>第一塊</span></a></li>
<li><a href="" title=""><span>第二塊</span></a></li>
<li><a href="" title=""><span>第三塊</span></a></li>
<li><a href="" title=""><span>第四塊</span></a></li>
<li><a href="" title=""><span>第五塊</span></a></li>
</ul>
<li><a href="" title=""><span>第一塊</span></a></li>
<li><a href="" title=""><span>第二塊</span></a></li>
<li><a href="" title=""><span>第三塊</span></a></li>
<li><a href="" title=""><span>第四塊</span></a></li>
<li><a href="" title=""><span>第五塊</span></a></li>
</ul>
我們通過鏈接的鼠標(biāo)事件來完成這個顯示隱藏效果:
示例代碼 [hl5o.cn]
*{margin:0; padding:0; list-style:none;}
li {height:100px; margin:0 5px 0 0; float:left; width:100px;}
li a {position:relative; z-index:1; display:block; height:100px; width:100px; background:#000;}
li span {width:200px; height:200px; background:#c00; position:absolute; top:0; left:100px; z-index:1000; display:none;}
li a:hover span {display:block;}
li {height:100px; margin:0 5px 0 0; float:left; width:100px;}
li a {position:relative; z-index:1; display:block; height:100px; width:100px; background:#000;}
li span {width:200px; height:200px; background:#c00; position:absolute; top:0; left:100px; z-index:1000; display:none;}
li a:hover span {display:block;}
代碼調(diào)試框 [hl5o.cn]
[ 可先修改部分代碼 再運(yùn)行查看效果 ]
我們設(shè)定了a為position:relative;這樣他的子級就會根據(jù)父級的左上角為坐標(biāo)原點(diǎn)進(jìn)行定位了。然后我們設(shè)定span的具體外形以及定位屬性,然后把他隱藏了。我們再通過A的偽類:hover使得span被激活。我們看一下結(jié)果,我們會發(fā)現(xiàn),所有應(yīng)該在上面的現(xiàn)在全在下面了。那我們怎么解決這個難題呢,其實(shí)以CSS想強(qiáng)行突破是不太可能,所以我們反過來想,能不能讓這個沒有被觸發(fā)的父級標(biāo)簽沒有position:relative;屬性,而只是觸發(fā)的時(shí)候才有級這個父級賦上這樣的值?其實(shí)想到這里基本上已經(jīng)可以解決所有的問題了:
示例代碼 [hl5o.cn]
*{margin:0; padding:0; list-style:none;}
li {height:100px; margin:0 5px 0 0; float:left; width:100px;}
li a {display:block; height:100px; width:100px; background:#000;}
li a:hover {position:relative; z-index:1; }
li span {width:200px; height:200px; background:#c00; position:absolute; top:0; left:100px; z-index:1000; display:none;}
li a:hover span {display:block;}
li {height:100px; margin:0 5px 0 0; float:left; width:100px;}
li a {display:block; height:100px; width:100px; background:#000;}
li a:hover {position:relative; z-index:1; }
li span {width:200px; height:200px; background:#c00; position:absolute; top:0; left:100px; z-index:1000; display:none;}
li a:hover span {display:block;}
代碼調(diào)試框 [hl5o.cn]
[ 可先修改部分代碼 再運(yùn)行查看效果 ]
我們只要針對a:hover來設(shè)定其屬性為position:relative;就可以了,這樣只有在鼠標(biāo)觸發(fā)的時(shí)候A才會被賦于一個相對定位的屬性。這樣就完成可以解決被其它父級標(biāo)簽所擋的尷尬了。
當(dāng)然假如不介意IE5這樣的瀏覽器我們還可以把代碼再做簡化:
示例代碼 [hl5o.cn]
<ul>
<li><span>第一塊</span></li>
<li><span>第二塊</span></li>
<li><span>第三塊</span></li>
<li><span>第四塊</span></li>
<li><span>第五塊</span></li>
</ul>
<li><span>第一塊</span></li>
<li><span>第二塊</span></li>
<li><span>第三塊</span></li>
<li><span>第四塊</span></li>
<li><span>第五塊</span></li>
</ul>
CSS可以改成這樣:
示例代碼 [hl5o.cn]
*{margin:0; padding:0; list-style:none;}
li {height:100px; margin:0 5px 0 0; float:left; width:100px; background:#000;}
li:hover {position:relative; z-index:1;}
li span {width:200px; height:200px; background:#c00; position:absolute; top:0; left:100px; z-index:1000; display:none;}
li:hover span {display:block;}
li {height:100px; margin:0 5px 0 0; float:left; width:100px; background:#000;}
li:hover {position:relative; z-index:1;}
li span {width:200px; height:200px; background:#c00; position:absolute; top:0; left:100px; z-index:1000; display:none;}
li:hover span {display:block;}
代碼調(diào)試框 [hl5o.cn]
[ 可先修改部分代碼 再運(yùn)行查看效果 ]
原始閱讀:http://andymao.com/andy/post/67.html
相關(guān)Div+CSS教程:
- DIV+CSS設(shè)計(jì)的誤區(qū)
- CSS基礎(chǔ):常用CSS英文字體介紹
- IE6和IE7中border邊框斷線現(xiàn)象
- border:none;與border:0;的有什么不同?
- div+css下js對聯(lián)廣告不隨屏幕滾動的解決方法
- HTML元素的ID和Name屬性的區(qū)別
- divcss教程:深入了解css的行高Line Height屬性
- CSS文檔流,塊級元素和內(nèi)聯(lián)元素
- 5個你該知道的CSS3新技術(shù)
- 用正則表達(dá)式替換a標(biāo)記href值
- 30個優(yōu)秀的CSS導(dǎo)航和按鈕設(shè)計(jì)教程
- css中px和em有什么區(qū)別
Div+CSS教程Rss訂閱Div+Css教程搜索
Div+CSS教程推薦
猜你也喜歡看這些
- DIV CSS布局實(shí)例:半透明陰影效果的實(shí)現(xiàn)
- DIV CSS布局入門示例(四)頁面頂部列表
- 用CSS打造評分星級效果的一個實(shí)例
- 用css網(wǎng)站布局之十步實(shí)錄!(十)
- CSS布局教程:如何用CSS構(gòu)建圖片、文字混排的產(chǎn)品展示?
- DivCSS布局關(guān)于分辨率與100%自適應(yīng)問題的探討!
- Web標(biāo)準(zhǔn)實(shí)戰(zhàn)CSS網(wǎng)頁布局豆瓣首頁
- CSS去除表格td默認(rèn)間距及制作1px細(xì)線表格
- 實(shí)現(xiàn)三列布局相同高度的解決辦法
- css javascript圖片自動同比例縮小并且實(shí)現(xiàn)垂直居中
- 相關(guān)鏈接:
- 教程說明:
Div+CSS教程-position:relativeabsolute無法沖破
。