Sass学习(二)--混合器与继承
目录
- 混合器
- 继承
混合器
Sass中的混合器类似于js的函数,将一段代码定义成混合器以实现代码的重用
声明混合器:@mixin mixName
调用混合器 @include minName
如
@mixin border-round{-moz-border:1px solid red;-webkit-border:1px solid red;border:1px solid red
}
#top{@include border-round;
}
//编译后
#top {-moz-border: 1px solid red;-webkit-border: 1px solid red;border: 1px solid red; }
混合器css规则
当然混合器中也可以包含css规则
@mixin testmix{list-style:none;li{color:red;padding:30px;}>.top{background:red}
}ul.parent{border:1px solid red;@include testmix;
}
//编译后
ul.parent {border: 1px solid red;list-style: none;
}ul.parent li {color: red;padding: 30px;
}ul.parent > .top {background: red;}
可以看到Sass很智能的帮我们处理了一些较复杂的规则
混合器传参
混合器可以像函数一样传递参数
混合器传参数
@mixin test($color,$size,$hoverColor){color:$color;border:$size solid red;&:hover{color:$hoverColor}
}#top{@include test(red,1px,blue);
}
//编译后
#top {color: red;border: 1px solid red;
}#top:hover {color: blue;
}/*#
当然这里有个问题,混合器里面的参数不允许颠倒位置,如果你记不清他们什么位置可以使用键值的方式明确指定
@mixin test($color,$size,$hoverColor){color:$color;border:$size solid red;&:hover{color:$hoverColor}
}#top{@include test($size:1px,$hoverColor:blue,$color:red);
}
//编译后
#top {color: red;border: 1px solid red;}
#top:hover {color: blue;}
参数默认值
混合器允许你定义参数默认值
如下
@mixin test($normal,$hover:red){color:$normal;background-color:$hover
}
#top{@include test(skyblue,orange);
}
//编译后
#top {color: skyblue;background-color: orange;}//不指定color
@mixin test($normal,$hover:red){color:$normal;background-color:$hover
}
#top{@include test(skyblue);
}
//编译后#top {color: skyblue;background-color: red; }
Sass继承
Sass中也可实现继承类似面向对象思想子类继承父类,sass可以继承多个父类 这个”父类“可以是类,id 标签 状态等。
继承语法 @extend name
如
.error{color:red;font-size:15px;
}
.danger-error{@extend .error;font-size:20px;
}
//编译后
.error, .danger-error {color: red;font-size: 15px;
}.danger-error {font-size: 20px;
}
当然父类也可包含css规则
.error{color:red;font-size:15px;>.te{padding:10px}
}
.danger-error{@extend .error;font-size:20px;
}
//编译后
.error, .danger-error {color: red;font-size: 15px;
}
.error > .te, .danger-error > .te {padding: 10px;}.danger-error {font-size: 20px; }
组合继承
.error a{color:red;font-size:10px;
}
.danger{@extend .error;color:orange;
}
//编译后
.error a, .danger a {color: red;font-size: 10px;
}.danger {color: orange;
}
继承多个
.one{color:red;
}
.two{border:1px solid red;
}
.three{@extend .one;@extend .two;//或者这样写@extend .one,.two//background:blue;
}
//编译后
.one, .three {color: red;
}
.two, .three {border: 1px solid red;
}
.three {background: blue;
}
继承局限性
继承不支持组合
很多选择器不支持继承如包选择器 .one tow
相邻选择器 .one+.two
%继承
有些时候我们希望被用来继承的代码不要渲染到页面上只作为继承使用。
定义方法 父类名前+%
%test{border:1px solid red;
}
#main{@extend %test;
}
//编译后
#main {border: 1px solid red;
}#meng a%long{color:blue;border:1px solid red;
}.notice{@extend %long;
}
//编译后
#meng a.notice {color: blue;border: 1px solid red;
}
继承在指令的作用域如(@media)
在指令内部无法继承到指令外部的类,指令外部继承指令内部的类无法达到预期效果
.one{height:400px;
}@media print{.two{@extend .one}width:300px;
}
编译时报错
继承注意事项
不能过量使用继承,因为所有类继承了父类,父类改变就会影响子类
继承只会在生成css时复制选择器,而不会复制大段的css属性
如果不小心会让生成css中包含大量的选择器复制
避免这种情况的最好办法:
不要在继承css规则中使用后代选择器如
.dsf{}.foo .bar {@extend dsf //不推荐}
Sass学习(二)--混合器与继承相关推荐
- 菜鸟的 Sass 学习笔记
介绍 sass 是什么?? 在sass的官网,它是这么形容给自己的 Sass is the most mature, stable, and powerful professional grade C ...
- python编程语言继承_python应用:学习笔记(Python继承)
学习笔记(Python继承)Python是一种解释型脚本语言,可以应用于以下领域: web 和 Internet开发 科学计算和统计 人工智能 教育 桌面界面开发 后端开发 网络爬虫 有几种叫法(父类 ...
- spring security 学习二
spring security 学习二 doc:https://docs.spring.io/spring-security/site/docs/ 基于表单的认证(个性化认证流程): 一.自定义登录页 ...
- 深度学习二(Pytorch物体检测实战)
深度学习二(Pytorch物体检测实战) 文章目录 深度学习二(Pytorch物体检测实战) 1.PyTorch基础 1.1.基本数据结构:Tensor 1.1.1.Tensor数据类型 1.1.2. ...
- Struts2框架学习(二) Action
Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器 ...
- JS高级的学习(二)
JS高级的学习(二) set对象 Set 是一个对象 存放数据 数据永远不会重复 Set 当成是一个数组 遍历 使用 数组方法 find findIndex Map 数组转成 Set对象 const ...
- C#多线程学习(二) 如何操纵一个线程
C#多线程学习(二) 如何操纵一个线程 原文链接:http://kb.cnblogs.com/page/42529/ [1] C#多线程学习(二) 如何操纵一个线程 [2] C#多线程学习(二) 如何 ...
- C++学习笔记:(五)继承 多态
目录 7.组合.继承与多态性 7.1 组合 7.2 继承 7.3继承和组合 7.4构造与析构顺序 7.5派生类重载基类函数的访问 7.6多态性&虚函数 7.7纯虚函数和抽象基类 7.8 多重继 ...
- STL源码剖析学习二:空间配置器(allocator)
STL源码剖析学习二:空间配置器(allocator) 标准接口: vlaue_type pointer const_pointer reference const_reference size_ty ...
- mysql用创建的用户登陆并修改表格_MySQL 基础学习二:创建一个用户表,并增删改查...
MySQL 基础学习二:创建一个用户表,并 增删改查 提示:MySQL 命令建议都用大写,因为小写运行时,还是翻译成大写的. 第一步,创建一个用户表 1,打开控制台,进入数据库 C:\Users\Ad ...
最新文章
- object.ReferenceEquals(a,b)
- RUP within the context of the Six Best Practices
- wifi管理系统_KJ725(A)精确人员定位管理系统实现对井下人员和车辆的精确定位
- 复旦大学把衣服变成了显示器,能聊天能导航,水洗弯折都不怕 | Nature
- 【C#】调度程序进程已挂起,但消息仍在处理中;
- EXCEL 打开 csv乱码问题
- 如何直接soap字符串,访问webservice
- java程序员被误导的一个概念,Set也可以有序
- 2016_icpc_dalian_onsite
- 开灯关灯java script_Jquery实现视频播放页面的关灯开灯效果
- Tensorboard可视化具体做法
- mvp+dagger2_Android MVP + Dagger2 +改造+ RxJava
- 有哪些免费软件下载网站,安全靠谱的软件分享网站
- [第八章] 深入理解计算机系统第三版 家庭作业参考答案
- 内涵图:从明天起,做一个有内涵的人
- BBQ EasyBuns
- OpenCV+Mediapipe人物动作捕捉与Unity引擎的结合
- 【音频分析】短时傅立叶变换结果为啥是对称?每个结果对应的频率是多少?
- 解开Kafka神秘的面纱(二):Kafka的高效读写与消息安全
- MES系统功能在石油化工行业的应用
热门文章
- [Xcelsius]从Xcelsius中导出Excel表格
- Bing Maps-----微软
- html rfftq15.gif,STM32F4xx固件库
- Python为什么这些年在编程语言排行榜上一直上升?告诉你11个原因
- nginx日志中$request_body 十六进制字符(\x22\x9B\x5C\x09\x08...)完美解决方案
- 极虎病毒结束度假,感染量再攀高峰
- 下一关口令:别犹“豫”,看“浙”里,一起“皖”
- android 代码设置默认浏览器打开,android手机如何设置默认浏览器?
- Android - 跳转系统网络设置
- Netty03-进阶