Sass细节一变量
同步发布在个人站
变量
局部变量和全局变量的定义
Sass的变量是用$申明的,有局部变量(选择器内部的变量)和全局变量(不在任何选择器内的变量)。例如:
//这里$width就是全局变量
$width: 5em;
#mian{
width: $width;
}
#sidebar {
$height: 4em;
height: $height;
}
/**
#sidebar-nav{
height: $height; //这里编译的时候会报错,找不到全局变量$height
}
**/
当然在选择器内部也可以定义全局变量,例如:
#selection{
$width: 5em !global; //!global这里$width就定位为全局变量了。
width: $width;
}
#selection-list{
width: $width;
}
默认变量定义
Sass提供默认变量,根据需求来覆盖默认值,如下:
$baseLineHeight: 2;
$baseLineHeight: 1.5 !default; //这里!default定义$baseLineHeight变量为默认变量
body{
line-height: $baseLineHeight;
}
编译后为:
body {
line-height: 2;
}
现在假设我们有个scss文件,代码如下(例子来源):
//文件_imgstyle.scss的内容:
// 变量
//---------------------------------
$imgStyleBorder: 1px solid #ccc !default;
$imgStylePadding: 2px !default;
$imgStyleRadius: 8px !default;
// mixin
//---------------------------------
@mixin img-border($border:$imgStyleBorder,$padding:$imgStylePadding){
border: $border;
padding: $padding;
}
@mixin img-rounded($radius:$imgStyleRadius){
border-radius:$radius;
}
//样式
//---------------------------------
.img-border{
@include img-border;
}
.img-rounded{
@include img-rounded;
}
//文件style.scss内容:
//导入_imgstyle.scss
@import 'imgstyle';
以上如果我们要改padding的值为5px,有以下方法:
方法一:重新覆写
//导入_imgstyle.scss
@import 'imgstyle';
.img-border{
padding:5px;
}
解析后的css:
.img-border {
border: 1px solid #cccccc;
padding: 2px;
}
.img-rounded {
border-radius: 8px;
}
.img-border {
padding: 5px;
}
方法二:改变@include的参数
//导入_imgstyle.scss
@import 'imgstyle';
.img-border{
@include img-border($imgStyleBorder,5px);
}
解析后:
.img-border {
border: 1px solid #cccccc;
padding: 2px;
}
.img-rounded {
border-radius: 8px;
}
.img-border {
border: 1px solid #cccccc;
padding: 5px;
}
很明显,重复代码过多,在
变量特殊使用_imgstyle.scss文件中生命变量用了!default默认值,充分利用它的有点,改写style.scss,如下:
//申明$imgStylePadding为5px
$imgStylePadding: 5px;
//导入_imgstyle.scss
@import 'imgstyle';
解析后为:
.img-border {
border: 1px solid #cccccc;
padding: 5px;
}
.img-rounded {
border-radius: 8px;
}
如果变量需要镶嵌在字符串之中,以不带引号的字符串的方式出现,就必须需要写在"#{}"之中。
$position: left;
.aside{
margin-#{$position}: 30em;
}
编译后则是:
.aside {
margin-left: 30em;
}
变量的特殊规定
Sass变量中带了下划线:'-','_'为同一个变量,例如:
$main-width: 4em;
#main-bard{
width: $main_width; //正确,反之亦然。
}
多值变量
多值变量可用list和map遍历,多值变量想js中的数组和json。
list (列表)
list列表可以用空格,逗号,括号隔开。
- nth 函数可以直接访问列表中的某一项;
- join 函数可以将多个列表拼接在一起;
- append 函数可以将某项添加到列表中;
- @each 指令可以将添加样式到列表中的每一项。
$linkColor:#08c #333 !default;
a {
color: nth($linkColor, 1);
&:hover {
color: nth($linkColor, 2);
}
}
$classNav: nav-bar,nav-list,nav-item;
@each $item in $classNav {
.#{$item} {
display: inline-block;
}
}
编译后则是:
a {
color: #08c;
}
a:hover {
color: #333;
}
.nav-bar {
display: inline-block;
}
.nav-list {
display: inline-block;
}
.nav-item {
display: inline-block;
}
map (集合)
map集合数据就是以键值对的方式出现,值可以是list。
格式为:$map: (key1: value1, key2: value2, key3: value3);。
$headings: (h1: 2em 3em, h2: 1.5em 2em, h3: 1.2em 1.5em);
@each $header,$size in $headings {
#{$header} {
font-size: nth($size, 1);
height: nth($size, 2);
}
}
编译后为:
h1 {
font-size: 2em;
height: 3em;
}
h2 {
font-size: 1.5em;
height: 2em;
}
h3 {
font-size: 1.2em;
height: 1.5em;
}
Sass细节一变量的更多相关文章
- sass揭秘之变量(转载)
出处:http://www.w3cplus.com/preprocessor/sass-basic-variable.html 因为文章内含有很多sass代码,如需自己动手查看编译结果,推荐使用sas ...
- css预编译语言 sass scss(变量$var, css嵌套规则,@import规则,@extend,@mixin)
什么是sass Sass 是对 CSS 的扩展,让 CSS 语言更强大.优雅. 它允许你使用变量.嵌套规则. mixins.导入等众多功能, 并且完全兼容 CSS 语法. Sass 有助于保持大型样式 ...
- css预处理器--sass学习($变量名)
sass有两种形式1.scss 2.sass 一:代码的基本用法 1.变量 如果变量需要镶嵌在字符串之中,就必须需要写在#{}之中. $side : left; .rounded { border- ...
- 2019最新create-react-app创建的react中使用sass/scss,以及在react中使用sass/scss公共变量的方法
Sass(英文全称:Syntactically Awesome Stylesheets)是一个最初由Hampton Catlin设计并由Natalie Weizenbaum开发的层叠样式表语言.Sas ...
- 【JavsScript】当 JavaScript 从入门到提高前需要注意的细节:变量部分
在javaScript中变量使用var声明的变量是当前作用域的变量,不使用var声明的则肯定是全局变量. http://msdn.microsoft.com/zh-cn/library/dn64545 ...
- JAVA的程序代码小细节,变量的使用,以及一些细节的面试题
package cn.hncu; public class LableDemo { public static void main(String[] args) { //demo1(); demo2( ...
- js如何操作sass里的变量及calc 使用sass变量
scss文件里 :root { --height-primary: 240px; //--height-primary :变量名,css3有规则 } $header: var(--height-pri ...
- js如何操作或是更改sass里的变量
/*上网搜索了好多方法,最终只有这一种比较适合*/ 参考: https://blog.csdn.net/weixin_44392565/article/details/85755592 https:/ ...
- [Sass]声明变量
[Sass]声明变量 定义变量的语法: 在有些编程语言中(如,JavaScript)声明变量都是使用关键词"var"开头,但是在 Sass 不使用这个关键词,而是使用大家都喜欢的美 ...
随机推荐
- 纯练手设置ip地址脚本
#!/bin/bash IFO() { read -p "Configure $line Network card ( 'yes'or'no' )?" CDN </dev/t ...
- 关于NPOI导入导出
http://www.360doc.com/content/14/0110/16/432969_344152497.shtml NPOI汇入Excel仅支持2007版本以内: [HttpPost] p ...
- 微信公共平台开发-(.net实现)4--发送图文消息
之前说了让微信发送给关注我们的粉丝普通的文本信息,下面我们来看看如何发送图文信息,需要注意的是这里说的是,让微信发给我们,而不是我们拍个图片发给微信处理,上传图片在以后的再讲.下面是发送图文消息的函数 ...
- Linux修改环境变量的方法
在Linux操作系统中,有时候跟着教程安装了一些软件,安装成功后,很高兴的准备运行该软件相应命令,但是偶尔会遇到”Command not found…“的提示.原因是因为你安装的软件需要设置环境变量才 ...
- Ngnice-国内ng学习网站
今天给angular新手介绍一个国内开源的ng学习网站http://www.ngnice.com/这是由一批ng爱好者在雪狼大叔的带领下共同开发完成,致力于帮助更多的ng新人,他们分别是: ckken ...
- nim的引用和指针
nim语言的引用和其他语言的指针有点相似 可以提供一种“多对一”的关系 这就意味着不同的引用可以指向同一个内存位置 nim区分可被追踪的引用和不可被追踪的引用 不可被追踪的引用又称为指针 可被追踪的引 ...
- Fragment提交transaction导致state loss异常
下面自从Honeycomb发布后,下面栈跟踪信息和异常信息已经困扰了StackOverFlow很久了. java.lang.IllegalStateException: Can not perform ...
- 浅析SQL Server实现分布式事务的两阶段提交协议2PC
不久之前团队有个新人问我一个很重要的web服务接口如何保证事务的问题.因为涉及到跨库事务,当时我只是回答目前我们的SOA框架都不支持跨库事务.然后就问到了数据库跨库事务是如何实现的,我只能凭印象含糊回 ...
- HTML5本地存储——IndexedDB(二:索引)
在HTML5本地存储——IndexedDB(一:基本使用)中介绍了关于IndexedDB的基本使用方法,很不过瘾,这篇我们来看看indexedDB的杀器——索引. 熟悉数据库的同学都知道索引的一个好处 ...
- [开源]微信在线信息模拟测试工具(基于Senparc.Weixin.MP开发)
目前为止似乎还没有看到过Web版的普通消息测试工具(除了官方针对高级接口的),现有的一些桌面版的几个测试工具也都是使用XML直接请求,非常不友好,我们来尝试做一个“面向对象”操作的测试工具. 测试工具 ...