## 继承
### 继承的使用规则
继承主要使用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
- 课程规划
- 课程概述
- 特性介绍
- 组件介绍-基础组件
- 组件介绍-表单组件
- 组件介绍-数据展示组件
- 组件介绍-提示组件
- 组件介绍-导航组件
- 组件介绍-其他组件
- 综合案例