Css兼容性

一、ie6最小盒子問(wèn)題

第一,IE6,不支持小于12px的盒子,任何小于12px的盒子,在IE6中看都大

解決辦法很簡(jiǎn)單,就是將盒子的字號(hào),設(shè)置?。ㄐ∮诤凶拥母撸?,比如0px。
height: 4px; _font-size: 0px;

我們現(xiàn)在介紹一下瀏覽器hack。hack就是“黑客”,就是使用瀏覽器提供的后門,針對(duì)某一種瀏覽器做兼容。
IE6留了一個(gè)后門,就是只要給css屬性之前,加上下劃線,這個(gè)屬性就是IE6認(rèn)識(shí)的專有屬性


二、清除浮動(dòng)的方法

IE6不支持用overflow:hidden;來(lái)清除浮動(dòng)的

解決辦法,以毒攻毒。追加一條
完整寫法:
overflow: hidden; _zoom:1;


三、關(guān)于margin的IE6兼容問(wèn)題(雙邊距)

IE6雙倍margin bug
問(wèn)題:當(dāng)出現(xiàn)連續(xù)浮動(dòng)的元素,攜帶和浮動(dòng)方向相同的margin時(shí),隊(duì)首的元素,會(huì)雙倍marign。
1 <ul> 2 <li></li> 3 <li></li> 4 <li></li> 5 </ul>

11.png

解決方案:
1.使浮動(dòng)的方向和margin的方向,相反。所以,你就會(huì)發(fā)現(xiàn),我們特別喜歡,浮動(dòng)的方向和margin的方向相反。并且,前端開(kāi)發(fā)工程師,把這個(gè)當(dāng)做習(xí)慣了。
float: left; margin-right: 40px;
2.使用hack(沒(méi)必要,別慣著這個(gè)IE6)單獨(dú)給隊(duì)首的元素,寫一個(gè)一半的margin
` <li class="no1"></li>

ul li.no1{
_margin-left:20px;3 }

`


四、IE6的3px bug

2.png

解決辦法:
不用管,因?yàn)?strong>根本就不允許用兒子踹父親。所以,如果你出現(xiàn)了3px bug,說(shuō)明你的代碼不標(biāo)準(zhǔn)(給父親padding代替兒子margin)


五、font屬性

網(wǎng)頁(yè)中不是所有字體都能用哦,因?yàn)檫@個(gè)字體要看用戶的電腦里面裝沒(méi)裝
頁(yè)面中,中文我們只使用: 微軟雅黑、宋體、黑體。 如果頁(yè)面中
英語(yǔ):Arial 、 Times New Roman
需要其他的字體,那么需要切圖。

為了防止用戶電腦里面,沒(méi)有微軟雅黑這個(gè)字體。就要用英語(yǔ)的逗號(hào),隔開(kāi)備選字體,就是說(shuō)如果用戶電腦里面,沒(méi)有安裝微軟雅黑字體,那么就是宋體:
font-family: "微軟雅黑","宋體";
備選字體可以有無(wú)數(shù)個(gè),用逗號(hào)隔開(kāi)。

我們要將英語(yǔ)字體,放在最前面,這樣所有的中文,就不能匹配英語(yǔ)字體,就自動(dòng)的變?yōu)楹竺娴闹形淖煮w:
font-family: "Times New Roman","微軟雅黑","宋體";

行高可以用百分比,表示字號(hào)的百分之多少。一般來(lái)說(shuō),都是大于100%的,因?yàn)樾懈咭欢ㄒ笥谧痔?hào)。


六、a鏈接的偽類樣式

偽類

也就是說(shuō),同一個(gè)標(biāo)簽,根據(jù)用戶的某種狀態(tài)不同,有不同的樣式。這就叫做“偽類”。
類就是工程師加的,比如div屬于box類,很明確,就是屬于box類。但是a屬于什么類?不明確。因?yàn)橐从脩粲袥](méi)有點(diǎn)擊、有沒(méi)有觸碰。所以,就叫做“偽類”。
偽類用冒號(hào)來(lái)表示。

a標(biāo)簽有4種偽類,要求背誦
:link 表示, 用戶沒(méi)有點(diǎn)擊過(guò)這個(gè)鏈接的樣式。 是英語(yǔ)“鏈接”的意思。 :visited 表示, 用戶訪問(wèn)過(guò)了這個(gè)鏈接的樣式。 是英語(yǔ)“訪問(wèn)過(guò)的”的意思。 :hover 表示, 用戶鼠標(biāo)懸停的時(shí)候鏈接的樣式。 是英語(yǔ)“懸?!钡囊馑肌?:active 表示, 用戶用鼠標(biāo)點(diǎn)擊這個(gè)鏈接,但是不松手,此刻的樣式。 是英語(yǔ)“激活”的意思。

33.png

記住,這四種狀態(tài),在css中,必須按照固定的順序?qū)懀?br> a:link 、a:visited 、a:hover 、a:active
如果不按照順序,那么將失效。“愛(ài)恨準(zhǔn)則”love hate。必須先愛(ài),后恨。

