同步发布在个人站

变量

局部变量和全局变量的定义

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细节一变量的更多相关文章

  1. sass揭秘之变量(转载)

    出处:http://www.w3cplus.com/preprocessor/sass-basic-variable.html 因为文章内含有很多sass代码,如需自己动手查看编译结果,推荐使用sas ...

  2. css预编译语言 sass scss(变量$var, css嵌套规则,@import规则,@extend,@mixin)

    什么是sass Sass 是对 CSS 的扩展,让 CSS 语言更强大.优雅. 它允许你使用变量.嵌套规则. mixins.导入等众多功能, 并且完全兼容 CSS 语法. Sass 有助于保持大型样式 ...

  3. css预处理器--sass学习($变量名)

    sass有两种形式1.scss  2.sass 一:代码的基本用法 1.变量 如果变量需要镶嵌在字符串之中,就必须需要写在#{}之中. $side : left; .rounded { border- ...

  4. 2019最新create-react-app创建的react中使用sass/scss,以及在react中使用sass/scss公共变量的方法

    Sass(英文全称:Syntactically Awesome Stylesheets)是一个最初由Hampton Catlin设计并由Natalie Weizenbaum开发的层叠样式表语言.Sas ...

  5. 【JavsScript】当 JavaScript 从入门到提高前需要注意的细节:变量部分

    在javaScript中变量使用var声明的变量是当前作用域的变量,不使用var声明的则肯定是全局变量. http://msdn.microsoft.com/zh-cn/library/dn64545 ...

  6. JAVA的程序代码小细节,变量的使用,以及一些细节的面试题

    package cn.hncu; public class LableDemo { public static void main(String[] args) { //demo1(); demo2( ...

  7. js如何操作sass里的变量及calc 使用sass变量

    scss文件里 :root { --height-primary: 240px; //--height-primary :变量名,css3有规则 } $header: var(--height-pri ...

  8. js如何操作或是更改sass里的变量

    /*上网搜索了好多方法,最终只有这一种比较适合*/ 参考: https://blog.csdn.net/weixin_44392565/article/details/85755592 https:/ ...

  9. [Sass]声明变量

    [Sass]声明变量 定义变量的语法: 在有些编程语言中(如,JavaScript)声明变量都是使用关键词"var"开头,但是在 Sass 不使用这个关键词,而是使用大家都喜欢的美 ...

随机推荐

  1. Silverlight用户自定义控件件中增加属性和方法

    下面的例子在用户控件MyCpmzSelect中增加了一个myCaption属性 public static readonly DependencyProperty myCaptionProperty ...

  2. fuck me on github

    前几天写了一篇<博客园添加Fork me on GitHub彩带>,有博友评论,说他看到有的彩带上写着“Fuck me on GitHub”,当时我就笑喷了,有意思,哈哈! 昨天正好有时间 ...

  3. Java Spring AOP用法

    Java Spring AOP用法 Spring AOP Java web 环境搭建 Java web 项目搭建 Java Spring IOC用法 spring提供了两个核心功能,一个是IoC(控制 ...

  4. 可在广域网部署运行的QQ高仿版 -- GG叽叽V2.4,增加远程协助、桌面共享功能(源码)

    QQ的远程协助.或者说桌面共享是一个非常实用的功能,所以,2.4版本的GG复制了它,而且,GG增强了桌面共享的功能,它可以允许指定要共享桌面的区域,这样,对方就只能看到指定区域的桌面,这对节省流量会非 ...

  5. RCP:利用actionSet在菜单(menu)里添加内容

    eclipse的菜单menu.工具栏toolbar乃至视图的上下文菜单contextmenu都是使用Action或Command实现的. Action即是 org.eclipse.jface.acti ...

  6. UWP中的Direct2D

    介绍 DirectX一直是Windows平台中高性能图形的代名词,自Win7开始,微软又推出了Direct2D技术,包装于Direct3D,但专注于2D图形,并且准备取代GDI这样的传统2D图形技术. ...

  7. web.xml详解

    web.xml的作用 web.xml,一个Tomcat工程中最重要的配置文件.web.xml没有其实也可以----只要你确定你的项目里面不需要任何过滤器.监听器.Servlet等等.我试了一下,没有w ...

  8. 学习Scala02 基本类型

    scala中有9大基本类型: Byte .Short .Int .Long. Char .String .Float. Double .Boolean 与java的基本类型看起来基本是一致的,但实际上 ...

  9. IOS 手势-轻点、触摸、手势、事件

    1.概念 手势是从你用一个或多个手指接触屏幕时开始,直到手指离开屏幕为止所发生的所有事件.无论手势持续多长时间,只要一个或多个手指仍在屏幕上,这个手势就存在. 触摸是指把手指放到IOS设备的屏幕上,从 ...

  10. underscore源码阅读记录(二)

    引自underscore.js context参数用法 _.each(list, iteratee, [context]); context为上下文,如果传递了context参数,则把iterator ...