CSS_sass模块化、scss模块化

@import

1、运行时语法:

css 复制代码
@import url('xxxxxx.css');
//	编译后
@import url('xxxxxx.css');

2、编译时语法:

编译后:生成的css文件就会包含common.scss里面的代码,自然可以使用common里面的css变量

css 复制代码
//	common.scss
$color: red

@import "./common.scss"
.foo{
	color: $color
}
  • 混淆:需要通过import后面是否有url()来判断是编译时还是运行时。
  • 污染:容易造成污染,在一个项目中我们肯定会抽离很多个scss模块,模块里可能会定义不同的变量,这些变量极易导致名称冲突。比如上面引入两个scss文件,都定义了$color变量,那么后一个会覆盖前一个,并且不会报错。这个存在很大隐患。
  • 私有:不存在私有,没有导入 、导出。

@use

1、命名空间

使用@use导入的scss文件,具有命名空间,不论导入的文件层级有多深,默认就是一最后文件名为命名空间。该模块的所有成员都需要通过这个命名空间去访问。

css 复制代码
//	common.scss
$color: red

@use "./common.scss"
.foo{
	color: common.$color
}

2、自定义命名空间

当多个文件名相同,且路径不同时,可以使用as自定义命名空间

css 复制代码
//	common.scss
$color: red
//	a/common.scss
$color: #000

@use "./common.scss" as a
@use "./a/common.scss" as b
.foo{
	color: a.$color
}

//	得到foo的color值为red

3、全局导出

还用一种方式是 as * 这种代表将该scss文件里面所有成员全部全局导出,那么也就不存在命名空间了。(不太建议这种搞,最好还是用带有命名空间的方式)

css 复制代码
@use "./common.scss" as *

4、私有变量

在变量$符号和名字之间加- 或者_ 都可以(本身下划线这种命名方式在前端就是表示内部使用、私有的)

css 复制代码
//common.scss

$_n : 6;
//或者 
$-n : 6;

错误使用:

css 复制代码
@use './common.scss' as a;
 
.foo{
	color : a.$_n;
}
//	如果在外部使用了这个私有变量  编译时会报错

.
.

相关推荐
奔跑的呱呱牛21 小时前
CSS Grid 布局参数详解(超细化版)+ 中文注释 Demo
前端·css·grid
我是伪码农1 天前
HTML和CSS复习
前端·css·html
阿珊和她的猫1 天前
以用户为中心的前端性能指标解析
前端·javascript·css
_耀北1 天前
用 Canvas + CSS 打造“会呼吸”的天气卡片(附源码可复制)
前端·css
牧码岛1 天前
Web前端之样式中的light-dark函数,从媒体查询到颜色函数,从颜色到图片,light-dark打开CSS新时代、主题切换的暗黑模式到image的正解
前端·css·web·web前端
ZC跨境爬虫1 天前
CSS核心知识点与定位实战全解析(结合Playwright爬虫案例)
前端·css·爬虫
慧一居士1 天前
CSS中 ::deep 作用,使用场景,使用方法介绍
前端·css·vue.js
牧码岛1 天前
Web前端之样式中的prefers-color-scheme,一套完整的主题系统设计与原理解析
前端·css·web·web前端
我命由我123451 天前
HTML 开发 - HTML 描述列表标签(<dl>、<dt>、<dd>)
前端·javascript·css·html·css3·html5·js
前端老石人1 天前
表单与交互式元素
前端·css·html