1.CSS認識 在談論CSS的概念之前,我們先說一說web標準的目的——其在於創建一個統一的用於web表現層的技術標準,以便通過不同瀏覽器或終端設備向最終用戶展示信息內容。一個網頁的呈現是由三部分組成:結構(Structure)、表現(Presentation)和行為(Behavior)。 而三大部 ...
1.CSS認識
在談論CSS的概念之前,我們先說一說web標準的目的——其在於創建一個統一的用於web表現層的技術標準,以便通過不同瀏覽器或終端設備向最終用戶展示信息內容。一個網頁的呈現是由三部分組成:結構(Structure)、表現(Presentation)和行為(Behavior)。
而三大部分又是由html、css、js來編寫組成的:
結構 |
HTML |
樣式 |
CSS |
行為 |
JS |
1.1 CSS的概念及作用
CSS是(Cascading Style Sheets)層疊樣式表的縮寫 ,簡稱樣式表。
網頁設計者使用CSS可以定義元素的樣式,包括字體,顏色及其它的高級樣式。
採用CSS樣式的優點:
1. 提高頁面瀏覽速度。 使用CSS方法,比傳統的web設計方法至少節約50%以上的大小。
2. 縮短改版時間,將表現與內容相分離。 只要簡單的修改幾個CSS文件就可以重新設計一個有成千上萬個網頁。
3.降低網站流量的費用。帶寬要求降低(代碼更簡潔),成本更低
4.聯想容易被搜尋引擎搜索到。 提高網站在百度或google中的排名
5.內容能被更廣泛的設備所訪問。包括屏幕閱讀機,手持設備等。
1.2 CSS的三種基本寫法
語法簡單說明如下:
單個樣式: 樣式屬性名:樣式屬性值 ; 比如 color:red; |
多個樣式: 樣式屬性名:樣式屬性值 ; 樣式屬性名:樣式屬性值 ; 比如 color:red;font-size:120px; |
註意:
1.屬性值不需要使用引號括起來,除非屬性值是由多個單片語成,如:font-family: "sans serif";
2.有的屬性可以指定多個屬性值,多個屬性值間以“,”隔開;
3.當定義多個值時,瀏覽器按照從前向後順序選擇屬性值。如果第1個值有效,則嘗試使用,如果第1個無效,則使用第2個,依次類推。
①寫法一:在標簽中的style屬性中直接寫樣式
1 <!-- 寫法一 --> 2 <div style="color: red;font-weight: bold;font-style: italic;font-family:楷體;">疊層樣式表</div>
②寫法二:在style標簽內書寫樣式,標簽可以放在頁面的任何位置;推薦寫在head、body中
1 <head> 2 <meta charset="UTF-8"> 3 <title>Insert title here</title> 4 <!--div選擇器 寫法二--> 5 <style type="text/css"> 6 div { 7 color: red; 8 font-weight: bold; 9 font-style: italic; 10 font-family:楷體; 11 } 12 </style> 13 </head> 14 <body> 15 <div>疊層樣式表</div> 16 </body>
③寫法三:外部引入樣式,實際項目中應用最多,使用link標簽進行.css文件外部引用
1 <head> 2 <meta charset="UTF-8"> 3 <title>Insert title here</title> 4 <!-- link中必須要有rel和href兩個屬性 寫法三 --> 5 <link rel="stylesheet" href="./css/02-css.css"> 6 </head> 7 <body> 8 <!-- 寫法三:外部引入樣式,實際項目中應用最多,使用link標簽進行.css文件外部引用--> 9 <div>疊層樣式表</div> 10 </body>
.css文件中寫入選擇器對應的樣式列表,如下:
1 @CHARSET "UTF-8"; 2 div { 3 color: red; 4 font-weight: bold; 5 font-style: italic; 6 font-family:楷體; 7 }
2.CSS選擇器
2.1基本選擇器
CSS基本選擇器比較簡單,主要分為:通用選擇器、標簽選擇器、類選擇器、ID選擇器四大類。直接上代碼看一下就懂了:
1 <head> 2 <meta charset="UTF-8"> 3 <title>Insert title here</title> 4 <style type="text/css"> 5 /* 1.通用選擇器 6 *{ 7 color: red; 8 font-weight: bold; 9 font-style: italic; 10 font-family:楷體; 11 } */ 12 /* 2.標簽選擇器 13 span{ 14 color: red; 15 font-weight: bold; 16 font-style: italic; 17 font-family:楷體; 18 } */ 19 /* 3.類選擇器 20 .spanstyle{ 21 color: red; 22 font-weight: bold; 23 font-style: italic; 24 font-family:楷體; 25 } */ 26 /* 4.ID選擇器 27 #id1{ 28 color: red; 29 font-weight: bold; 30 font-style: italic; 31 font-family:楷體; 32 } */ 33 </style> 34 </head> 35 <body> 36 <!-- 選擇器:選擇器名{樣式...} 37 1.通用選擇器:*{樣式};找到所有標簽,渲染速度不高; 38 2.標簽選擇器:標簽名{樣式}; 39 3.類選擇器:.類名{樣式},選擇器名是class屬性的值,class屬性值可以有多個相同 40 4.ID選擇器:#ID屬性值{樣式},ID取值推薦是唯一的,不唯一都會渲染效果、不報錯(但實際項目中必須唯一)--> 41 <div>div樣式</div> 42 <span class="spanstyle">span樣式</span> 43 <a id="id1">a超鏈接樣式</a> 44 </body>
2.2其他選擇器
CSS其他選擇器主要有:多元素選擇器、後代選擇器、子元素選擇器、相鄰元素選擇器、屬性選擇器這五大類,具體還是看代碼:
1 <head> 2 <meta charset="UTF-8"> 3 <title>Insert title here</title> 4 <style type="text/css"> 5 /*1.多元素選擇器 6 div,span,a{ 7 color: red; 8 font-weight: bold; 9 font-style: italic; 10 font-family:楷體; 11 } */ 12 /*2.後代選擇器 13 #intro p{ 14 color: red; 15 font-weight: bold; 16 font-style: italic; 17 font-family:楷體; 18 }*/ 19 /*3.子元素選擇器 20 #intro > p > span { 21 color: red; 22 font-weight: bold; 23 font-style: italic; 24 font-family:楷體; 25 }*/ 26 /*4.相鄰元素選擇器 27 span + p { 28 color: red; 29 font-weight: bold; 30 font-style: italic; 31 font-family:楷體; 32 }*/ 33 /*5.屬性選擇器 34 a[target]{ 35 color: red; 36 font-weight: bold; 37 font-style: italic; 38 font-family:楷體; 39 } 40 a[target=_blank]{ 41 color: red; 42 font-weight: bold; 43 font-style: italic; 44 font-family:楷體; 45 } */ 46 </style> 47 </head> 48 <body> 49 <!-- 選擇器:其他選擇器 50 1.多元素選擇器:多個標簽共用一個樣式,寫法:標簽名1,標簽名2,標簽名n{樣式} 51 2.後代選擇器:匹配前面的大類選擇器(包含)裡面的選擇器,渲染後代樣式;選擇器為兩種(大/小),中間用空格 52 3.子元素選擇器:選擇器名稱之間用>符號,和後代選擇器作用類似,但支持多級下的子元素渲染,比後代選擇器定位更精確 53 4.相鄰元素選擇器:適用於兩個同級別元素之間,使用+號連接,會渲染+號之後的那個元素樣式 54 5.屬性選擇器 :匹配所有具有attr屬性或匹配所有attr屬性,且attr屬性值為val的元素渲染--> 55 <div>div樣式</div> 56 <span class="spanstyle">span樣式</span> 57 <p>p1標簽樣式</p> 58 <a id="id1">a超鏈接樣式</a> 59 <div id="intro"> 60 <p> 61 我是大p<br> 62 <span>我是大p裡面的span</span> 63 </p> 64 <p>我是小p</p> 65 </div> 66 <span class="spanstyle">span樣式</span> 67 <p>p2標簽樣式</p> 68 <a href="http://www.baidu.com" target="_blank">baidu.com</a><br> 69 <a href="http://www.taobao.com" target="_top">taobao.com</a> 70 </body>
另外獨立來說一說偽類選擇器,CSS偽類選擇器主要用於某些選擇器添加特殊的效果。主要在支持CSS的瀏覽器上對鏈接的不同狀態以不同的方式顯示。這些狀態包括:活動狀態(active),已被訪問狀態(visited),未被訪問狀態(link),和滑鼠懸停狀態(hover)。
1 a:link {color: #FF0000} /* 未訪問的鏈接 */ 2 a:visited {color: #00FF00} /* 已訪問的鏈接 */ 3 a:hover {color: #FF00FF} /* 滑鼠移動到鏈接上 */ 4 a:active {color: #0000FF} /* 選定的鏈接 */
提示:在 CSS 定義中,a:hover 必須被置於 a:link 和 a:visited 之後,才是有效的。
提示:在 CSS 定義中,a:active 必須被置於 a:hover 之後,才是有效的。
提示:偽類名稱對大小寫不敏感。
下麵以一個a:hover的例子來解釋一下偽類選擇器的作用:
1 <head> 2 <meta charset="UTF-8"> 3 <title>Insert title here</title> 4 <style type="text/css"> 5 /*將所有的a標簽的狀態都修改成下麵這樣*/ 6 a{ 7 color:black; 8 text-decoration: none; /*不顯示下劃線*/ 9 } 10 /*當滑鼠移上來的狀態我們進行單獨的修改*/ 11 a:hover{ 12 color:red; 13 text-decoration: underline; 14 font-size:30px; 15 } 16 </style> 17 </head> 18 <body> 19 <!-- 偽類選擇器,主要有四個大的屬性: 20 a:link 未訪問的鏈接 21 a:hover 滑鼠移動到鏈接上 22 a:active 選定的鏈接 23 a:visited 已訪問的鏈接 24 --> 25 <a href="www.baidu.com">百度網址</a> 26 </body>
顯示效果如下:
更多CSS偽類知識可以參考:http://www.w3school.com.cn/css/css_pseudo_classes.asp
3. CSS的優先順序
CSS樣式是有優先順序的,具體的樣式優先順序(渲染順序)如下:
!important > 行內樣式 > id選擇器 > 類選擇器 > 標簽選擇器,在選擇器優先順序(先看優先順序)相同的情況下,參照就近原則,具體示例如下代碼:
1 <head> 2 <meta charset="UTF-8"> 3 <title>Insert title here</title> 4 <!-- 樣式優先順序:!important > 行內樣式 > id選擇器 > 類選擇器 > 標簽選擇器 5 選擇器優先順序相同,則是就近原則渲染,即渲染先後 --> 6 <style type="text/css"> 7 /* div{ 8 color:red !important; 9 } */ 10 /* #divId{ 11 color:green; 12 } */ 13 .divClass{ 14 color: yellow; 15 } 16 div{ 17 color: orange; 18 } 19 div{ 20 color:black; 21 } 22 </style> 23 </head> 24 <body> 25 <div id="divId" class="divClass" style="color: blue;">我被渲染了</div> 26 </body>
4.CSS的繼承性
HTML文檔以樹形結構進行組織,各元素之間是一種層次關係,這種層次關係同樣反映在樣式表的應用中。具有層次關係的元素之間,內層元素將繼承外層元素的樣式,多個外層元素中定義的樣式將疊加到內層元素。
HTML中,<body>是其他元素的容器,是其他元素的最外層元素,所以<body>元素中定義的樣式將影響其他所有元素的顯示格式。
具體示例如下:
1 <head> 2 <meta charset="UTF-8"> 3 <title>Insert title here</title> 4 <!-- 繼承性:具有層次關係的元素之間,內層元素將繼承外層元素的樣式,多個外層元素中定義的樣式將疊加到內層元素 --> 5 <style type="text/css"> 6 .divclass{ 7 color: blue; 8 border-width:1px; 9 border-style:solid; 10 border-color:red; 11 } 12 </style> 13 </head> 14 <body> 15 <!-- 16 border屬性的兩種寫法: 17 第一種寫法: border:border-width border-style border-color 18 第二種寫法:border-width:blue; 19 border-style:solid; 20 border-color:red;--> 21 <div style="color: blue;border: 1px solid red"> 22 <p>字體變紅</p> 23 </div> 24 <div class="divclass"> 25 <p>字體變紅</p> 26 </div> 27 </body>
具有繼承的CSS屬性:
說明 |
對應屬性 |
文本相關的屬性是繼承的 |
text-align、color、text-indent、font-family、font-size、 font-style、font-weight、 letter-spacing、word-spacing、 text-transform、line-height等
|
列表相關的屬性是繼承的(ul,ol,li) |
list-style、 list-style-image、list-style-position、list-style-type |
5.更多CSS
本文只列出了本人作為web開發時常用的CSS知識入門進行系統總結,不包含CSS3等特定CSS知識,更多文檔及官方知識庫請鏈接w3school官網:
http://www.w3school.com.cn/cssref/index.asp