代码部分变量变量用来存储需_vue中使用scss">
赞
踩
声明:本人的所有博客皆为个人笔记,作为个人知识索引使用,因此在叙述上存在逻辑不通顺、跨度大等问题,希望理解。分享出来仅供大家学习翻阅,若有错误希望指出,感谢!
CSS书写代码规模较大的Web应用时,容易造成选择器、层叠的复杂度过高,因此推荐通过SASS预处理器进行CSS的开发,SASS提供的变量、嵌套、混合、继承等特性,让CSS的书写更加有趣与程式化
<style lang="scss">
代码部分
</style>
变量用来存储需要在CSS中复用的信息,例如颜色和字体。SASS通过$
符号去声明一个变量
$common-border: 1px solid red;
body {
border: $common-border; //相当于border: 1px solid red;
}
SASS允许开发人员以嵌套的方式使用CSS,但是过度的使用嵌套会让产生的CSS难以维护,因此是一种不好的实践,下面的例子表达了一个典型的网站导航样式:
nav {
ul { //相当于 nav ul{...}
margin: 0;
padding: 0;
list-style: none;
}
li { display: inline-block; }
}
SASS能够将代码分割为多个片段,并以underscore风格的下划线作为其命名前缀,SASS会通过这些下划线来辨别哪些文件是SASS片段,并且不让片段内容直接生成为CSS文件,从而只是在使用@import
指令的位置被导入
CSS原生的@import
会通过额外的HTTP请求获取引入的样式片段,而SASS的@import
则会直接将这些引入的片段合并至当前CSS文件,并且不会产生新的HTTP请求
使用方法:
// _reset.scss
html, body, ul, ol {
margin: 0;
padding: 0;
}
// base.scss
@import 'reset'; //引入_reset.scss片断
body {
font: 100% Helvetica, sans-serif;
background-color: #efefef;
}
SASS中引入片断时,可以缺省使用文件扩展名,因此上面代码中直接通过@import 'reset’引入
混合(Mixin)用来分组那些需要在页面中复用的CSS声明,开发人员可以通过向Mixin传递变量参数来让代码更加灵活,该特性在添加浏览器兼容性前缀的时候非常有用,SASS目前使用@mixin name指令来进行混合操作
@mixin border-radius($radius) { //@mixin创建混合
border-radius: $radius;
-ms-border-radius: $radius;
-moz-border-radius: $radius;
-webkit-border-radius: $radius;
}
.box {
@include border-radius(10px); //@include使用混合,注意结尾';'
}
上面的代码建立了一个名为border-radius的Mixin,并传递了一个变量$radius作为参数,然后在后续代码中通过@include border-radius(10px)使用该Mixin,最终编译的结果如下:
.box {
border-radius: 10px;
-ms-border-radius: 10px;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
}
继承是SASS中非常重要的一个特性,可以通过@extend指令在选择器之间复用CSS属性,并且不会产生冗余的代码,下面例子将会通过SASS提供的继承机制建立一系列样式:
// 下面代码会正常输出到生成的CSS文件,因为它被其接下来的代码所继承
%message-common {
border: 1px solid #ccc;
padding: 10px;
color: #333;
}
.message {
@extend %message-common;
}
.success {
@extend %message-common;
border-color: green;
}
最终生成的CSS样式是下面这样的:
.message, .success {
border: 1px solid #ccc;
padding: 10px;
color: #333; }
.success {
border-color: green; }
SASS提供了标准的算术运算符,例如+、-、*、/、%
article[role="main"] {
float: left;
width: 600px / 960px * 100%; //相当于 width:62.5%
}
&
关键字在CSS规则中引用父级选择器/*===== SCSS =====*/ #main { color: black; a { font-weight: bold; &:hover { color: red; } //此处 $ 指代 a } } /*===== 相当于下述CSS =====*/ #main { color: black; a { font-weight: bold; a:hover { color: red; } //此处 $ 指代 a } }
CSS许多属性都位于相同的命名空间(例如font-family、font-size、font-weight都位于font命名空间下),Scss当中只需要编写命名空间一次,后续嵌套的子属性都将会位于该命名空间之下,请看下面的代码:
/*===== SCSS =====*/
.demo {
// 命名空间后带有冒号:
font: {
family: fantasy;
size: 30em;
weight: bold;
}
}
/*===== CSS =====*/
.demo {
font-family: fantasy;
font-size: 30em;
font-weight: bold; }
命令空间上可以直接书写CSS简写属性,但是日常开发中建议直接书写CSS简写属性,尽量保持CSS语法的一致性
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。