## 繼承
### 繼承的使用規則
繼承主要使用less的偽類:extend,用法如下
1.extend 繼承
~~~
.b{
color:red;
}
.a:extend(.b){}
~~~
等同于css
~~~
.b,
.a {
color: red;
}
~~~
2. extend 和all的繼承
~~~
.b{
color:red;
}
.c .b {
font-size:14px;
}
// 跟.b相關的所有選擇器樣式都會被繼承
.a:extend(.b all){}
~~~
等同于css
~~~
.b,
.a {
color: red;
}
.c .b,
.c .a {
font-size: 14px;
}
~~~
3.多條件繼承
~~~
.b{
color:red;
}
.c {
font-size:14px;
}
.a:extend(.b, .c){}
~~~
等同于css
~~~
.b,
.a {
color: red;
}
.c,
.a {
font-size: 14px;
}
~~~
4.嵌套寫法
~~~
a {
color:red
}
.div {
&:extend(a);
}
~~~
等同于css
~~~
a,
.div {
color: red;
}
~~~
5.嵌套選擇器
~~~
.a {
b{
color:red;
}
}
.div {
&:extend(.a b);
}
~~~
等同于css
~~~
.a b,
.div {
color: red;
}
~~~
6.精準匹配
~~~
.a .c {
color:red
}
.a {
font-size:4px;
}
// 只會繼承只有單獨.a選擇器的樣式定義
.div {
&:extend(.a);
}
~~~
等同于css
~~~
.a .c {
color: red;
}
.a,
.div {
font-size: 4px;
}
~~~
7.變量模式
~~~
@a:.test;
@{a}{
color:red;
}
.c:extend(.test){} //無法繼承
.c:extend(@{a}){}// 無法繼承
~~~
等同于css
~~~
.test {
color: red;
}
//通過變量定義的.test不會被繼承
~~~
~~~
.a {
color:red;
}
@{selector}:extend(.a){}//可以繼承
@selector:.c;
~~~
等同于css
~~~
.a,
.c {
color: red;
}
~~~
8.繼承作用域
~~~
@media print {
.screenClass:extend(.selector) {}
.selector { // 會被匹配到
color: black;
}
}
.selector { // 不會被匹配到
color: red;
}
@media screen {
.selector { //不會被匹配到
color: blue;
}
}
~~~
等同于css
~~~
@media print {
.selector,
.screenClass {
color: black;
}
}
.selector {
color: red;
}
@media screen {
.selector {
color: blue;
}
}
~~~
再舉一個例子
~~~
@media screen {
.selector { //可以被繼承
color: blue;
}
@media (min-width: 1023px) {
.selector { //可以被繼承
color: blue;
}
}
}
.topLevel:extend(.selector) {} //在最外圍的選擇器中可以繼承一切
~~~
等同于css
~~~
@media screen {
.selector,
.topLevel {
color: blue;
}
}
@media screen and (min-width: 1023px) {
.selector,
.topLevel {
color: blue;
}
}
~~~
### 課后習題
1.下面的less代碼轉換成css是什么?
~~~
.a {
color:red;
}
div .a {
font-size:18px;
}
.b:extend(.a){}
.c:extend(.a all){}
~~~
2.請用less改寫下面的css代碼
~~~
div{
.a{
font-size:18px;
color:red;
}
}
.a {
font-size:14px;
color:black;
}
.b{
font-size:18px;
color:red;
}
.c{
font-size:14px;
color:black;
}
~~~
- Less
- 課程規劃
- Less概述
- 變量
- 混合
- 嵌套
- 繼承
- 導入
- 函數
- 其他
- 實戰
- ES6
- 課程規劃
- ES6概述
- let和const命令
- 變量的解構賦值
- 字符串擴展
- 函數擴展
- 數組擴展
- Set和Map數據結構
- Symbol
- Generator 函數
- Promise對象
- Class語法
- Module 的語法
- ES7和ES8
- 實戰
- VUE
- 課程規劃
- vue概述
- vue實例
- 模版語法
- 計算屬性和偵聽器
- Class和Style的綁定
- 條件渲染
- 列表渲染
- 事件處理
- 表單輸入綁定
- 組件基礎
- 過渡和動畫
- 自定義指令
- 過濾器
- 響應式原理
- 實戰課程
- Node
- 課程規劃
- 課程概述
- node入門實例
- 模塊系統
- 回調函數
- 全局對象
- 常用模塊介紹
- 常用模塊介紹-1
- 常用模塊介紹-2
- 常用模塊介紹-3
- npm使用
- express的使用
- express的使用-1
- webpack基礎
- 實戰
- 微信小程序
- 課程規劃
- 課程概述
- 基本配置和生命周期
- wxml模版
- wxss
- wxs
- 組件
- 微信API
- 自定義組件開發
- 實戰小程序
- Element
- 課程規劃
- 課程概述
- 特性介紹
- 組件介紹-基礎組件
- 組件介紹-表單組件
- 組件介紹-數據展示組件
- 組件介紹-提示組件
- 組件介紹-導航組件
- 組件介紹-其他組件
- 綜合案例