【11】css 基本功:引入方式及選擇器相關
- 2020 年 1 月 14 日
- 筆記
vue 組件開發,必須熟悉基本的 css 知識及技巧。
目錄 1、原生 css 的三種引用方式 2、組件開發中的選擇器 2.1、深度作用選擇器 2.2、不使用類型選擇器 3、css 選擇器
1、原生 css 的三種引用方式
內聯
將 css 樣式程式碼直接嵌入在style屬性中。
<p style='color:red;'>文字顏色為紅色</p>
嵌入
將style程式碼塊嵌入在head或body內。
<head> <style type='text/css'> span{ font-size:18px; color: red; } </style> </head>
外部
將css樣式定義在單獨的css文件中,然後使用link標籤在頁面內引入。
<link rel="stylesheet" href="common.css" type="text/css">
這是原生的方式。在工程化組件開發中,樣式有另外的規則和技巧。
2、組件開發中的選擇器
2.1、深度作用選擇器
在啟用了scoped的樣式內,可以使用>>>跨越選擇更深的子孫組件。
例如:
<style scoped> .a >>> .b { /* ... */ } </style>
會編譯成:
.a[data-v-f3f3eg9] .b { /* ... */ }
有些像 Sass 之類的預處理器無法正確解析 >>>。這種情況下可用 /deep/ 或 ::v-deep 操作符取而代之。
2.2、不使用類型選擇器
當在元素選擇器在scoped style樣式塊之內時,例如:
p { color: red }
執行效率會慢很多倍。如果使用 類選擇器 或者 id選擇器 取而代之,比如:
.example { color: red }
性能影響就會消除。
3、css 選擇器
1、元素選擇器
p{ color: #00CCFF; }
2、id選擇器
#red { color:red; } <li id="red">香蕉</li>
3、類選擇器
應用最多的一類選擇器。
.fo{ color: #00AA88; } <ul class="fo"> </ul>
4、元素+類選擇器
p.important {color:red;} <p class="important"> 這個字體顏色為紅色</p>
5、多個類選擇器
.important {font-weight:bold;} .warning {font-style:italic;} .important.warning {background:silver;} <p class="important warning"> 該字體顯示為加粗、斜體以及背景色為銀色的效果 </p>
顯示為所有類的樣式效果。
6、屬性選擇器
h2[title] { color:red; } <h2 title="Hello world">Hello world</h2>
為擁有指定屬性的元素設置樣式。scoped css 模組化即是通過添加隨機屬性名稱實現的。
還可以精準查找屬性與屬性值:
p[class="important warning"] {color:red} <p class="important warning">字體顏色為紅色</p>
須同時滿足條件,具有class屬性,且屬性值為xx。
7、後代選擇器
依據元素的上下文位置關係確定:
li strong { font-style: italic; font-weight: normal; } <li><strong>蘋果</strong></li>
strong在li之後,strong為li的後代。
8、子元素選擇器
h1 > strong {color:red;} <h1>This is <strong>very</strong> <strong>very</strong> important.</h1>
兩個very均為紅色。該選擇器選擇作為子元素的元素。
9、兄弟選擇器
選擇相鄰的另一元素,二者有相同父元素。
h1 + p {margin-top:50px;} <h1>This is a heading.</h1> <p>和h1有距離</p> <p>This is paragraph.</p>
效果:
緊隨的第一個p有樣式效果。
10、:last-child 選擇器
指定屬於其父元素的最後一個子元素的樣式。
p:last-child{ background:#ff0000; }
p:last-child 等同於 p:nth-last-child(1)。
11、:first-child 選擇器
指定屬於其父元素的首個子元素的樣式。
p:first-child{ background-color:yellow; }
例如:
p:first-child i { background:yellow; }
選擇每個 <p>
中的每個 <i>
元素並設置其樣式,其中的 <p>
元素是其父元素的第一個子元素。
參考鏈接
- https://cloud.tencent.com/developer/article/1514516
- https://vue-loader.vuejs.org/zh/guide/scoped-css.html
- https://www.jianshu.com/p/e56f07f8da62
- http://w3school.com.cn/cssref/selector_last-child.asp
專欄列表
基於 vue+go 如何快速進行業務迭代?