亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
博主信息
博文 45
粉絲 3
評論 0
訪問量 56570
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
細說選擇器優(yōu)先級與屬性簡寫
殘破的蛋蛋
原創(chuàng)
1431人瀏覽過

細說選擇器優(yōu)先級與屬性簡寫

一、偽類選擇器的狀態(tài)匹配

<a>標簽這種鏈接有4中狀態(tài),

  1. 默認狀態(tài)
  2. 已訪問過的
  3. 懸停狀態(tài)
  4. 激活狀態(tài):鼠標點擊
    這四種狀態(tài)順序是固定的,而且順序不能胡亂寫,否則會導(dǎo)致狀態(tài)無效
  1. <style>
  2. /* 1. 默認狀態(tài) */
  3. a:link {
  4. color: aqua;
  5. text-decoration: none;
  6. font-size: 36px;
  7. }
  8. /* 2. 已訪問過的狀態(tài) */
  9. a:visited {
  10. color: blue;
  11. }
  12. /* 3. 懸停狀態(tài) */
  13. a:hover {
  14. color: red;
  15. text-decoration: underline;
  16. }
  17. /* 4. 激活狀態(tài):鼠標點擊 */
  18. a:active {
  19. color: salmon;
  20. }
  21. </style>
  1. <a href="https://www.toutiao.com">今日頭條:信息創(chuàng)造價值</a>
  • 示例圖:
    鏈接的4種狀態(tài)

<form> 標簽也同樣有狀態(tài)屬性,以下是學習過程中的一個表單的示例代碼:

  1. <form action="">
  2. <p>用戶名:<input type="text" name="" value="admin" readonly></p>
  3. <p>郵&nbsp;&nbsp;&nbsp;箱:<input type="email" name="" value="aaa@bbb.com" required></p>
  4. <p>密&nbsp;&nbsp;&nbsp;碼:<input type="password" name="" value="12345678" disabled></p>
  5. </form>

比如說我們?nèi)绻胍挠脩裘膇nput框的背景色,通常的做法是:

  1. <style>
  2. form p:first-of-type input:first-of-type {
  3. background-color: red;
  4. }
  5. </style>
  • 效果如圖:
    修改用戶名輸入框的背景色

但是這樣寫就非常繁瑣了,這樣的話我們可以用狀態(tài)來匹配也能達到同樣的效果:

  1. <style>
  2. /* 可以使用以下簡寫方法 */
  3. input:read-only {
  4. background-color: red;
  5. }
  6. </style>

當然,郵箱和密碼輸入框也可以使用對應(yīng)的狀態(tài)屬性來描述他們的背景顏色:

  1. <style>
  2. input:required {
  3. background-color: lightgreen;
  4. }
  5. input:disabled {
  6. background-color: lightsalmon;
  7. }
  8. </style>
  • 整體效果如圖:
    輸入框

不僅如此,我們還以通過選中的狀態(tài)(focus)來修改被選中的input輸入框的背景色:

  1. <style>
  2. input:focus {
  3. background-color: lightgreen;
  4. }
  5. </style>
  • 效果如圖:
    focus選中狀態(tài)

二、選擇器的優(yōu)先級

通常在一個頁面中,我們經(jīng)常會遇到一個標簽上有多個選擇器,這個時候我們就在給元素樣式的時候就需要考慮它們的優(yōu)先級了,因為優(yōu)先級的不同,會導(dǎo)致樣式顯示的跟實際書寫代碼的順序不太一樣,例如有以下h2標簽:

  1. <h2 class="on" id="foo">Hello World!</h2>
  • 效果如圖:
    Hello World

1.當選擇器相同時,與代碼的書寫順序有關(guān),后面的樣式自動覆蓋前面的樣式。

  1. <style>
  2. h2 {
  3. color: green
  4. }
  5. h2 {
  6. color: red
  7. }
  8. </style>
  • 效果圖:
    同標簽選擇器

由以上案例可以看出,后面寫的h2樣式把第一個h2的樣式給覆蓋掉了。

2.當選擇器不同時,與其優(yōu)先級有關(guān),級別高的覆蓋級別低的。

  1. <style>
  2. .on {
  3. color: red;
  4. }
  5. h2 {
  6. color: green;
  7. }
  8. </style>
  • 效果圖:
    class選擇器

由圖中可以看出來“class選擇器.on”的樣式覆蓋了h2的樣式,從這個案例可以得到一個結(jié)果:class選擇器的優(yōu)先級大于標簽選擇器。

