SASS 插值语句 #{ }的使用

  • SASS 插值语句 #{ }的使用已关闭评论
  • 174 次浏览
  • A+
所属分类:Web前端
摘要

在之前我们已经使用用 / 来进行计算,但如下情况不一样例如如果需要使用变量,同时又要确保 / 不做除法运算,而是完整地编译到 CSS 文件中,这种情况怎么办???可以使用 #{} 插值语句将变量包裹。

在之前我们已经使用用 / 来进行计算,但如下情况不一样

例如

p{     font: 16px/30px Arial, Helvetica, sans-serif;  } 

如果需要使用变量,同时又要确保 / 不做除法运算,而是完整地编译到 CSS 文件中,这种情况怎么办???可以使用 #{} 插值语句将变量包裹。

使用插值语法

p {     $font-size: 12px;     $line-height: 30px;     font: #{$font-size}/#{$line-height} Helvetica,     sans-serif; } 

通过 #{} 插值语句可以在选择器、属性名、注释中使用变量:

$class-name: danger; $attr: color; $author:'老姚';  /*     * 这是文件的说明部分     @author: #{$author}  */  a.#{$class-name} {     border-#{$attr}: #F00; } 

编译后

/*     * 这是文件的说明部分     @author: 老姚  */ a.danger {   border-color: #F00; } 

插值语法说明

插值一般就指插入值在某个位置,该功能不是sass才有的,其实很多语言都有,例如前段的js,如果我们想输出一个带变量的值

var name = '张三',             age = 20; console.log('我叫' + name + ',今年' + age + '岁!'); 

如果有很多变量要输出,或这个串很长的情况是非常麻烦的,所以我们可以用模板字符串输出,像这样

var name = '张三',             age = 20; console.log(`我叫${name},今年${age}岁!`); 

而sass中的插值用的是#{}把变量包裹起来的,变量可以是几乎任意类型的值;

什么时候会用到插值语法?

注释、选择器、属性名等有变量输出时

上面的安全便是该种情况

$class-name: danger; $attr: color; $author:'老姚';  /*     * 这是文件的说明部分     @author: #{$author}  */  a.#{$class-name} {     border-#{$attr}: #F00; } 

用于调式

$themes:( 'light':#f00, 'dark':#000); @function color($key) {     @if not map-has-key($themes, $key) {         @warn " $themes有key里面不包含 `#{$key}`.";     }     @return map-get($themes, $key); }  .container {     background-color: color('light'); } 

更多使用场景欢迎补充

这些情况不能使用插值语法

不可插值用于变量的一部分

$font-size-big: 40px; $font-size-base: 20px; $font-size-small: 12px; $size:big; .block {     font-size: $font-size-#{$size}; // Error: Undefined variable. } 

不能在混入里使用

@mixin base {     margin-top: 20px;     background: #F00; }  $flag: "base"; .navigation {     @include #{$flag}; // Error: Expected identifier. } 

@import后不能使用

$var:'common'; @import #{var}; .block {     font-size: $font-size; } 

还有更多情况...

最后总结

插值语法在使用中还是非常方便的,但有些情况不能使用,但不代表后续不能使用,具体情况根据当前使用的版本来,有可能现目前版本不支持的情况,后续版本可能会支持。

关于sass插件语法#{}的使用就介绍到这里,更多教程请关注“老姚实战营”!