自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

快來使用 CSS 的 :is() 減少你的代碼吧

開發(fā) 前端
is() 是一個 CSS 偽類函數(shù),該函數(shù)將選擇器列表作為參數(shù),并選擇該列表中任意一個選擇器可以選擇的元素。

[[440852]]

 deis()  么?

is() 是一個 CSS 偽類函數(shù),該函數(shù)將選擇器列表作為參數(shù),并選擇該列表中任意一個選擇器可以選擇的元素。舉個例子就比較清晰的理解:

使用前: 

  1. ul li,  
  2. ol li {} 

使用后: 

  1. :is(ul, ol) li {} 

優(yōu)化我們的代碼

假如我們系統(tǒng)比較復雜,is() 可以幫助我們簡化代碼,比如如下代碼: 

  1. /* 3-deep (or more) unordered lists use a square */  
  2. ol ol ul,     ol ul ul,     ol menu ul,     ol dir ul,  
  3. ol ol menu,   ol ul menu,   ol menu menu,   ol dir menu,  
  4. ol ol dir,    ol ul dir,    ol menu dir,    ol dir dir,  
  5. ul ol ul,     ul ul ul,     ul menu ul,     ul dir ul,  
  6. ul ol menu,   ul ul menu,   ul menu menu,   ul dir menu,  
  7. ul ol dir,    ul ul dir,    ul menu dir,    ul dir dir,  
  8. menu ol ul,   menu ul ul,   menu menu ul,   menu dir ul,  
  9. menu ol menu, menu ul menu, menu menu menu, menu dir menu,  
  10. menu ol dir,  menu ul dir,  menu menu dir,  menu dir dir,  
  11. dir ol ul,    dir ul ul,    dir menu ul,    dir dir ul,  
  12. dir ol menu,  dir ul menu,  dir menu menu,  dir dir menu,  
  13. dir ol dir,   dir ul dir,   dir menu dir,   dir dir dir {  
  14.   list-style-type: square;  

簡化成: 

  1. /* 3-deep (or more) unordered lists use a square */  
  2. :is(ol, ul, menu, dir) :is(ol, ul, menu, dir) ul,  
  3. :is(ol, ul, menu, dir) :is(ol, ul, menu, dir) menu,  
  4. :is(ol, ul, menu, dir) :is(ol, ul, menu, dir) dir {  
  5.   list-style-type: square;  

避免 CSS 錯誤

假如我們的 CSS 中有錯誤,將導致整個選擇器不生效。比如下面的 .content 寫成 :content。demo 地址[1] 

  1. <div class="container-1">  
  2.   <p class="title">I am Gopal</p>  
  3.   <div class="content">我是鍋巴</div>  
  4. </div>  
  5. <div class="container-2">  
  6.   <p class="title">I am Gopal</p>  
  7.   <div class="content">我是鍋巴</div>  
  8. </div>  
  1. /* 寫錯,將導致都不生效 */ 
  2. .container-1 .title, .container-1 :content {  
  3.   color: #885c5c;  

但假如使用 :is(),.title 選擇器依然可以生效,如下: 

  1. /* content 寫錯,title 還可以生效 */  
  2. .container-2 :is(.title, :content) {  
  3.   color: #885c5c;  

is() VS CSS 預處理器

is() 和 CSS 預處理器中的嵌套規(guī)則很相像,如下所示: 

  1. div, p, ul, ol {  
  2.   span {  
  3.     /* ... */  
  4.   }  
  5.  
  6. /* 最終解析成 */  
  7. div span, p span, ul span, ol span {  
  8.   /* ...*/  

以下是 :is() 的實現(xiàn) 

  1. :is(div, p, ul, ol) span {  

但需要注意的是它們的優(yōu)先級是不一樣的。

優(yōu)先級

通過 :is() 匹配到元素的優(yōu)先級,會采用 :is() 選擇器列表參數(shù)中優(yōu)先級最高的計算(即使它不存在)。

理解起來有點拗口,直接看一個 demo 地址[2] 

  1. <ul class="container-3">  
  2.   <li class="title">I am Gopal</li>  
  3.   <li class="content">我是鍋巴</li>  
  4. </ul>  
  1. /* 計算的時候,取 .list,而不是 ul。其優(yōu)先級為 0 1 1 */  
  2. :is(ol, .list, ul) li { 
  3.   color: #885c5c;  
  4.  
  5. /* 優(yōu)先級為 0 0 2 */  
  6. ul li {  
  7.   color: #000;  

在使用 :is() 的時候,它的參數(shù)為 ol, .list, ul,取最高的 .list 計算,其優(yōu)先級為 0 1 1。而 ul li 的優(yōu)先級是 0 0 2。所以會是 :is() 選擇器生效,即使后者寫在后面,這個跟預選擇器是有區(qū)別的,使用預選擇器會被后面的覆蓋。

兼容性

:is() 兼容性,IE 還是全軍覆沒,但很多場景可以用起來了。詳情[3]

 

 

責任編輯:龐桂玉 來源: 前端大全
相關推薦

2014-08-06 09:39:27

移動辦公企業(yè)郵箱吧

2023-07-05 08:20:33

自定義注解Java語言

2021-06-10 07:59:40

Linux 系統(tǒng)硬件操作系統(tǒng)

2021-06-22 10:16:39

Java工具庫代碼

2023-04-14 19:19:09

CSSHTML文檔

2010-06-21 09:08:02

Twitter宕機云計算

2023-07-05 10:11:02

2022-03-08 06:41:35

css代碼

2021-09-03 08:21:20

前端代碼模塊

2009-07-22 07:45:00

Scala代碼重復

2022-10-28 09:51:18

PrintfLinux開發(fā)

2021-08-02 07:52:26

Windows 11操作系統(tǒng) Linux

2021-08-02 15:30:43

Windows 11Linux

2009-12-15 17:53:18

Ruby標準庫

2024-05-11 18:48:40

技巧代碼技能

2019-11-25 10:20:54

CSS代碼javascript

2012-02-07 14:04:53

CSS

2022-08-01 08:36:09

upstream下游上游

2014-08-08 13:40:53

AngularJS模塊
點贊
收藏

51CTO技術棧公眾號