前端css兼容性與易混淆的點

學習前端的同學注意了!!!
學習過程中遇到什麼問題或者想獲取學習資源的話,歡迎加入前端學習交流羣,羣號碼:328058344

一.常用的骨灰級清除浮動

.clearfix:after {
    content: ".";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
    overflow: hidden;
}

二.唯一使用斜槓/分割的關鍵字

H2{
    font:12px/100% sans-serif;
}

分割的分別是 字體大小 與 行高 ,其他關鍵是用空白符分割。

三.內聯元素相連之間存在間隙

原因:內聯元素是當做字體來處理的,字體之間是有間隔的

解決:

1.多個標籤寫在一行

2.將要閉合標籤的地方與開始標籤的地方重合

3.使用註釋頭尾相連

4.在父級上寫:font-size:0;

5.使用display:block(img是內聯元素)

6.使用letter-spacing屬性

多個Img標籤之間的間隙處理方法

四.佈局

注意父元素的定位方式 是相對 還是靜態 這決定了其內部絕對定位與浮動元素

五.塊級元素包裹內聯元素的時候,總會出現幾像素的差

<!--例子1-->
<div>
<img src="http://images.cnblogs.com/cnblogs_com/zqzjs/757818/o_u=3986871593,628400456_fm=21_gp=0.jpg">
</div>

<!--例子2-->
<ul>
<li>
<img src="http://images.cnblogs.com/cnblogs_com/zqzjs/757818/o_u=3986871593,628400456_fm=21_gp=0.jpg">
</li>
</ul>

<!--例子3-->
<div>
<span>asdasdasd</span>
</div>

解決:設置內聯元素屬性:display:block;

六.css hack(hack有風險,使用需謹慎)

1.html hack

<!--[if lt IE 7 ]><html class="ie6" lang="zh-cn"><![endif]-->
<!--[if IE 7 ]><html class="ie7" lang="zh-cn"><![endif]-->
<!--[if IE 8 ]><html class="ie8" lang="zh-cn"><![endif]-->
<!--[if IE 9 ]><html class="ie9" lang="zh-cn"><![endif]-->

在css中使用:

.ie6 body{
    background-color:red;
}

2.選擇器 hack

* html .test{color:#090;} /* For IE6 */
* + html .test{color:#ff0;} /* For IE7 */

3.屬性hack

color:#fff\0; /*:選擇IE8+和Opera*/
color:#090\9; /* For IE瀏覽器 */
*color:#f00; /* For IE7 */
_color:#ff0; /* For IE6 */

七.box-sizing

1.常規的盒模型: box-sizing : content-box(width == content 不包括padiing border)

2.box-sizing : border-box width == content + padiing + border(相當於低級瀏覽器的怪異模式)

八.圖片格式區別

格式 區別

jpg 有損壓縮

png 無損壓縮,透明圖

gif 動態圖像

webp 支持有損壓縮和無損壓縮的圖片文件,壓縮率極高,且畫面豐富(有瀏覽器兼容性問題)

九.px,em,rem的區別

em,rem 相對大小

em相對父元素font-size

rem相對html根元素的font-size

px 絕對大小

十.不能繼承的屬性

多數邊框類屬性:如邊框,補白,背景等。

十一.css中選擇器的權重

依次變小:id>class>標籤

十二.css顏色的問題

儘量使用16進制的顏色,類似#fff;一位內16進制的顏色是確定的一個色值。

而red這類的顏色值不是確定的,可能會受到用戶代理即user agent stylesheet的影響。

十三.ie6.7不支持box-sizing: border-box;

解決:使用https://github.com/Schepp/box-sizing-polyfill這個墊片

注意:*behavior: url(../resource/js/lab/boxsizing.htc);這個URL是相對於HTML頁面的!!

十四.IE6.7 font與font-family

font起作用了 但是微軟雅黑不起作用

解決:必須要設置font-family:”microsoft yahei”

十五.text-align text-indent vertical-align

1.text-align:作用於塊級元素

如果要使得img居中,使用text-align是不行的,因爲img不是塊狀元素。只需要在img外面套一層div即可。

<div style="text-align:center">
    <img src="XXX.jpg"/>
</div>

2.text-indent:作用於塊級元素

3.vertical-align:作用於行內元素,基於baseline的位置調整

十六.ul中li下面的間隔線用li佈局邊框問題

在IE低版本下有bug,會多出li的寬高

間隔線使用li的border去做

十七.ie8及一下的瀏覽器不支持:befor.:after

使用jquery的一個庫:jquery.pseudo.js 做兼容 兼容低版本瀏覽器的時候

注意:不要使用太高的JQuery版本,會報錯!(我用的是1.10)

十八.IE6不支持position:fixed

.leftTop{
    position:absolute;
    left:expression(eval(document.documentElement.scrollLeft));
    top:expression(eval(document.documentElement.scrollTop));
}

position:fixed; 閃動問題

解決: *html{ background-image:url(about:blank); background-attachment:fixed;

十九.IE6雙倍margin,padding邊距的問題

一旦元素浮動,就會出現雙倍的bug

解決:display:inline

二十.IE6中設置寬高位10px的時候出現的是長方形

這個現象的另一種情況是:在IE6中定義比較小的高度問題。

原因:IE6有默認行高

解決:使用font-size:0;line-height:0;

二十一.IE6無法識別僞對象:first-letter/:first-line

p:first-letter {}

解決;在first-letter與”{“間增加空格

二十二.IE6下忽略!important

div{color:#f00!important;color:#000;}

解決:分開寫,並且將!important的屬性且在前面

div{color:#f00!important;}
div{color:#000;}

學習前端的同學注意了!!!
學習過程中遇到什麼問題或者想獲取學習資源的話,歡迎加入前端學習交流羣,羣號碼:328058344

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章