溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Less學(xué)習(xí)筆記 -- Nested rules (嵌套規(guī)則)

發(fā)布時(shí)間:2020-08-09 17:52:09 來(lái)源:網(wǎng)絡(luò) 閱讀:986 作者:frwupeng517 欄目:開(kāi)發(fā)技術(shù)

Less嵌套規(guī)則模仿了HTML結(jié)構(gòu),這樣寫(xiě)可以讓代碼更簡(jiǎn)潔、更具層次感,上一小段代碼先了解下

Less代碼:

#header{
  color:black;
  .navigation{
    font-size:12px;
  }
  .logo{
    width:300px;
  }
}


CSS編譯代碼:

#header {
  color: black;
}
#header .navigation {
  font-size: 12px;
}
#header .logo {
  width: 300px;
}


使用這種方法也可以在混合中包含偽類,常見(jiàn)的用法就是css reset里面的清除浮動(dòng)

Less代碼:

.clearfix{
  zoom:1;
  &:after{
    content:'';
    display:block;
    clear:both;
  }
}


CSS編譯代碼:

.clearfix {
  zoom: 1;
}
.clearfix:after {
  content: '';
  display: block;
  clear: both;
}


其中,&運(yùn)算符表示一個(gè)嵌套規(guī)則的父選擇器,常用于修改一個(gè)類或者定義偽類選擇器,比如:

Less代碼:

a{
  color:blue;
  &:visited{
    color:red;
  }
  &:hover{
    color:yellow
  }
}


CSS編譯代碼:

a {
  color: blue;
}
a:visited {
  color: red;
}
a:hover {
  color: #ffff00;
}


在上面清除浮動(dòng)的代碼中,如果不加&,會(huì)是什么效果呢?

Less代碼:

.clearfix{
  zoom:1;
  :after{
    content:'';
    display:block;
    clear:both;
  }
}


CSS編譯代碼:

.clearfix {
  zoom: 1;
}
.clearfix :after {
  content: '';
  display: block;
  clear: both;
}

不難發(fā)現(xiàn),這是一個(gè)典型的后代選擇器,并不是我們想要的效果


&選擇符的另一個(gè)非常重要的用途就是生產(chǎn)重復(fù)的類名,比如在寫(xiě)CSS公共樣式的時(shí)候會(huì)有各種各樣的button樣式


Less代碼:(在這里復(fù)習(xí)下less中引入路徑的寫(xiě)法)

@p_w_picpaths:'../p_w_picpaths';
.button{
  &-ok{
    background:url('../p_w_picpaths/1.jpg')
  }
  &-cancel{
    background:url('@{p_w_picpaths}/2.jpg')
  }
  &-custom{
    background:url('@{p_w_picpaths}/3.jpg')
  }
}


CSS編譯代碼:

.button-ok {
  background: url('../p_w_picpaths/1.jpg');
}
.button-cancel {
  background: url('../p_w_picpaths/2.jpg');
}
.button-custom {
  background: url('../p_w_picpaths/3.jpg');
}


&選擇符可以在選擇器中多次出現(xiàn),反復(fù)引用父選擇器,而不是重復(fù)父選擇器的類名

Less代碼:

.link{
  &+&{
    color:red;
  }
  & &{
    color:purple;
  }
  &&{
    color:silver;
  }
  &, &ish{
    color:pink;
  }
}


CSS編譯代碼:

.link + .link {
  color: red;
}
.link .link {
  color: purple;
}
.link.link {
  color: silver;
}
.link,
.linkish {
  color: pink;
}


&選擇符表示所有的父選擇器,而不是特指最近的父選擇器

Less代碼:

.grand{
  .parent{
    &>&{
      color:red;
    }
    & &{
      color:green;
    }
    &&{
      color:blue;
    }
    &,&ish{
      color:black;
    }
  }
}


CSS編譯代碼:

.grand .parent > .grand .parent {
  color: red;
}
.grand .parent .grand .parent {
  color: green;
}
.grand .parent.grand .parent {
  color: blue;
}
.grand .parent,
.grand .parentish {
  color: black;
}


&選擇符還可以用于生成一個(gè)逗號(hào)分割列表的所有可能的選擇器排列

Less代碼:

p, a, ul, li {
  border-top: 2px dotted #366;
  & + & {
    border-top: 0;
  }
}


CSS編譯代碼:

p,
a,
ul,
li {
  border-top: 2px dotted #366;
}
p + p,
p + a,
p + ul,
p + li,
a + p,
a + a,
a + ul,
a + li,
ul + p,
ul + a,
ul + ul,
ul + li,
li + p,
li + a,
li + ul,
li + li {
  border-top: 0;
}



向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI