CSS 概述
- CSS 指層疊樣式(Cascading Style Sheets)
- 樣式定義如何顯示 HTML 元素
- 樣式通常存儲(chǔ)在樣式表中
- 把樣式添加到 HTML 4.0 中,是為了解決內(nèi)容與表現(xiàn)分離的問(wèn)題
- 外部樣式表可以極大的提高工作效率
- 外部樣式表通常存儲(chǔ)在 CSS 文件中
- 多個(gè)樣式定義可層疊為一
樣式解決了一個(gè)普遍的問(wèn)題
HTML 標(biāo)簽原本被設(shè)計(jì)為用于定義文檔內(nèi)容。通過(guò)使用 <h1>、</p>、<table>等標(biāo)簽,HTML 的初衷是表達(dá) "這是標(biāo)題"、"這是表格"、"這是表格" 之類(lèi)的信息。同時(shí)文檔布局由瀏覽器來(lái)完成,而不使用任何的格式化標(biāo)簽。
由于兩種主要的瀏覽器(Netscape 和 Internet Explorer)不斷地將新的 HTML 標(biāo)簽和屬性(比如字體標(biāo)簽和顏色屬性)添加到 HTML 規(guī)范中,創(chuàng)建文檔內(nèi)容獨(dú)立于文檔表現(xiàn)層的站點(diǎn)變得越來(lái)越困難。
為了解決這個(gè)問(wèn)題,萬(wàn)維網(wǎng)聯(lián)盟(W3C),這個(gè)非營(yíng)利的標(biāo)準(zhǔn)化聯(lián)盟,肩負(fù)起了 HTML 標(biāo)準(zhǔn)化的使命,并在 HTML 4.0 之外創(chuàng)造出了樣式(Style)。
所有的主流瀏覽器均支持層疊樣式表。
樣式表極大地提高工作效率
樣式表定義如何顯示 HTML元素,就像 HTML 3.2的字體標(biāo)簽和顏色屬性所起的作用那樣。樣式通常保存在外部的 .css文件中。通過(guò)僅僅編輯一個(gè)簡(jiǎn)單的CSS 文檔,外部樣式表使你有能力改變站點(diǎn)中所有頁(yè)面的布局和外觀。
由于允許同時(shí)控制多重頁(yè)面的樣式和布局,CSS 可以稱(chēng)得上 WEB 設(shè)計(jì)領(lǐng)域的一個(gè)突破。作為網(wǎng)站開(kāi)發(fā)者,你能夠?yàn)槊總€(gè) HTML 元素定義樣式,并將之應(yīng)用于你希望的任意多的頁(yè)面中。如需進(jìn)行全局的更新,只需簡(jiǎn)單地改變樣式,然后網(wǎng)站中的所有元素均會(huì)自動(dòng)地更新。
多重樣式將層疊為一個(gè)
樣式表允許以多種方式規(guī)定樣式信息。樣式可以規(guī)定在單個(gè)的 HTML 元素中,在 HTML 頁(yè)的頭元素中,或在一個(gè)外部的 CSS 文件中。甚至可以在同一個(gè) HTML 文檔內(nèi)部引用多個(gè)外部樣式表。
層疊次序
當(dāng)同一個(gè) HTML 元素被不止一個(gè)樣式定義時(shí),會(huì)使用哪個(gè)樣式呢?
一般而言,所有的樣式會(huì)根據(jù)下面的規(guī)則層疊于一個(gè)新的虛擬樣式表中,其中數(shù)字 4 擁有最高的優(yōu)先權(quán)。
- 1.瀏覽器缺省設(shè)置
- 2.外部樣式表
- 3.內(nèi)部樣式表(位于 <head> 標(biāo)簽內(nèi)部)
- 4.內(nèi)聯(lián)樣式(在 HTML 元素內(nèi)部)
因此,內(nèi)聯(lián)樣式(在 HTML 元素內(nèi)部)擁有最高的優(yōu)先權(quán),這意味著它將優(yōu)先于以下的樣式聲明:<head> 標(biāo)簽中的樣式聲明,外部樣式表中的樣式聲明,或者瀏覽器中的樣式聲明(缺省值)。
簡(jiǎn)介介紹完了,接下來(lái)進(jìn)入正題了。先介紹樣式選擇器。
選擇器
包含如下幾種:
- 類(lèi)選擇器
- ID選擇器
- 通配符選擇器
- 鏈接偽類(lèi)選擇器
- 結(jié)構(gòu)偽類(lèi)選擇器(css3 才有 )
- 交集選擇器
- 后代選擇器
- 子元素選擇器
- 屬性選擇器
- 偽元素選擇器
下面通過(guò)代碼來(lái)介紹:
/*類(lèi)選擇器 是可以重復(fù)多次使用的,類(lèi)似于姓名*/
.mingren { /*聲明類(lèi)樣式*/
color: orange;
}
/*ID選擇器 只允許使用一次,類(lèi)似于身份證是惟一的*/
#big { /*聲明類(lèi)樣式*/
color: orange;
}
/*通配符選擇器 控制所有的標(biāo)簽,實(shí)際開(kāi)發(fā)很少很少用到,一般測(cè)試使用*/
* {
color: red;
}
/*鏈接偽類(lèi)選擇器*/
a:link { /*未訪(fǎng)問(wèn)的鏈接 用得少*/
font-size: 16px;
color: gray;
font-weight: 700;
}
/*已訪(fǎng)問(wèn)的鏈接:只要點(diǎn)擊過(guò)鏈接一次的狀態(tài) 用得少*/
a:visited {
font-size: 16px;
color: orange;
font-weight: 700;
}
/*鼠標(biāo)移動(dòng)到鏈接上 用得多*/
a:hover {
font-size: 16px;
color: red;
font-weight: 700;
}
/*鼠標(biāo)在鏈接上長(zhǎng)按 用得少***/
a:active {
color: green;
}
/*結(jié)構(gòu)偽類(lèi)選擇器*/
li:first-child { /*第一個(gè)孩子*/
color: red;
}
li:last-child { /*最后一個(gè)孩子*/
color: green;
}
li:nth-child(3) { /*選擇第三個(gè)孩子 nth-child(n) n代表第幾個(gè)孩子*/
color: skyblue
}
li:nth-child(even) { /*選擇所有的偶數(shù)孩子*/
color: green;
}
li:nth-child(odd) { /*選擇所有的奇數(shù)孩子*/
color: blue;
}
li:nth-child(2n) { /*選擇所有的2n孩子*/
color: black;
}
li:nth-child(2n+1) { /*選擇所有的2n+1孩子*/
color: black;
}
li:nth-last-child(even) { /*從最后一個(gè)孩子開(kāi)始數(shù)*/
color: pink;
}
:target { /*目標(biāo)偽裝選擇器:可用于選擇當(dāng)前活動(dòng)的元素*/
color: red;
}
/*交集選擇器 標(biāo)簽.類(lèi)選擇器 ,即..又*/
div.singer {
font-weight: 700;
font-size: 40px;
}
div ul li { /*后代選擇器,表示所有的后代li標(biāo)簽,要求一定是嵌套關(guān)系*/
color: gray;
}
.nav li {
color: green;
}
.nav > li { /*子元素選擇器 親兒子標(biāo)簽*/
color: red;
}
/*屬性選擇器:選取標(biāo)簽帶有某些特殊屬性的選擇器 我們成為屬性選擇器*/
a[title] {
color: blue;
}
input[type=text] { /*表示選擇input 屬性 input="text" 的標(biāo)簽*/
color: pink;
}
div[class^=font] { /* ^=表示 class 以font開(kāi)始的div 標(biāo)簽*/
color: pink;
}
div[class$=footer] { /* $=表示class 以footer結(jié)尾的div標(biāo)簽*/
color: green;
}
div[class*=tab] { /* *=表示class 包含tao的div標(biāo)簽*/
color: gray;
}
/* 偽元素選擇器 比如 ::first-letter */
p::first-letter { /* 偽元素選擇器 ::first-letter 選擇第一個(gè)字*/
font-size: 30px;
color: orange;
}
p::first-line { /* 偽元素選擇器 ::first-line 選擇第一行*/
font-size: 20px;
color: gray;
}
p::selection { /* 當(dāng)我們選擇P 標(biāo)簽的樣式*/
color: green;
}
div::before { /* before 和 after 在盒子div 的內(nèi)部前面插入或者后面插入*/
color: green;
content: "我哦我";
}
div::after {
content: "我哦我";
}
PS:歡迎留言補(bǔ)充,筆者會(huì)繼續(xù)跟進(jìn)CSS 介紹(二)文章。