SS(層疊樣式表)是一種用于控制網頁樣式的語言,由選擇器、屬性和值三部分組成。選擇器用于指定要樣式化的元素,屬性用于指定樣式,值用于定義樣式的具體屬性值。CSS支持繼承和層疊,可以使網頁樣式更加精確地控制,同時也能夠提高代碼的可讀性和可維護性。
CSS(層疊樣式表)語法由以下三個部分組成:
1、選擇器(Selectors):選擇器指定了要應用樣式的HTML元素。選擇器可以基于元素的標簽名、類、ID、屬性和關系等方式進行指定。
2、屬性(Properties):屬性指定了要應用到選定元素的樣式。每個屬性都有一個對應的值。
3、值(Values):值指定了要應用到選定元素的屬性的具體樣式。例如,屬性“color”可以具有值“red”或“#FF0000”。
這些部分組成了CSS規則,例如以下規則:
p {
color: red;
font-size: 16px;
}
在這個規則中,選擇器是“p”,屬性是“color”和“font-size”,值是“red”和“16px”。
CSS規則可以單獨應用到一個元素上,也可以通過選擇器應用到一組元素上。例如,下面的規則將所有<p>元素的顏色設置為紅色:
p {
color: red;
}
如果想要只應用到某個類別的<p>元素,可以使用類選擇器:
p.my-class {
color: blue;
}
這將只會將顏色設置為藍色的具有my-class類的<p>元素,其他<p>元素不受影響。
除了基本的選擇器和屬性,CSS還提供了許多其他功能,例如媒體查詢、偽類、偽元素、盒模型等等。這些功能使得CSS能夠更加靈活、強大,從而可以更好地控制頁面的樣式。
CSS還支持繼承和層疊,這是CSS的兩個重要概念。
繼承(Inheritance)指的是當元素沒有顯式設置某個屬性時,它可以繼承來自父元素的屬性。例如,如果沒有為某個段落設置顏色,那么它會繼承父元素的顏色屬性。繼承可以簡化CSS的編寫,減少了代碼量,同時也能夠保持一致的樣式。
層疊(Cascading)指的是當多個規則同時應用到同一個元素時,它們的樣式如何疊加。層疊的順序按照以下三個優先級:
1、樣式表來源的優先級,即內聯樣式(Inline Style)優先級最高,其次是嵌入樣式表(Embedded Style Sheet),最后是外部樣式表(External Style Sheet)。
2、元素的特殊性(Specificity)優先級,特殊性值越大的選擇器越優先。
3、代碼順序的優先級,后出現的規則覆蓋前面的規則。
通過繼承和層疊,CSS可以使頁面的樣式更加精確地控制,同時也能夠提高代碼的可讀性和可維護性。
CSS選擇器是CSS規則的第一部分
它是元素和其他部分組合起來告訴瀏覽器哪個HTML元素應當是被選為應用規則中的CSS屬性值的方式
選擇器所選擇的元素,叫做“選擇器的對象”
我們從一個Html結構開始
<div id="box">
<div class="one">
<p class="one_1">
</p >
<p class="one_1">
</p >
</div>
<div class="two"></div>
<div class="two"></div>
<div class="two"></div>
</div>
關于css屬性選擇器常用的有:
還有一些使用頻率相對沒那么多的選擇器:
:link :選擇未被訪問的鏈接
:visited:選取已被訪問的鏈接
:active:選擇活動鏈接
:hover :鼠標指針浮動在上面的元素
:focus :選擇具有焦點的
:first-child:父元素的首個子元素
:first-letter :用于選取指定選擇器的首字母
:first-line :選取指定選擇器的首行
:before : 選擇器在被選元素的內容前面插入內容
:after : 選擇器在被選元素的內容后面插入內容
[attribute] 選擇帶有attribute屬性的元素
[attribute=value] 選擇所有使用attribute=value的元素
[attribute~=value] 選擇attribute屬性包含value的元素
[attribute|=value]:選擇attribute屬性以value開頭的元素
在CSS3中新增的選擇器有如下:
:first-of-type 表示一組同級元素中其類型的第一個元素
:last-of-type 表示一組同級元素中其類型的最后一個元素
:only-of-type 表示沒有同類型兄弟元素的元素
:only-child 表示沒有任何兄弟的元素
:nth-child(n) 根據元素在一組同級中的位置匹配元素
:nth-last-of-type(n) 匹配給定類型的元素,基于它們在一組兄弟元素中的位置,從末尾開始計數
:last-child 表示一組兄弟元素中的最后一個元素
:root 設置HTML文檔
:empty 指定空的元素
:enabled 選擇可用元素
:disabled 選擇被禁用元素
:checked 選擇選中的元素
:not(selector) 選擇與 <selector> 不匹配的所有元素
[attribute*=value]:選擇attribute屬性值包含value的所有元素
[attribute^=value]:選擇attribute屬性開頭為value的所有元素
[attribute$=value]:選擇attribute屬性結尾為value的所有元素
選擇器 | 示例 | 說明 |
class | .test{color: red} | 選擇class="test"的標簽 |
id | #test{color:red} | 選擇id="test"的標簽 |
element | p{color: red} | 選擇所有 p 標簽 |
element, element | div, p {} | 選擇所有div和p |
后代 | ul li {border: 1px solid red;} | 選擇ul的所有li后代(包括兒子 孫子 重孫...) |
:link | a:link {color: black;} | 選擇所有未訪問鏈接 |
:visited | a:visited {color: red;} | 選擇所有訪問過的鏈接 |
:hover | a:hover {color: #fff} | 鼠標懸浮觸發 |
:active | a:active {background: yellow;} | 選擇活動鏈接(按住鼠標不松開觸發) |
:first-letter | h1:first-letter{font-size: 200%} | 選擇h1中以第一個字 |
:first-line | p:first-line {background: yellow} | 選擇每個<p>元素的第一行 |
版本 2
選擇器 | 示例 | 說明 |
* | * {padding: 0;} | 選擇所有標簽 |
父子element>element | .list > li {border: 1px solid red;} | 選擇class="list"的所有兒子li |
兄弟element+element | h1+p {color: red} | 在h1后面選一個p兄弟 |
屬性 | [type] {display: block;} | 選擇帶有 type 屬性的標簽 |
屬性等于 | [type=text] {display: block;} | 選擇type屬性值為text的標簽 |
屬性包含 | [eyes~=小眼睛] {display:none} | 選擇所有eyes屬性包含小眼睛的元素 |
[attribute|=word] | [eyes|="小眼睛"] | 選擇eyes屬性為小眼睛開頭的元素; |
:focus | input:focus{backgroundr:yellow;} | 選擇具有焦點的輸入元素 |
大兒子 | h1:first-child{color: red} | 選擇一個h1標簽并且是其父元素的第一個元素 |
:before | span:before | 在每個<span>元素之前插入內容 |
:after | span:after | 在每個<span>元素之后插入內容 |
版本 3
選擇器 | 示例 | 說明 |
酒場兄弟 | h1~p {color: red} | 版本2的只能選一個兄弟,版本3能選h1后面所有p兄弟 |
屬性開頭 | [name^="李"]{border: 1px solid red;} | 選擇所有name屬性以‘李’開頭的元素,^ 類似正則 |
屬性結尾 | img[src$=".png"]{width: 100%} | 選擇src 為 .png 結尾的 img 元素 |
屬性包含 | [name*="李"]{width: 100%} | 選擇所有name屬性包含‘李’開頭的元素 |
:first-of-type | li:first-of-type{} | 選擇所有li并且是其父元素的第一個 |
:last-of-type | li:last-of-type{} | 選擇所有li并且是其父元素的最后一個 |
:only-of-type | h2:only-of-type{} | 選擇一個h2并且它是唯一一個 |
:only-child | h2:only-child{} | 選擇一個h2并且是其父元素的獨子 |
:nth-child(n) | div:nth-child(1){} | 選擇一個div并且是其父元素的第一個孩子 |
:nth-last-child(n) | div:nth-last-child(2){} | 選擇一個div并且是其父元素的倒數第二個孩子 |
:nth-of-type(n) | p:nth-of-type(2) | 選擇每個p元素是其父級的第二個p元素 |
:nth-last-of-type(n) | p:nth-last-of-type(2) | 選擇每個p元素的是其父級的倒數第二個p元素 |
小兒子 | h1:last-child | 選擇h1標簽并且是其父元素的最后一個孩子 |
:root | :root{background: red} | 文檔根元素偽類 |
:empty | h1:empty{} | 選擇一個h1標簽并且沒有子元素(空標簽)<h1></h1> |
id:target | #footer:target(:target) | 選擇當前處于活動狀態的錨點標簽(不加id為所有錨點) |
:not(selector) | :not(p) | 選擇非 selector 元素的元素(即反選) |
::selection | ::selection{color: red} | 選擇光標選中的文字 |
:enabled | 【主要用于表單元素】 | 選擇器匹配每個啟用的的元素 |
:disabled | 【主要用于表單元素】 | 選擇器匹配每個禁用的的元素 |
:checked | 【主要用于表單元素】 | 選擇器匹配每個選中的輸入元素 |
:out-of-range | 【主要用于表單校驗】 | 選中【超出】設置范圍的元素(input) |
:in-range | 【主要用于表單校驗】 | 選中輸入值【未超出】指定范圍的元素 |
:read-write | 【主要用于表單元素】 | 選中【可寫】狀態的input |
:read-only | 【主要用于表單元素】 | 選中【只讀】狀態的input |
:optional | 【主要用于表單校驗】 | 選中【非必填】狀態的input |
:required | 【主要用于表單校驗】 | 選中【必填】狀態的input |
:valid | 【主要用于表單校驗】 | 選中 輸入email【合法】的input |
:invalid | 【主要用于表單校驗】 | 選中 輸入email【不合法】的input |
狀態 | 示例 | 說明 |
:link | a:link | 選擇所有未被訪問的鏈接 |
:visited | a:visited | 選擇所有已被訪問的鏈接 |
:hover | a:hover | 鼠標移動到元素上時 |
:active | a:active | 點擊正在發生時 |
:focus | input::focus | 選擇獲得焦點的 input 元素 |
:root | :root | 改變當前html所有樣式 |
:empty | p:empty | 對沒有元素沒有文本標簽選中,如 選中,如果** 雙方的 **選不中; |
:first-child | p:first-child | 選中父元素中第一個p,如果父元素第一個不是p選不中,如子元素第一個元素是p也會選中, |
:first-of-type | p:first-of-type | 選中父元素中第一個p,一直往下找,如子元素中有p也會選中,main>p:first-of-type只選取兒子 |
:last-child | p:last-child | 選中父元素中最后一個p,如果父元素最后不是p選不中,如子元素中最后元素是p也會選中,main>p:last-child,只選取兒子 |
:last-of-type | p:last-of-type | 選中父元素中最后一個p,一直往下找,如子元素中有p也會選中最后一個 |
:only-of-type | p:only-of-type | 選擇屬于其父元素的唯一子元素的p,父元素有其他p選不中。如子元素有唯一p也會選中 |
:only-child | p:only-child | 選擇屬于其父元素的唯一子元素的p,父元素有其他p選不中。 |
:nth-child(n) | p:nth-child(2) | 選擇父元素第二個元素,如果是p選中,反之。如子元素第二元素是p也選中 |
:nth-of-type(n) | p:nth-of-type(2) | 選中父元素中第二個p,一直往下找,如子元素中有二個p也會選中,main>p:first-of-type只選取兒子 |
:nth-last-child(n) | p:nth-last-child(2) | 同上從最后一個算 |
:nth-last-of-type(n) | p:nth-last-of-type(2) | 同上,從最后一個算 |
:not() | :not(p) | 選中父元素除了p所有元素 |
選擇器 | 示例 | 說明 |
:enabled | input:enabled | 選擇每個啟用的 input 元素 |
:disabled | input:disabled | 選擇每個禁用的 input 元素 |
:checked | input:checked | 選擇每個被選中的 input 元素 |
:required | input:required | 包含required屬性的元素 |
:optional | input:optional | 不包含required屬性的元素 |
:valid | input:valid | 驗證通過的表單元素 |
:invalid | input:invalid | 驗證不通過的表單 |
狀態 | 示例 | 說明 |
::first-letter | p:first-letter | 選擇每個元素的首字母 |
::first-line | p:first-line | 選擇每個元素的首行 |
::before | p:before | 在每個元素的內容之前插入內容 |
::after | p:after | 在每個元素的內容之后插入內容 |
p::after{ //在p標簽內容后面加上1
content: "123";
}
相信大家對CSS選擇器的優先級都不陌生:
內聯 > ID選擇器 > 類選擇器 > 標簽選擇器
到具體的計算層?,優先級是由 A 、B、C、D 的值來決定的,其中它們的值計算規則如下:
這里舉個例子:
#nav-global > ul > li > a.nav-link
套用上面的算法,依次求出 A B C D 的值:
上面算出的A 、 B、C、D 可以簡記作:(0, 1, 1, 3)
知道了優先級是如何計算之后,就來看看比較規則:
經過上面的優先級計算規則,我們知道內聯樣式的優先級最高,如果外部樣式需要覆蓋內聯樣式,就需要使用!important
在css中,繼承是指的是給父元素設置一些屬性,后代元素會自動擁有這些屬性
關于繼承屬性,可以分成:
font:組合字體
font-family:規定元素的字體系列
font-weight:設置字體的粗細
font-size:設置字體的尺寸
font-style:定義字體的風格
font-variant:偏大或偏小的字體
text-indent:文本縮進
text-align:文本水平對劉
line-height:行高
word-spacing:增加或減少單詞間的空白
letter-spacing:增加或減少字符間的空白
text-transform:控制文本大小寫
direction:規定文本的書寫方向
color:文本顏色
visibility
caption-side:定位表格標題位置
border-collapse:合并表格邊框
border-spacing:設置相鄰單元格的邊框間的距離
empty-cells:單元格的邊框的出現與消失
table-layout:表格的寬度由什么決定
list-style-type:文字前面的小點點樣式
list-style-position:小點點位置
list-style:以上的屬性可通過這屬性集合
quotes:設置嵌套引用的引號類型
cursor:箭頭可以變成需要的形狀
繼承中比較特殊的幾點:
給大家分享我收集整理的各種學習資料,前端小白交學習流程,入門教程等回答-下面是學習資料參考。
前端學習交流、自學、學習資料等推薦 - 知乎
…
}
Selector:當定義一條樣式規則時,必須指定受這條樣式規則作用的網頁元素,在一條規則中定義的網頁元素就是selector(選擇器),也就是選擇該樣式規則作用于的網頁元素。
偽元素選擇器是指對同一個HTML元素在不同的狀態下的一種定義方式
目前只有a和p兩處HTML元素可以使用
使用時的語法
標簽:偽元素 標簽[.類名]:偽元素
所有嵌套在某個HTML標簽中的HTML標簽都會繼承外層標簽設置的樣式規則。
樣式規則的
優先級
關聯>ID選擇器>CLASS選擇器>HTML標簽選擇器
*請認真填寫需求信息,我們會在24小時內與您取得聯系。