Sass学习之 Sass语法入门--6.插值#{}

6.插值#{}

将预备好的值放进#{“预备好的值”}这里面

@mixin sizes($class, $small, $medium, $big) {
    .#{$class}-small { font-size: $small; }
    .#{$class}-medium { font-size: $medium; }
    .#{$class}-big { font-size: $big; }
}
@include sizes("header", 12px, 20px, 40px);

//CSS
.header-small { font-size: 12px; }
.header-medium { font-size: 20px; }
.header-big { font-size: 40px; }
$properties: (margin, padding);
@mixin set-value($side, $value) {
    @each $prop in $properties {
        #{$prop}-#{$side}: $value;
    }
}
.login-box {
    @include set-value(top, 14px);
}

编译后:

.login-box {
    margin-top: 14px;
    padding-top: 14px;
}

一旦你发现这一点,你就会想到超级酷的 mixins,用来生成代码或者生成另一个 mixins。然而,这并不完全是可能的。第一个限制,这可能会很删除用于 Sass 变量的插值。

$margin-big: 40px;
$margin-medium: 20px;
$margin-small: 12px;
@mixin set-value($size) {
    margin-top: $margin-#{$size};
}
.login-box {
    @include set-value(big);
}

上面的 Sass 代码编译出来,你会得到下面的信息:

error style.scss (Line 5: Undefined variable: “$margin-".)

所以,#{}语法并不是随处可用,你也不能在 mixin 中调用:

@mixin updated-status {
    margin-top: 20px;
    background: #F00;
}
$flag: "status";
.navigation {
    @include updated-#{$flag};
}

上面的代码在编译成 CSS 时同样会报错:

error style.scss (Line 7: Invalid CSS after "...nclude updated-": expected "}", was "#{$flag};")
幸运的是,可以使用 @extend 中使用插值。例如:

%updated-status {
    margin-top: 20px;
    background: #F00;
}
.selected-status {
    font-weight: bold;
}
$flag: "status";
.navigation {
    @extend %updated-#{$flag};
    @extend .selected-#{$flag};
}

上面的 Sass 代码是可以运行的,因为他给了我们力量,可以动态的插入 .class 和 %placeholder。当然他们不能接受像 mixin 这样的参数,上面的代码编译出来的 CSS:

.navigation {
    margin-top: 20px;
    background: #F00;
}
.selected-status, .navigation {
    font-weight: bold;
}

以上摘抄与慕课网的Sass入门篇

时间: 2024-10-22 16:34:39

Sass学习之 Sass语法入门--6.插值#{}的相关文章

Sass学习之 Sass语法入门--3.混合宏

3.混合宏 混合宏的作用: 相当于把复杂的变量声明集中在一起,免去了单个变量的调用. 声明:@mixin border{} 调用:@include border; 混合宏的分类: 不带参数: @mixin border-radius{ -webkit-border-radius: 5px; border-radius: 5px; } 带参数: //默认有值@mixin border-radius($radius:5px){ -webkit-border-radius: $radius; bord

Sass学习之 Sass语法入门--5.占位符%

5.占位符% 只有通过@extend调用才会产生代码,不然不会有任何影响 //SCSS %mt5 { margin-top: 5px; } %pt5{ padding-top: 5px; } .btn { @extend %mt5; @extend %pt5; } .block { @extend %mt5; span { @extend %pt5; } } 编译后 //CSS .btn, .block { margin-top: 5px; } .btn, .block span { paddi

SASS学习笔记2 —— 语法

sass有两种后缀名文件:一种后缀名为sass,不使用大括号和分号:另一种是scss文件,这种和我们平时写的css文件格式差不多,使用大括号和分号.在此也建议使用后缀名为scss的文件,以避免sass后缀名的严格格式要求报错. 所有的sass导入文件都可以忽略后缀名.scss.一般来说基础的文件命名方法以_开头,如_mixin.scss.这种文件在导入的时候可以不写下划线,可写成@import "mixin". 被导入sass文件a.scss: body { background: #

Sass学习笔记--基本语法

Sass基本要求 通过 tab 键控制缩进的一种语法规则,而且这种缩进要求非常严格 不带有任何的分号和大括号 称为 Sass 老版本,其文件名以".sass"为扩展名 问题 习惯在js和css中使用括号的我们,在Sass中没看到类似 CSS 中的大括号和分号. 这种语法格式对于前端人员都不太容易接受,而且容易出错. Scss基本要求 从外形上来判断他和 CSS 长得几乎是一模一样 代码都包裹在一对大括号里,并且末尾结束处都有一个分号 其文件名格式常常以".scss"

Sass学习笔记之入门篇

Sass又名SCSS,是CSS预处理器之一,,它能用来清晰地.结构化地描述文件样式,有着比普通 CSS 更加强大的功能. Sass 能够提供更简洁.更优雅的语法,同时提供多种功能来创建可维护和管理的样式表.以下是我的学习笔记. Sass安装环境 1.安装sass(mac) ①:Ruby安装 ②:安装sass sudo gem install sass 可以通过 sass -v检测是否完成安装   2.更新sass gem update sass 3.卸载(删除)sass gem uninstal

Sass学习笔记(补充)

阅读目录 1. Sass和SCSS的区别 2. @while循环 3. @at-root 4. @content 5. 凸显注释 6. CSS输出样式 7. 重置浏览器样式 8. Sass调试和@debug命令.@warn命令 9. 使用Sass时的注意事项 相关链接:Sass学习笔记前篇 Sass关于颜色函数的乐趣 在Sass学习笔记前篇,记载了Sass安装.基本用法.编程语法,在这篇,将补充在前篇未记载的知识. 1. Sass和SCSS的区别 参考链接:http://sass.bootcss

Sass学习笔记

阅读目录 一. Sass安装 1.1 Ruby安装 1.2 运行gem命令 1.3 安装Sass 二. Sass基本用法 2.1 导入 2.2 注释 2.3 变量 2.4 嵌套 2.5 继承 2.6 占位符 2.7 混合宏 三. Sass编程 3.1 数学计算 3.2 条件 3.3 循环 3.4 函数 Sass被称为"CSS预处理器",就是用一种编程的思想去写CSS样式表.在还没接触Sass的时候,很多人都不愿意去了解,认为都会了CSS,为什么还要去写Sass,Sass最终生成的还是C

sass学习笔记1

less在处理CSS动画时,非常恶心,决定转向sass了.sass诞生得比less早,只是因为它是ruby写的,因此受众面够少.但我们不需要自己下编译器或使用命令行,我们可以koala这神器 首先几个注意点,sass可以用sass后缀名,也可以用scss后缀名.前者比较恶心,像python一样没有花括号,也不让写分号,散架子一样.因此推荐用scss,这个也是目前我遇到的大部分人的选择. 关于中文编译出错的问题,需要指定字符集. @charset "utf-8";//必须设置了这个才能编

CSS预处理器SASS学习总结

写在前面的话:如果你css写了很多了,不妨换一种方式来写写css,也许会提高效率,SASS是我比较喜欢的一种.css本来就不是太难,所以也仅仅介绍SASS常用的用法,避免复杂化,后续用到新的东西,可以再进行拓展. ======正文开始====== 我们可以通过一种类似css的编程语言编写代码,保存为.scss后缀名的文件,然后使用SASS进行处理为css文件,而这种.scss文件中可以有变量.嵌套等功能,有些编程的味道:同时.scss文件也能够通过SASS处理为压缩的.缩进的等不同风格的css代