3.目前是class選擇器,如果還想用更高級別的選擇器,我們還可以使用id選擇器。

  1. <style>
  2. #foo {
  3. color: blue;
  4. }
  5. .on {
  6. color: red;
  7. }
  8. </style>
  • 效果圖:
    id選擇器

注意:為了文章后面的描述方便,我把class選擇器簡稱為class,標簽選擇器簡化為tag,請id選擇器簡化為id,各位讀者朋友注意下。

通過上述3個案例,我們可以得出來一個選擇器優(yōu)先級的結(jié)論:

  • id > class > tag

三、選擇器優(yōu)先級的提權(quán)方式

通過上面的學習,我已經(jīng)掌握了CSS的優(yōu)先級相關(guān)的知識,但是一個頁面只能通過選擇器的類型來提升優(yōu)先級呢?通過后面的學習我發(fā)現(xiàn)并不是。實際工作當中,我們在寫CSS的時候可以應(yīng)用一系列的選擇器組合來靈活的設(shè)置優(yōu)先級。

例如有以下HTML代碼:

  1. <h2 class="on off" id="foo">Hello World!</h2>

給出以下樣式:

  1. <style>
  2. body h2 {
  3. color: skyblue;
  4. }
  5. h2 {
  6. color: red;
  7. }
  8. </style>
  • 效果圖:
    提權(quán)

從效果圖中看出,body h2的優(yōu)先級高于h2,這是為什么呢?
因為這里有一個計算公式:

  • [id的數(shù)量,class的數(shù)量,tag的數(shù)量]

根據(jù)我的學習心得,感覺這個公式是非常重要的,理解了這個,以后的CSS優(yōu)先級的問題都不會覺得再難,再出錯了。
明白了這個公式,我們也就知道了為什么上述的body h2的優(yōu)先級高于h2了,根據(jù)上述公式,body h2的計算公式:[0, 0, 2],而h2的公式:[0, 0, 1],從計算公式里面看出來,tag的數(shù)量前者比后者多1個,所以body h2的優(yōu)先級高。

還有一個問題,如果說tag一樣多呢,又該如何比較呢?其實,我在學習的時候也猜出來了,應(yīng)該是往前進一位,比較class的數(shù)量。

例如,以下樣式,h2的標簽樣式已經(jīng)是從html開始了,如果我們想要后來寫的樣式提權(quán),無法再通過增加tag的數(shù)量來操作了,這時候我們就可以使用class(相當于往前進1)來覆蓋html body h2的樣式了。

  1. <style>
  2. <!-- [0, 1, 0] -->
  3. .on {
  4. color: green
  5. }
  6. <!-- [0, 0, 3] -->
  7. html body h2 {
  8. color: red;
  9. }
  10. </style>
  • 效果圖:
    class提權(quán)

由此類推,我們還可以通過id的數(shù)量來決定優(yōu)先級。

  1. <style>
  2. <!-- [1, 0, 0] -->
  3. #foo {
  4. color: blue
  5. }
  6. <!-- [0, 1, 3] -->
  7. html body h2.on {
  8. color: red;
  9. }
  10. </style>
  • 效果圖:
    id

通過這個公式,我們可以靈活的對HTML元素進行不同級別的CSS樣式的渲染,掌握這個,以后的CSS優(yōu)先級問題都不在話下,這個是重點,需要牢記掌握。

四、屬性的簡寫

1.在之前的CSS學習中,如果我要設(shè)置一個字體的樣式,我會這樣寫:

  1. <style>
  2. /* 字體屬性 */
  3. .title {
  4. font-family: sans-serif;
  5. font-size: 26px;
  6. /* font-style: normal */
  7. font-style: italic;
  8. /* lighter */
  9. font-weight: 500;
  10. }
  11. </style>

但是這樣寫感覺有點太繁瑣了,于是學到了下面這種方法:

  1. <style>
  2. /* 簡寫如下 */
  3. font: italic lighter 36px 微軟雅黑;
  4. </style>
  • 這二者效果是一樣的,如圖:
    font簡寫

2.字體不光可以修飾普通的文本,還可以利用字體生成一些小圖標,至于如何利用字體生成小圖標呢?通過學習我了解到在iconfont-阿里巴巴矢量圖標庫可以選擇我們需要的圖標然后生成相應(yīng)的代碼。地址:https://www.iconfont.cn/