記住,所有的a在設(shè)置了text/font后就不繼承text、font這些東西。因?yàn)閍自己有一個(gè)偽類的權(quán)重。

最標(biāo)準(zhǔn)的,就是把link、visited、hover都要寫。但是前端開(kāi)發(fā)工程師在大量的實(shí)踐中,發(fā)現(xiàn)不寫link、visited瀏覽器也挺兼容(原因是給a設(shè)置了顏色字體大小等,link和visited就顯示了默認(rèn)的a的樣式)。所以這些“老油條”們,就把a(bǔ)標(biāo)簽簡(jiǎn)化了

a:link、a:visited都是可以省略的,簡(jiǎn)寫在a標(biāo)簽里面。也就是說(shuō),a標(biāo)簽涵蓋了link、visited的狀態(tài)。 1 .nav ul li a{ 2 display: block; 3 width: 120px; 4 height: 50px; 5 text-decoration: none; 6 background-color: purple; 7 color:white; 8 } 9 .nav ul li a:hover{ 10 background-color: orange; 11 } 12 .nav ul li a:visited{ 13 color:red; 14 }


七 IE56 中盒子模型的問(wèn)題

問(wèn)題:在IE56 中盒子模型的寬度(width)的計(jì)算是:border+padding+contentWidth的。與box-sizing:border-box類似。
而其他瀏覽器盒子模型默認(rèn)是:content-box(也就是說(shuō)你給一個(gè)盒子width是指的是內(nèi)容的寬,盒子實(shí)際的寬是width+padding+border)

上下外邊距合并問(wèn)題

外邊距合并指的是,當(dāng)兩個(gè)垂直外邊距相遇時(shí),它們將形成一個(gè)外邊距。
合并后的外邊距的高度等于兩個(gè)發(fā)生合并的外邊距的高度中的較大者。

只有標(biāo)準(zhǔn)文檔流中塊框的垂直外邊距才會(huì)發(fā)生外邊距合并。行內(nèi)元素、浮動(dòng)元素或行內(nèi)塊元素或絕對(duì)定位之間的外邊距不會(huì)合并

當(dāng)一個(gè)元素出現(xiàn)在另一個(gè)元素上面時(shí),第一個(gè)元素的下外邊距與第二個(gè)元素的上外邊距會(huì)發(fā)生合并。請(qǐng)看下圖:

CSS 外邊距合并實(shí)例 1

當(dāng)一個(gè)元素包含在另一個(gè)元素中時(shí)(假設(shè)沒(méi)有內(nèi)邊距或邊框把外邊距分隔開(kāi)),它們的上和/或下外邊距也會(huì)發(fā)生合并。請(qǐng)看下圖:
CSS 外邊距合并實(shí)例 2

盡管看上去有些奇怪,但是外邊距甚至可以與自身發(fā)生合并。
假設(shè)有一個(gè)空元素,它有外邊距,但是沒(méi)有邊框或填充。在這種情況下,上外邊距與下外邊距就碰到了一起,它們會(huì)發(fā)生合并:
CSS 外邊距合并實(shí)例 3

8.IE5中margin:0 auto;失效

在IE5中對(duì)塊元素存在一個(gè)外邊距處理BUG。塊元素有時(shí)會(huì)被視作行內(nèi)元素。所以margin:0 auto;失效。

兼容ie5的做法:
要居中的元素設(shè)置margin:0 auto;
在元素的父元素或者給該居中元素包裹一層div,給這個(gè)div或者父元素設(shè)置:text-align:center;

IE678不支持opacity屬性

兼容方法:

opacity:1.0; filter:alpha(opacity=100); /* For IE8 and earlier */

orient/strip%7CimageView2/2/w/1240)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,152評(píng)論 1 92
  • 1.CSS基本概念 1.1 CSS的定義 CSS(Cascading Style Sheets)層疊樣式表,主要用...
    寥寥十一閱讀 2,059評(píng)論 0 6
  • CSS對(duì)瀏覽器的兼容性有時(shí)讓人很頭疼,或許當(dāng)你了解當(dāng)中的技巧跟原理,就會(huì)覺(jué)得也不是難事,從網(wǎng)上收集了IE7,6與F...
    年輕人多學(xué)點(diǎn)閱讀 410評(píng)論 0 7
  • ?前端面試題匯總 一、HTML和CSS 21 你做的頁(yè)面在哪些流覽器測(cè)試過(guò)?這些瀏覽器的內(nèi)核分別是什么? ...
    Simon_s閱讀 2,371評(píng)論 0 8
  • 驚醒篇·被殺死的悠哉 2007年,第一次來(lái)深圳旅游,第一次走進(jìn)大都市,第一次知道原來(lái)坐個(gè)公交都需要檢查身份證的。那...
    閑仁閱讀 299評(píng)論 0 0

友情鏈接更多精彩內(nèi)容