這篇文章將為大家詳細(xì)講解有關(guān)如何在CSS中使用hover偽類,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
欽北網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)建站自2013年起到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。
CSS偽類:hover 在IE中使用及其BUG
偽類:hover是我們在CSS設(shè)計(jì)中最常運(yùn)用的偽類之一,許多絢麗效果的實(shí)現(xiàn)離不開偽類:hover,比如我們常見的純CSS菜單、相冊效果等等?;蛟S用了這么久的偽類:hover,還有部分朋友還不完全了解hover的規(guī)則:
◆在CSS1中此偽類僅可用于a對象。且對于無href屬性(特性)的a對象,此偽類不發(fā)生作用。
◆在CSS2中此偽類可以應(yīng)用于任何對象。
但目前IE5.5、IE6僅支持CSS1中的:hover,不過新出的IE7是支持CSS2中的:hover。
當(dāng)我們用偽類:hover做某些特殊效果時(shí),依據(jù)CSS2很好完成,但為了現(xiàn)在占據(jù)主流瀏覽器的IE6,我們又不得不做很多工作,比如給添加a元素等來模擬完成最終的效果。
或許這樣講太空洞,請看下面一個常見的觸發(fā)顯示的例子(僅選擇IE6為例講解)。
我們先用CSS2的寫法來實(shí)現(xiàn):
XHTML部分:
ExampleSourceCode
<ul> <li>鼠標(biāo)移過來觸發(fā)我吧!<ahrefahref="#"title="">哈哈,終于被你發(fā)現(xiàn)了!</a></li> </ul>
CSS部分:
ExampleSourceCode
*{margin:0;padding:0;} ul{list-style:none;margin:100px;} li{height:100px;width:100px;background:#000; font-size:12px;color:#fff;position:relative;} lia{display:none;} li:hovera{display:block; text-decoration:none;width:100px;height:100px; background:#c00;position:absolute;top:50px;left:50px;color:#fff;}
◆查看效果:
SourceCodetoRun
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <htmlxmlnshtmlxmlns="http://www.w3.org/1999/xhtml"> <head> <metahttp-equivmetahttp-equiv="Content-Type"content="text/html;charset=gb2312"/> <title>css</title> <styletypestyletype="text/css"> ul{list-style:none;} li{height:100px;width:100px;background:#000; font-size:12px;color:#fff;position:relative;} lia{display:none;} li:hovera{display:block;text-decoration:none;width:100px;height:100px;background:#c00; position:absolute;top:50px;left:50px;color:#fff;} </style> </head> <body> <h3>使用CSS2做出的效果</h3> <ul> <li>鼠標(biāo)移過來觸發(fā)我吧!<ahrefahref="#"title="">哈哈,終于被你發(fā)現(xiàn)了!</a></li> </ul> </body> </html>
[可先修改部分代碼再運(yùn)行查看效果]
◆大家可以測試發(fā)現(xiàn)在FF等對CSS2支持很好的瀏覽器中,可以顯示我們所要達(dá)到的效果,但在IE6中卻無法實(shí)現(xiàn)。
下面讓我們換一種思維,所用CSS1的寫法來看看,這個時(shí)候由于無法支持li元素:hover的使用,我們只好把所有文字包含到a中,對a使用:hover,并且將要顯示隱藏的部分放到span元素中,首先我們對XHTML進(jìn)行部分調(diào)整,調(diào)整如下:
XHTML部分:
ExampleSourceCode
<ul> <li><ahrefahref="#"title="">鼠標(biāo)移過來觸發(fā)我吧!<span>哈哈,終于被你發(fā)現(xiàn)</span></a></li> </ul>
CSS中我們將a的設(shè)置成塊級元素,并使a的大小和寬度和li的相同,并設(shè)置a為相對位置,用a來模擬上例中的li;而用span來模擬上例中的a,設(shè)置span在默認(rèn)情況下隱藏(display:none;),當(dāng)a被觸發(fā)時(shí)(:hover),則span顯示(display:block;)
CSS部分:
ExampleSourceCode
*{margin:0;padding:0;} ul{list-style:none;margin:100px;} li{height:100px;width:100px;background:#000;font-size:12px;} lia{display:block;height:100px;width:100px; position:relative;color:#fff;text-decoration:none;} lispan{display:none;} lia:hoverspan{display:block;width:100px;height:100px; background:#c00;position:absolute;top:50px;left:50px;color:#fff;}
◆查看效果:
SourceCodetoRun
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <htmlxmlnshtmlxmlns="http://www.w3.org/1999/xhtml"> <head> <metahttp-equivmetahttp-equiv="Content-Type"content="text/html;charset=gb2312"/> <title>css</title> <styletypestyletype="text/css"> ul{list-style:none;} li{height:100px;width:100px;background:#000;font-size:12px;} lia{display:block;height:100px;width:100px;position:relative; color:#fff;text-decoration:none;} lispan{display:none;} lia:hoverspan{display:block;width:100px;height:100px;background:#c00; position:absolute;top:50px;left:50px;color:#fff;} </style> </head> <body> <h3>使用CSS1做出的效果(有BUG)</h3> <ul> <li><ahrefahref="#"title="">鼠標(biāo)移過來觸發(fā)我吧!<span>哈哈,終于被你發(fā)現(xiàn)</span></a></li> </ul> </body> </html>
[可先修改部分代碼再運(yùn)行查看效果]
可我們發(fā)現(xiàn)上例中的效果,在IE6中依然無法顯示,難道我們的代碼寫錯了,可檢查來檢查去一點(diǎn)錯誤也沒有(不信你找個高高手問問,他們依然會回答你,這代碼完全正確),難道是標(biāo)準(zhǔn)中的說明是錯的?還是IE6瀏覽器連CSS1也不支持?
那到底是什么問題呢?
不是標(biāo)準(zhǔn)說明的錯,也不是IE瀏覽器不支持CSS1,而是IE瀏覽器自身解析的問題,是IE5.5和IE6中偽類:hover的BUG。
那又該如何解決這個問題呢?
◆這個BUG可以通過在鏈接的屬性中增加某些特殊的CSS屬性聲明來消除。下面我們對上面的第二個例子進(jìn)行實(shí)驗(yàn),究竟哪些屬性可以幫我們來消除這些BUG。
對CSS代碼我們增加:
lia:hover{}
對其屬性我們僅設(shè)定width:100px;發(fā)現(xiàn)在IE6中依舊沒有變化,我們嘗試著更改width的value,比如使其width:99px,奇怪的事情發(fā)生了,在IE6中,隱藏的部分在觸發(fā)的時(shí)候顯示出來了。我們再對lia:hover的屬性僅設(shè)定color來測試(初始值為#fff),更改color值,發(fā)現(xiàn)在IE6下卻也不能觸發(fā)顯示,奇怪,奇怪,真奇怪……是不是依舊是一頭霧水……沒關(guān)系,繼續(xù)往下實(shí)驗(yàn),或許歸類了我們就能發(fā)現(xiàn)規(guī)律了!
我們再用其他屬性進(jìn)行設(shè)置:width,positon,background,text-decoration,font-size,font-weight,font-family,border,float,display,font-style,margin,padding,text-align,overflow,text-transform,text-indent,z-index,vertical-align。
我們發(fā)現(xiàn)除了text-decoration,color,z-index不能觸發(fā)顯示(對于不能觸發(fā)顯示的部分,可以還有某些遺漏的屬性,歡迎朋友補(bǔ)充)外,其他屬性均可以做為消除偽類:hoverBUG的特定屬性。
說明:
1、對于dispaly不可以用本例來測試,可另外寫個更簡單的例子(去除ul/li,a和span中的position)。在實(shí)際應(yīng)用中懌飛不建議改變display值來做為特定屬性消除此BUG,而且在某些例子中此屬性不一定能消除BUG。
2、對于做為特定屬性的border和background中的顏色我們還可用全寫和簡寫來改變,如#fff和#ffffff在消除BUG中解析為2個不同的值。
◆最終效果:
SourceCodetoRun
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <htmlxmlnshtmlxmlns="http://www.w3.org/1999/xhtml"> <head> <metahttp-equivmetahttp-equiv="Content-Type"content="text/html;charset=gb2312"/> <title>css</title> <styletypestyletype="text/css"> ul{list-style:none;} li{height:100px;width:100px;background:#000;font-size:12px;} lia{display:block;height:100px;width:100px; position:relative;color:#fff;text-decoration:none;} lia:hover{background:#ccc;} lispan{display:none;} lia:hoverspan{display:block;width:100px;height:100px; background:#c00;position:absolute;top:50px;left:50px;color:#fff;} </style> </head> <body> <h3>使用CSS1做出的效果(無BUG)</h3> <ul> <li><ahrefahref="#"title="">鼠標(biāo)移過來觸發(fā)我吧!<span>哈哈,終于被你發(fā)現(xiàn)</span></a></li> </ul> </body> </html>
關(guān)于如何在CSS中使用hover偽類就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
文章標(biāo)題:如何在CSS中使用hover偽類
分享鏈接:http://aaarwkj.com/article0/iggdio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、商城網(wǎng)站、App設(shè)計(jì)、面包屑導(dǎo)航、網(wǎng)站收錄、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)