CSS基礎(一):開篇

背景php

HTML是一種超文本標記語言,用來定義文檔的結構和內容,例如標題、段落和列表等等,而文檔內容如何渲染、如何展現,這就須要樣式來修飾了。CSS正是能夠與HTML很好地結合。若是將HTML比做水,那麼CSS就是水杯,用怎樣形狀的水杯來裝水,水就顯示不同的形狀。css

 

什麼是CSS?html

CSS 指層疊樣式表 (Cascading Style Sheets),定義如何顯示 HTML 元素,是爲了解決文檔內容與表現分離的問題,一般是統一存儲在樣式表中,使用外部樣式表能夠方便管理,提升工做的效率,具備繼承性和層疊性的特色。瀏覽器

 

CSS繼承性緩存

它是依賴於祖先-後代的關係的。繼承是一種機制,它容許樣式不只能夠應用於某個特定的元素,還能夠應用於它的後代。可是,並非全部的屬性都會自動傳給它的後代,例如邊框Border,邊距Margin,補白Padding等等。網絡

例如定義了body的樣式工具

<!DOCTYPE HTML>
<html>
<head>
<title>開篇一 | CSS繼承</title>
</head>
<style type="text/css">
    body{height:100px;color:red;border: 1px solid #CCC;}
</style>
<body>
<p>
    字體顏色顯示爲紅色,可是沒有邊框
</p>
</body>
</html>

能夠獲得的效果是body有1px的灰色實線邊框,p標籤裏面的字體爲紅色,可是沒有邊框,因此border屬性沒有被繼承。性能

 

CSS層疊性學習

CSS樣式在針對同一元素配置同一屬性時,依據層疊規則(權重)來處理衝突,選擇應用權重高的CSS選擇器所指定的屬性,通常也被描述爲權重高的覆蓋權重低的,所以也稱做層疊。字體

例如定義了樣式

<!DOCTYPE HTML>
<html>
<head>
<title>開篇一 | CSS層疊</title>
</head>
<style type="text/css">
    body{height:100px;border: 1px solid #CCC;}
    .main{color:red;font-size: 18px;}
    .main p{color:#000;font-weight: bold;}
</style>
<body>
<div class="main">
<p>
    字體顏色顯示爲黑色,字號爲加粗18px
</p>
</div>
</body>
</html>

能夠獲得的效果是p標籤裏面的字體爲黑色,字號爲加粗18px,.main選擇器中的color屬性被.main p中的color屬性覆蓋。

實際上由CSS的繼承性和層疊性,是能夠獲得p標籤組合的css樣式爲

p{color:#000;font-size: 18px;font-weight: bold;}

更多關於權重高低請參考

 

CSS代碼規範

1.使用Reset但並不是全局Reset

全局Reset不只僅由於它是緩慢和低效率的方法,並且還會致使一些沒必要要的元素也重置了外邊距和內邊距。

*{ margin:0; padding:0; }

 

2.良好的命名規範

ID和class的命名儘量短,並符合語義。多個單詞的拼接用 '-' 符號連接,儘可能使用小寫字母。

 

3.代碼縮寫

CSS代碼縮寫能夠提升你寫代碼的速度,精簡你的代碼量。

 

li{
    font-family:Arial, Helvetica, sans-serif;
    font-size: 1.2em;
    line-height: 1.4em;
    padding-top:5px;
    padding-bottom:10px;
    padding-left:5px;
}

能夠縮寫成

li{
    font: 1.2em/1.4em Arial, Helvetica, sans-serif;
    padding:5px 0 10px 5px;
}

 

4.利用CSS繼承

若是頁面中父元素的多個子元素使用相同的樣式,那最好把他們相同的樣式定義在其父元素上,讓它們繼承這些CSS樣式。這樣你能夠很好的維護你的代碼,而且還能夠減小代碼量。那麼原本這樣的代碼:

#container li{ font-family:Georgia, serif; }
#container p{ font-family:Georgia, serif; }
#container h1{font-family:Georgia, serif; }

就能夠簡寫成:

#container{ font-family:Georgia, serif; }

 

5.使用多重選擇器

你能夠合併多個CSS選擇器爲一個,若是他們有共同的樣式的話。這樣作不但代碼簡潔且可爲你節省時間和空間。如:

h1{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; }
h2{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; }
h3{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; }

能夠合併爲

h1, h2, h3{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; }

 

6.適當的代碼註釋

代碼註釋可讓別人更容易讀懂你的代碼,且合理的組織代碼註釋,可以使得結構更加清晰。

 

7.給你的CSS代碼排序

若是代碼中的屬性都能按照字母排序,那查找修改的時候就能更加快速。

/*** 樣式屬性按字母排序 ***/
div{
    background-color:#3399cc;
    color:#666;
    font:1.2em/1.4em Arial, Helvetica, sans-serif;
    height:300px;
    margin:10px 5px;
    padding:5px 0 10px 5px;
    width:30%;
    z-index:10;
}

 

8.保持CSS的可讀性

書寫可讀的CSS將會使得更容易查找和修改樣式。

/*** 每一個樣式屬性寫一行 ***/
div{
    background-color:#3399cc;
    color:#666;
    font: 1.2em/1.4em Arial, Helvetica, sans-serif;
    height:300px;
    margin:10px 5px;
    padding:5px 0 10px 5px;
    width:30%;
    z-index:10;
}
 
/*** 全部的樣式屬性寫在同一行 ***/
div{ background-color:#3399cc; color:#666; font: 1.2em/1.4em Arial, Helvetica, sans-serif;  height:300px; margin:10px 5px; padding:5px 0 10px 5px; width:30%; z-index:10; }

 

9.選擇更優的樣式屬性值

CSS中有些屬性採用不一樣的屬性值,雖然達到的效果差很少,當性能上卻存在着差別,如:

區別在於border:0把border設爲0px,雖然在頁面上看不見,但按border默認值理解,瀏覽器依然對border-width/border-color進行了渲染,即已經佔用了內存值。

而border:none把border設爲「none」即沒有,瀏覽器解析「none」時將不做出渲染動做,即不會消耗內存值。因此建議使用border:none;

一樣的,display:none隱藏對象瀏覽器不做渲染,不佔用內存。而visibility:hidden則會。

 

10.<link>代替@import

@import不屬於XHTML標籤,也不是Web標準的一部分,它對於較早期的瀏覽器兼容也不高,而且對於網站的性能有某些負面的影響。因此,請避免使用@import

 

11.使用外部樣式表使用

這個原則始終是一個很好的設計實踐。不單能夠更易於維護修改,更重要的是使用外部文件能夠提升頁面速度,由於CSS文件都能在瀏覽器中產生緩存。內置在HTML文檔中的CSS則會在每次請求中隨HTML文檔從新下載。因此,在實際應用中,沒有必要把CSS代碼內置在HTML文檔中。

 

12.代碼壓縮

當你決定把網站項目部署到網絡上,那你就要考慮對CSS進行壓縮,出去註釋和空格,以使得網頁加載得更快。壓縮您的代碼,能夠採用一些工具,如YUI Compressor 利用它可精簡CSS代碼,減小文件大小,以得到更高的加載速度。

 

13.避免使用css hack

 

14.代碼格式

(1)每一個css屬性聲明後都要使用一個分號,即便是最後的那個。

(2)在緊跟屬性名的冒號後使用一個空格。

(3)每個css選擇器或是屬性聲明都要新起一行。

(4)在每個css規則之間應該空一行。

 

15.若是css屬性的值爲0,則後面不要帶上單位。除非真的是須要。

 

規範參考

 

CSS3.0新特性

目前CSS已經發展到3.0的版本,可是3.0的屬性大多不支持低版本的瀏覽器。

新特性如CSS圓角邊框、陰影、動畫等,後面將會另有系列課程專門學習介紹。

 

 

做者: ForEvErNoME
出處: http://www.cnblogs.com/ForEvErNoME/
歡迎轉載或分享,但請務必聲明文章出處。若是文章對您有幫助,但願你能 推薦關注
相關文章
相關標籤/搜索