Scss预处理器的使用总结
变量 、嵌套、Mixin混合、function函数、插值
变量及文件导入
通过$定义变量
$white:#fff;
$black:#000;
变量引用
.containner{
color:$black;
}
通常我们会单独创建一个局部scss文件来定义这些变量 例如 _varables.scss
varables前面的下划线用来区分这是局部文件,不会生成对应的css文件,通过@import方式在其他文件中导入该文件(下划线可以省略)
@import 'varables';
嵌套
例如我们有这样一个html结构
<div class="containner">
<div class="banner"></div>
</div>
使用嵌套语法可以写成:
.containner{
background: #eee;
color:$black;
.banner{
background: red;
}
}
最后编译成css:
.containner {
background: #eee;
color: #000; }
.containner .banner {
background: red; }
高级用法
&、>、+、~
使用&符合使得区分元素不以后代选择器的方式连接,例如链接使用到的hover效果
a{
color:red;
&:hover{
color:blue;
}
}
编译后
.containner a:hover {
color: blue; }
mixin混合
如果我们有多个地方使用到相同的样式,我们就可以将其写成一个mixin方法,然后在不同的地方去使用它
一般通过@mixin来定义一个函数,@include来引用
例如定义一个用于清除浮动的mixin方法
@mixin clearfix() {
&::after {
display: block;
clear: both;
content: "";
}
}
我们就可以这样使用
.list{
list-style: none;
@include clearfix();
.item{
float: left;
}
}
mixin方法传参
类似JavaScript函数我们可以传递参数
@mixin colorlink($normal, $hover, $visited){
color: $normal;
&:hover { color: $hover; }
&:visited { color: $visited; }
}
使用
@include colorlink(blue,red,green);
也可以使用这种方式,不用区分参数顺序
@include colorlink(
$normal: blue,
$visited: green,
$hover: red
);
设置默认参数值
通过以下方式来这是默认参数值
@mixin size($size:50px){
font-size: $size;
}
调用的时候我们可以根据需求来决定是否传递参数
.title{
// @include size();
@include size(20px);
}
@fuction和@mixin
区别:
- sass本身就有一些内置的函数,方便我们调用,如强大的color函数,还有darken、rgba、ie-hex-str、percentage、lighten、length、nth、unit、unitless等
- 其次就是它返回的是一个值,而不是一段css样式代码什么的
内置函数
1、rgba
rgba(blue, 0.2) => rgba(0, 0, 255, 0.2)
2、percentage
将一个没有单位的数字转成百分比形式
percentage(0.2) => 20%
通过@function来自定义函数
// px转em
@function pxToEm($px, $base: 16) {
@return ($px / $base) * 1em;
}
调用
p{
font-size:pxToEm(20);
}
解析
p{
font-size: 1.25em;
}
其他
1、插值语句 #{}
通过 #{} 插值语句可以在选择器或属性名中使用变量:
$name: foo;
$attr: border;
p.#{$name} {
#{$attr}-color: blue;
}
生成
p.foo {
border-color: blue; }
2、使用@for指令输出重复格式内容
@for $i from 1 through 28
{
.bg-#{$i}
{
background: url(brand_day_review#{$i}.jpg) no-repeat center / 1560px auto;
}
}
生成
.containner .bg-1 {
background: url(brand_day_review1.jpg) no-repeat center/1560px auto; }
.containner .bg-2 {
background: url(brand_day_review2.jpg) no-repeat center/1560px auto; }
.containner .bg-3 {
background: url(brand_day_review3.jpg) no-repeat center/1560px auto; }
.containner .bg-4 {
background: url(brand_day_review4.jpg) no-repeat center/1560px auto; }
.containner .bg-5 {
background: url(brand_day_review5.jpg) no-repeat center/1560px auto; }
除了@for,其他的还有@if 、@each、@while等,这些都属于控制指令
参考阅读
sass中文网
组织你的Sass文件
sass揭秘之@mixin,%,@function
Sass基础——Rem与Px的转换
Scss预处理器的使用总结的更多相关文章
- CSS预处理器Sass(Scss)、Less、Stylus
CSS 预处理编译器能让我成程序化其的方式编写CSS代码,可以引入CSS中没有的变量.条件.函数等特性,从而让代码更简单易维护,但一般按预处理器语法编写的代码无法直接在浏览器中运行,需用通过工具比如g ...
- CSS预处理器 Less Sass,Scss 编译 Sourcemap调试
sass.less和stylus的安装使用和入门实践 SASS用法指南 Sass Basics CSS预处理器 css preprocessor 预处理器即preprocessor,预处 ...
- Vue-cli 3.0 使用Sass Scss Less预处理器
项目中使用预处理器,可以有效减少css代码量,使用Sass||Scss||Less; 预处理器 你可以在创建项目的时候选择预处理器 (Sass/Less/Stylus).如果当时没有选好, 内置的 w ...
- 前端CSS预处理器Sass
前面的话 "CSS预处理器"(css preprocessor)的基本思想是,用一种专门的编程语言,进行网页样式设计,然后再编译成正常的CSS文件.SASS是一种CSS的开发工 ...
- css预处理器sass使用教程(多图预警)
css预处理器赋予了css动态语言的特性,如变量.函数.运算.继承.嵌套等,有助于更好地组织管理样式文件,以及更高效地开发项目.css预处理器可以更方便的维护和管理css代码,让整个网页变得更加灵活可 ...
- 关于前端CSS预处理器Sass的小知识!
前面的话 "CSS预处理器"(css preprocessor)的基本思想是,用一种专门的编程语言,进行网页样式设计,然后再编译成正常的CSS文件.SASS是一种CSS的开发工 ...
- CSS预处理器Sass、LESS 和 Stylus
CSS 预处理器技术已经非常的成熟,而且也涌现出了越来越多的 CSS 的预处理器框架.本文向你介绍使用最为普遍的三款 CSS 预处理器框架,分别是 Sass.Less CSS.Stylus. 首先我们 ...
- 为您详细比较三个 CSS 预处理器(框架):Sass、LESS 和 Stylus
CSS 预处理器技术已经非常的成熟,而且也涌现出了越来越多的 CSS 的预处理器框架.本文向你介绍使用最为普遍的三款 CSS 预处理器框架,分别是 Sass.Less CSS.Stylus. 首先我们 ...
- css的一种预处理器 sass
之前觉得关于css什么的没什么,后来让别人给问住了...然后就悲催了... sass是一种css的预处理器,是一种函数式的css的编程: 主要还是看官网 http://www.w3cplus.com/ ...
随机推荐
- CentOS 7下单机部署RabbltMQ环境的操作记录
一. RabbitMQ简单介绍 在日常工作环境中,你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用.通讯的问题而苦恼.挣扎?如果是,那么恭喜你,消息 ...
- MySQL(七)DQL之分组查询
一.语法 select 分组函数,分组后的字段from 表[where 筛选条件]group by 分组的字段[having 分组后的筛选][order by 排序列表] 二.特点 分组前筛选:whe ...
- Postman----支持markdown可自动生成接口文档
1.postman支持markdown作为集合中的请求,对集合和文件夹进行文字描述的方式,您可以嵌入屏幕截图和其他图像已获得更多描述性的介绍. 2.已markdown语法为准,填写自己想要展示的内容 ...
- 小白学习Python之路---re模块学习和挑战练习
本节大纲: 1.正则表达式 2.re模块的学习 3.速记理解技巧 4.挑战练习--开发一个简单的python计算器 5.心得总结 6.学习建议 正则表达式: 正则表达式,又称规则表达式.(英语:Reg ...
- Haskell学习-functor
原文地址:Haskell学习-functor 什么是Functor functor 就是可以执行map操作的对象,functor就像是附加了语义的表达式,可以用盒子进行比喻.functor 的定义可以 ...
- Stackoverflow上有哪些声望高or值得关注的国人
Stackoverflow上有哪些声望高/值得关注的国人? 以下回答并不严格按照 Reputation 排名来列,也不收录不确定是Chinese(中国人或华人)的用户,欢迎补充- 1.李杨 @Li L ...
- 国内开源社区巨作AspectCore-Framework入门
前些天和张队(善友),lemon(浩洋),斌哥(项斌)等MVP大咖一块儿吃饭,大家聊到了lemon名下的AOP这个项目,我这小白听得一脸懵逼,后面回来做了一下功课,查了下资料,在lemon的Githu ...
- Spring Boot整合Mybatis并完成CRUD操作
MyBatis 是一款优秀的持久层框架,被各大互联网公司使用,本文使用Spring Boot整合Mybatis,并完成CRUD操作. 为什么要使用Mybatis?我们需要掌握Mybatis吗? 说的官 ...
- c# 多种方法调整屏幕亮度
Github: https://github.com/CHNMaxGor/AjustScreenBrightness 方法一: 使用网上常说的 Gdi32.dll 下的 SetDeviceGammaR ...
- 在个人博客中优雅的使用Gitalk评论插件
在上一篇博客<程序员如何从0到1搭建自己的技术博客>中,我们了解了如何快速的从0到1搭建一个个人博客. 其实细心的你会发现,该博客用到了一个评论插件,这个插件就是Gitalk. 如果想要在 ...