CSS 概述
CSS 介紹
CSS(Cascading Style Sheets)通常稱為 CSS 樣式或層疊樣式表,是一種用來為結構化文檔(如 HTML 文檔或 XML 應用)添加樣式(字體、間距和顏色等)以及版面的布局等外觀顯示樣式的計算機語言,CSS 文件擴展名為 .css。
- 樣式:給 HTML 標簽添加需要顯示的效果。
- 層疊:使用不同的添加方式,給同一個 HTML 標簽添加樣式,最后所有的樣式都疊加到一起,共同作用于該標簽。
CSS 可以使 HTML 頁面更好看,CSS 色系的搭配可以讓用戶更舒服,CSS + DIV 布局更佳靈活,更容易繪制出用戶需要的結構。
CSS 樣式規則
-
CSS 樣式規則需要寫在一個 **style(樣式)**標簽中
-
CSS 樣式規則由兩個主要的部分構成:選擇器,以及一條或多條聲明
-
選擇器通常是需要改變樣式的 HTML 元素
選擇要添加 CSS 樣式的 html 標簽的方式:根據標簽的名稱,標簽的 id 屬性值,標簽的 class 屬性值等方式
-
每條聲明由一個屬性和一個值組成
屬性(property)是希望給標簽設置的樣式屬性(style attribute),例如大小,顏色等。
每個屬性有一個值。屬性和值被冒號分開。
-
-
格式:
<style type="text/css">選擇器{屬性名:屬性值;...屬性名:屬性值;} </style>
CSS 聲明總是以分號 ; 結束,聲明總以大括號 {} 括起來
-
CSS 注釋
注釋是用來解釋代碼,并且可以隨意編輯它,瀏覽器會忽略它。
CSS注釋以 /* 開始, 以 */ 結束,實例如下:
/*這是個注釋*/
-
示例:
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>CSS樣式規則</title><style type="text/css">/*使用標簽選擇器:根據標簽名稱選擇到對應的標簽*/h1{/*給h1標簽添加一個字體顏色*/color: red;}h2,div{/*字體顏色*/color: blue;/*字體大小*/font-size: 50px;}</style> </head> <body><h1>我是一個h1標題標簽</h1><h1>我是一個h1標題標簽</h1><h1>我是一個h1標題標簽</h1><h2>我是一個h2標題標簽</h2><div>我是div標簽</div> </body> </html>
引入 css 樣式的方式
-
方式1:行內樣式:在標簽上直接寫 style 屬性,屬性值就是要設置的樣式
格式:
<標簽 style="屬性名:屬性值;屬性名:屬性值;屬性名:屬性值;..屬性名:屬性值;"></標簽>
作用域:只針對當前的標簽有效
-
方式2:內部(內嵌)樣式:在頁面中創建一個 style 標簽,在標簽中寫 css 的樣式規則
格式:
<style type="text/css">選擇器{屬性名:屬性值;...屬性名:屬性值;} </style>
作用域:在當前頁面中,針對選擇器選擇到的所有標簽都有效
-
方式3:外部(外聯)樣式:把 css 的樣式規則,寫在一個以 .css 結尾的文件中
需要在 html 中使用 link 標簽引入外部的 css 文件使用
格式:
<link href="外部css文件的路徑" type="text/css" rel="stylesheet" />
- href=“外部css文件的路徑” :css 文件一般都放在當前項目的 css 文件夾中,所以一般使用相對路徑
- type=“text/css” :說明引入的文件是文本類型的 css 文件(固定寫法),可省略
- rel=“stylesheet” :stylesheet:樣式表,說明引入的 css 文件,是 html 文件的一個樣式表(固定寫法)
作用域:css 文件可以被多個頁面同時引用,哪個頁面引用的,對哪個頁面中的標簽有效
-
樣式的優先級:行內樣式 > 內部樣式|外部樣式(內部和外部寫在后邊的樣式會覆蓋前邊的樣式)
-
示例:
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>引入css樣式的方式</title> </head> <!--內部(內嵌)樣式--> <style>/*選擇所有的h1標簽*/h1{color: pink;} </style> <!--外部(外聯)樣式--> <link href="css/1.css" rel="stylesheet"/> <body><!--1.行內樣式--><div style="color: red;font-size: 20px">我是一個div</div><div style="color: green">我是一個div</div><div style="color:yellow;">我是一個div</div><!--2.內部(內嵌)樣式--><h1 style="color: gold">我是h1標題標簽</h1><h1>我是h1標題標簽</h1> </body> </html>
1.css文件
h1{color: blue;font-size: 50px; }
CSS 的選擇器
使用何種方式選擇要添加樣式的 html 標簽
基本選擇器(元素、id、class 選擇器)
-
元素(標簽,標記)選擇器:根據元素(標簽,標記)的名稱,選擇對應的元素
格式:
元素(標簽,標記)的名稱{屬性名:屬性值;...}
示例:
<h1></h1> 選擇器: h1{屬性名:屬性值;...} <div></div> 選擇器: div{屬性名:屬性值;...}
-
id 選擇器
id 選擇器可以為標有特定 id 的 HTML 元素指定特定的樣式
需要給元素添加一個 id 屬性,通過 id 的屬性值選擇到元素
格式:
#元素id的屬性值{屬性名:屬性值;...}
示例:
<h1 id="d001"></h1> <div id="d002"></div>選擇器:#d001{屬性名:屬性值;...}
注:
-
html 標簽的 id 屬性不要以數字開頭,數字開頭的 id 在 Mozilla/Firefox 瀏覽器中不起作用
-
不可以給多個 html 元素添加相同的 id 屬性值,id 在頁面中具有唯一性
如果多個元素的 id 屬性值是相同的,JavaScript 可能會出錯
-
-
class(類)選擇器
class 選擇器用于描述一組元素的樣式,class 選擇器有別于 id 選擇器,class 可以在多個元素中使用
需要給元素添加一個 class 屬性,通過 class 的屬性值選擇到元素
格式:
.元素的class屬性值{屬性名:屬性值;...}
示例:
<h1 class="c001"></h1> <div class="c001"></div>選擇器: .c001{屬性名:屬性值;...}
注:
-
**類名的第一個字符不能使用數字!**它無法在 Mozilla 或 Firefox 中起作用。
-
多個 class 選擇器可以使用空格分開
-
可以指定特定的 HTML 元素使用 class
例如:所有的 p 元素使用 class=“center” 讓該元素的文本居中
p.center {text-align:center;}
-
-
案例
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>CSS的選擇器</title> </head><style>/*1.元素(標簽,標記)選擇器*/h1{color: red;}a{color: green;}/*2.id選擇器*/#d001{color: #880088;}/*2.class(類)選擇器*/.c001{color: chocolate;}</style> <body><!--元素(標簽,標記)選擇器--><h1>標題標簽</h1><h1>標題標簽</h1><a href="#">我是一個超鏈接標簽</a><a href="#">我是一個超鏈接標簽</a><!--id選擇器--><div id="d001">我是一個div</div><h2 id="d002">我是一個h2標題標簽</h2><!--class(類)選擇器--><div class="c001">我是一個div</div><h2 class="c001">我是一個h2標題標簽</h2> </body> </html>
擴展選擇器(屬性、包含、偽類選擇器)
-
屬性選擇器:在一個標簽選擇器后面使用中括號標記,是對一組標簽進一步過濾
語法格式:
標簽選擇器[標簽屬性=’標簽屬性值’]{屬性1:屬性值1; 屬性2:屬性值2; 屬性3:屬性值3; }
-
包含選擇器:兩個標簽之間使用空格,給指定父標簽的后代標簽設置樣式,是對一個標簽內部所有后代標簽進一步過濾
格式:
父標簽選擇器 后代標簽選擇器{屬性1:屬性值1; 屬性2:屬性值2; 屬性3:屬性值3; }
-
案例:
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>CSS的擴展選擇器</title><style>/*input{!*背景色*!background-color: green;}*//*給type="text"標簽添加樣式*/input[type='text']{background-color: green;}/*給type="password"標簽添加樣式*/input[type='password']{background-color: pink;}/*2.包含選擇器(子父類選擇器)*//*給div中的div添加樣式*/div div{color: yellow;}#d001 h3{color: aqua;}</style> </head> <body><!--1.屬性選擇器--><input type="text" name="username"/><input type="password" name="password"/><!--2.包含選擇器(子父類選擇器)--><div>我是div</div><div id="d001"><div>我是div中的div</div><h3>我是div中的h3</h3></div> </body> </html>
偽類選擇器
-
偽類選擇器:描述一個元素的特殊狀態
由于狀態的變化是非靜態的,所以元素達到一個特定狀態時,它可能得到一個偽類的樣式;當狀態改變時,它又會失去這個樣式。由此可以看出,它的功能和 class 有些類似,但它是基于文檔之外的抽象,所以叫偽類。
-
常用的偽類選擇器:
-
動態偽類選擇器
- :link :元素被定義了超鏈接但并未被訪問過
- :visited :元素被定義了超鏈接并已被訪問過
- :active :元素被激活
- :hover :鼠標懸停
- :focus :元素獲取焦點
注:在 CSS 定義中,a:hover 必須被置于 a:link 和 a:visited 之后;a:active 必須被置于 a:hover 之后。所以,a 標簽的這四種偽類選擇器的順序為:
a:link ,a:visited,a:hover ,a:active
。必須嚴格按照此規則來設置屬性,否則無效。 -
UI 元素狀態偽類選擇器
- :checked :選中的復選按鈕或者單選按鈕表單元素
- :enabled :所有啟用的表單元素
- :disabled :所有禁用的表單元素
注:UI 元素狀態偽類選擇器主要是針對 Form 表單元素進行操作,最常見的使用方式如設置 "type=“text” 有 enable 和 disabled 兩種狀態,enable 為可寫狀態,disabled 為不可狀態。
-
結構偽類選擇器
- :fisrt-child :父元素的第一個子元素
- :last-child :父元素的最后一個子元素的元素
- :root :元素所在文檔的根元素。在 HTML 文檔中,根元素始終是 html,此時該選擇器與 html 類型選擇器匹配的內容相同
- :nth-child(n) :父元素的第 n 個子元素。其中 n 可以是整數(1,2,3)、關鍵字(even,odd)、也可以是公式(2n+1),而且 n 值起始值為 1,而不是 0。
- :nth-last-child(n) :父元素的倒數第 n 個子元素。此選擇器與 :nth-child(n) 選擇器計算順序剛好相反,但使用方法都是一樣的,其中 :nth-last-child(1) 始終匹配最后一個元素,與 last-child 等同。
- :nth-of-type(n) :父元素內具有指定類型的第 n 個元素
- :nth-last-of-type(n) :父元素內具有指定類型的倒數第 n 個元素
- :first-of-type :父元素內具有指定類型的第一個元素,與 nth-of-type(1) 等同
- :last-of-tye :父元素內具有指定類型的最后一個元素,與 :nth-last-of-type(1) 等同
- :only-child :父元素只包含一個子元素,且該子元素匹配元素
- :only-of-type :選擇父元素只包含一個同類型子元素,且該子元素匹配選擇元素
- :empty :選擇沒有子元素的元素,而且該元素也不包含任何文本節點
注:使用結構偽類選擇器的好處是可以根據元素在文檔中所處的位置,來動態地選擇元素,從而減少 HTML 文檔對 id 或類的依賴,有助于保持代碼干凈整潔。另外需要注意的是,在結構偽類選擇器中,子元素的序號是從 1 開始的。
-
否定偽類選擇器
- E:not(F) :選擇所有除元素 F 外的 E 元素
-
案例:
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>CSS的擴展選擇器</title><style>/*偽類選擇器*/ a:link {color: #FF0000} /* 未訪問的鏈接 */a:visited {color: #00FF00} /* 已訪問的鏈接 */a:hover {color: #FF00FF} /* 鼠標移動到鏈接上 */a:active {color: #0000FF} /* 選定的鏈接 */</style> </head> <body><a href="http://www.itcast.cn" target="_blank">點擊我到傳智</a> </body> </html>
-