#### 1.5繼承@extend
**sass中,選擇器繼承可以讓選擇器B繼承另一個選擇器A的*所有樣式*,并聯合聲明。使用選擇器的繼承,要使用關鍵詞@extend,后面緊跟需要繼承的選擇器。此需要寫在選擇器B里面,則編譯成css的時候,聯合聲明時,B永遠都在A后面**,
格式:@extend 要繼承的選擇器名稱;
#### 1.5.1普通繼承
列:scss樣式:
~~~
.one {
width:100px;
height:100px;
}
.two {
@extend .one; //繼承的樣式
background:red;/*獨立的樣式*/
border:5px solid #000;
}
~~~
轉化成css樣式
~~~
.one, .two {
width: 100px;
height: 100px;
} //.two繼承了.one的樣式,并和.one聯合聲明
.two {
background: red;
border: 5px solid #000;
}
~~~
#### 1.5.2繼承復雜的選擇器
**注意:選擇器繼承書寫沒有順序,可以先書寫選擇器B,寫上@extend .A,然后在下面寫上選擇器A的樣式,也可以**
列:scss樣式
~~~
.hoverlink {
@extend a:hover;
}
a:hover {
text-decoration: underline;
}
~~~
轉化成css樣式
~~~
a:hover, .hoverlink {
text-decoration: underline;
}
~~~
#### 1.5.3繼承多個選擇器
**注意:1.即選擇器B要多個選擇器的樣式,則書寫一個@extend,后面書寫選擇器,選擇之間用逗號`,`隔開,**
列:scss樣式
~~~
.one {
width:100px;
height:100px;
}
.two {
/*繼承的樣式 選擇器之間用逗號隔開了*/
@extend .one, .three;
/*獨立的樣式*/
background:red;
border:5px solid #000;
}
.three {
padding:10px;
}
~~~
轉化成css樣式
~~~
one, .two {
width: 100px;
height: 100px;
}
.two {
/*繼承的樣式*/
/*獨立的樣式*/
background: red;
border: 5px solid #000;
}
.three, .two {
padding: 10px;
}
~~~
**留意:**編譯成css的順序跟scss中one(A),two(B要繼承的選擇器),three(C)順序有關,如ABC,則變成css則是AB,B,CB,如果是ACB,是變成css是AB,CB,C。如果是BAC,則變成css是B,AB,CB,如果是BCA,則變成css是B,CB,AB。
#### 1.5.4鏈型繼承
**注意:即類名“.C”繼承類名“.B”,而類名“.B”又繼承了類名“.A”**
列:scss樣式
~~~
.one {
width:100px;
height:100px;
}
.two {
/*繼承的樣式*/
@extend .one;
/*獨立的樣式*/
background:red;
border:5px solid #000;
}
.three {
/*繼承的樣式*/
@extend .two;
/*獨立的樣式*/
padding:10px;
}
~~~
轉化成css樣式
~~~
.one, .two, .three {
/*繼承的樣式*/
width: 100px;
height: 100px;
}
.two, .three {
/*獨立的樣式*/
background: red;
border: 5px solid #000;
}
.three {
/*獨立的樣式*/
padding: 10px;
}
~~~
#### 1.5.5繼承的局限性
雖然能夠繼承的選擇器數量很多,但是也有很多選擇器并不被支持繼承的,如包含選擇器(.one .two)或者相鄰兄弟選擇器(.one+.two)目前還是不支持繼承。但若繼承的元素是“a”,恰巧這個元素“a”又有hover狀態的樣式,那么hover狀態的樣式也會被繼承。
列:scss樣式
~~~
.myLink {
@extend a;
}
a {
color: blue;
&:hover {
text-decoration: underline;
}
}
~~~
轉化成css樣式
~~~
a, .myLink {
color: blue;
}
a:hover, .myLink:hover {
text-decoration: underline;
}
~~~
- 布局
- display:table布局
- display:flex彈性布局
- html
- 1.1關于文字小技巧
- 1.2加載
- 1.3蘋果和安卓樣式兼容問題
- 1.4結構技巧
- 1.5兼容ie7,ie8技巧
- css
- 1.1內容不夠,頁面固定在底部
- 1.2 css屬性書寫順序
- 1.3font和line-height之CSS代碼書寫順序不同,導致顯示效果不一樣
- 1.4 flex設置成1和auto有什么區別
- 1.5帶三角形的對話框
- 1.6css選擇器
- 1.6.1通用兄弟選擇器E ~ F
- 1.6.2相鄰兄弟選擇器E + F
- 1.6.3 CSS3結構選擇器
- 1.6.4 屬性選擇器
- 1.6.7 class^=,class*= ,class$= 的含義
- 1.7偽類
- 1.7.1:not(s)
- 1.9inherit和 initial
- 2.0 css技巧
- css3
- 1.2 背景background
- 1.3 transform
- 1.3.1移動translate
- 1.3.2縮放scale
- 1.3.3旋轉rotate
- 1.3.4扭曲skew
- 1.4 Transition
- 1.5 animate
- 1.6 calc()
- 1.7 Gradients漸變
- 1.8 backface-visibility
- 1.9 text-size-adjust
- sass知識點
- 1.1sass寫法轉化
- 1.1.1 sass的轉換寫法
- 1.2 & 嵌套寫法
- 1.2變量
- 1.2.1 默認值
- 1.2.2 全局變量和局部變量
- 1.2.3 嵌套
- 1.2.4 偽類選擇器
- 1.2.5變量用井號花括號包裹
- 1.2.6 多個變量一起聲明
- 1.3混合宏
- 1.3.1不帶參數的混合宏
- 1.3.2傳一個不帶值的參數
- 1.3.3傳多個不帶值的參數
- 1.3.4傳一個參數的值
- 1.3.5傳多個參數的值
- 1.3.6參數變量名后面加...(省略號)
- 1.4文件導入
- 1.5繼承@extend
- 1.6占位符%
- 1.7混合宏VS繼承VS占位符
- 1.8 @media在sass中寫法
- 1.9 @content的作用
- sass基本運算
- 1.1[Sass運算]加法
- 1.2[Sass運算]減法
- 1.3[Sass運算]乘法
- 1.4[Sass運算]除法
- sass函數
- 1.1 @if函數
- 1.2for函數
- 1.3 while函數
- 1.4 each循環
- 函數
- 1.1一些函數的意思
- 1.2if else函數
- 1.3 i++和++i的區別
- 1.4for函數
- UI設計規則
- 1.1字體
- 1.2尺寸
- 1.3 注意點
- 1.4 界面設計注意點