百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

SASS 插值语句 #「 」的使用(sas insert)

myzbx 2025-03-24 18:33 39 浏览

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

例如

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插件语法#{}的使用就介绍到这里,更多教程请关注“老姚实战营”!

相关推荐

Xbox Series X具有比PS5更高的有效I/O吞吐量

来源:cnBeta在今年3月宣布XboxSeriesX时,微软就已经预告了全新的XboxVelocity架构,宣称可为次世代主机带来前所未有的功能体验。据悉,XboxVelocity体系结构有...

科个普:固态硬盘之友!DirectStorage显存直通车

谁能想到有一天,固态硬盘之友竟然是一个API——为了解决游戏Loading烦人的等待时间,微软利用NVMeSSD的超高读写速度特性,有针对性的开发了DirectStorageAPI,它可以让游戏直...

虚拟机备份应注意四大问题_虚拟机备份命令

2015-01-1405:48:00作者:赵为民虚拟化技术在近两年发展的非常快,很多企业都采用虚拟机技术来解决企业IT基础设施所面临的一些问题,如硬件过度浪费,扩展难等问题,但对于企业来说,保证企...

PS4支持进入倒计时:2026年春季新发售的PS4游戏将停用部分功能

PlayStation似乎正在逐步开始淘汰对上世代主机PS4的支持。据InsiderGaming独家报道,PS4的一些传统服务将在2026年春季停止提供。InsiderGaming收到的文件显示...

2026年春季起索尼PS4平台新发行游戏将停用部分旧版PSN功能

IT之家10月2日消息,据游戏媒体InsiderGaming今天报道,部分文件显示,索尼互娱似乎已经准备开始逐步淘汰PS4游戏机。InsiderGaming收到的文件显示,索尼...

吞吐量18.09GB/s,硬盘启用DirectStorage 1.1的GPU解压功能实测

IT之家12月21日消息,AMD在今年5月初曾表示,即便用户装备了NVMe的存储设备,也可能无法满足SmartAccessStorage(该技术建立在微软DirectStora...

面试官:如何让localStorage支持过期时间设置?

聊到localStorage想必熟悉前端的朋友都不会陌生,我们可以使用它提供的getItem,setItem,removeItem,clear这几个API轻松的对存储在浏览器本地的...

2025年是时候对localstorage说再见了

localStorage隐藏风险在前端开发领域,localStorage自诞生之日起就一直是数据持久化的首选方案。凭借其看似简单的setItem/getItemAPI,它成为了存储用户偏好和应用状...

前端最能打的本地存储方案_前端数据存储

前言之前开发了一个离线存储的需求,需要在本地存储较大的数据量,并且还要考虑到多种场景下的存储方式兼容。产品的原话就是“要又大又全”。既然存储量大,也要覆盖全多种设备多种浏览器。方案选择既然要存储的数量...

抛弃 localStorage,这个存储方案更安全更高效

在前端开发的世界里,浏览器存储一直是我们处理客户端数据持久化的重要工具。多年来,localStorage凭借其简单易用的API和跨会话持久化能力,成为了许多开发者的默认选择。然而,随着Web...

软件性能测试中链接追踪工具Zipkin工具的使用

大家好,今天一起来学习一下在软件性能测试过程中如何使用Zipkin这个工具来追踪链接程序逻辑链路上的相关问题首先我们了解一下Zipkin是什么?Zipkin是Twitter的一个开源项目,基于G...

Vue3管理系统实现动态路由和动态侧边菜单栏

在做Vue管理系统的时候,都会遇到的一个需求:每个用户的权限是不一样的,那么他可以访问的页面(路由),可以操作的菜单选项是不一样的,如果由后端控制,我们前端需要去实现动态路由,动态渲染侧边菜单栏。实现...

JS删除上一条浏览器历史记录的方法(登录回退)

JS使用window.location.replace删除上一条浏览器历史记录的方法(登录回退)一、问题如果用户登录状态过期,或者没有登录,当用户登录之后回退上一个页面的时候,就会回退到登录页面,这样...

LightRAG: 简单快速的检索增强生成工具

这里是Aideas,每日分享AI相关资讯。本文由AideasAgent整理并推荐。项目地址:/HKUDS/LightRAG,程序语言:Python,收藏:14,287,分支:1,996,...

实战指南:React 路由与Ant Design集成

路由管理:如何在React项目中集成react-router-dom使用前的准备:安装react-router-dom为了在React项目中使用路由功能,首先需要安装react-router-dom...