【第一步】引入項目中生成的fontclass代碼:

  1. <link rel="stylesheet" href="./iconfont.css">

【第二步】:選擇相應(yīng)圖標并獲取類名,應(yīng)用于頁面:

  1. <span class="icoxnfont icon-xxx"></span>

“iconfont” 是我們項目下的iconfont.css文件里的font-family屬性值。可以通過編輯項目查看,默認是 “iconfont”。

  • 效果圖:
    iconfont

五、盒模型的屬性縮寫

一個頁面中的所有內(nèi)容都是盒子,任何一個頁面都是一個二維平面,二維平面中的元素只有兩種排列方式,要么水平,要么垂直,一個頁面中的所有元素都是一個盒子。它包含了:邊距、邊框、填充、和內(nèi)容。

  • 如下圖就說明了一個盒模型的結(jié)構(gòu):
    盒模型
  1. Margin(外邊距) - 清除邊框外的區(qū)域,外邊距是透明的;
  2. Border(邊框) - 圍繞在內(nèi)邊距和內(nèi)容外的邊框;
  3. Padding(內(nèi)邊距) - 清除內(nèi)容周圍的區(qū)域,內(nèi)邊距是透明的;
  4. Content(內(nèi)容) - 盒子內(nèi)容,顯示圖像和文本等。

如下代碼可以清晰描述盒模型的相關(guān)內(nèi)容:

  1. <style>
  2. .box {
  3. width: 200px;
  4. height: 200px;
  5. background-color: lightgreen;
  6. box-sizing: border-box;
  7. }
  8. .box {
  9. /* 邊框 */
  10. /* 每個邊框可以設(shè)置三個屬性: 寬度,樣式,顏色 */
  11. /* border-top-width: 5px;
  12. border-top-color: red;
  13. border-top-style: solid; */
  14. /* border-top: 5px red solid; */
  15. border-top: rgb(255, 0, 255) solid 5px;
  16. border-bottom: 10px red dashed;
  17. border: 5px solid #000;
  18. }
  19. .box {
  20. /* 內(nèi)邊距 */
  21. /* padding: 上 右 下 左; 按順時針方向*/
  22. padding: 5px 10px 15px 20px;
  23. /* 頁面看不到是因為padding是透明的,且背景色會自動擴展到padding */
  24. /* 將背景色裁切到到內(nèi)容區(qū) */
  25. background-clip: content-box;
  26. /* 當左右相等,而上下不相等,使用三值語法 */
  27. padding: 10px 20px 15px;
  28. /* 當左右相等,上下也相等,使用二值語法 */
  29. padding: 10px 30px;
  30. /* 如果四個方向全相等,使用單值語法 */
  31. padding: 10px;
  32. /* 總結(jié),當使用三值和二值時,只需要記住第二個永遠表示左右就可以了 */
  33. }
  34. .box {
  35. /* 外邊距:控制多個盒子之間的排列間距 */
  36. /* 四值,順時針,上右下左 */
  37. margin: 5px 8px 10px 15px;
  38. /* 三值,左右相等,上下不等 */
  39. margin: 10px 30px 15px;
  40. /* 二值,左右相等,上下也相等 */
  41. margin: 10px 15px;
  42. /* 單值,四個方向全相等 */
  43. margin: 8px;
  44. }
  45. </style>
  1. <div class="box"></div>
  • 效果圖
    盒模型屬性

盒模型相關(guān)總結(jié):
1.內(nèi)外邊距的都是按照順時針方向來表示值的,上、右、下、左;
2.如果使用二值、三值表示時,第二個值永遠表示左、右兩邊的值;
3.padding是透明的,在頁面中看不到,且背景色會自動擴展到padding;
4.邊框有三個屬性,寬度、樣式、顏色,這三個屬性的書寫沒有固定順序。

批改老師:天蓬老師天蓬老師

批改狀態(tài):合格

老師批語:
本博文版權(quán)歸博主所有,轉(zhuǎn)載請注明地址!如有侵權(quán)、違法,請聯(lián)系admin@php.cn舉報處理!
全部評論 文明上網(wǎng)理性發(fā)言,請遵守新聞評論服務(wù)協(xié)議
0條評論
作者最新博文
關(guān)于我們 免責申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學習者快速成長!
關(guān)注服務(wù)號 技術(shù)交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時隨地碎片化學習
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號

  • 登錄PHP中文網(wǎng),和優(yōu)秀的人一起學習!
    全站2000+教程免費學