安装parcel
- 打开目标文件夹(
文件夹里面有一个 xx.html文件 与一个 yyy.scss
)
cd scss-demo
- npm 快速初始化(
可以跳过一些基础设置
)
npm init -y
- 在目标文件中安装
parcel
npm i -D parcel
- 用
parcel
编译目标文件(这个过程中会安装Node Sass
),把.scss
转化成.css
npx parcel index.html
SCSS的常用功能
嵌套选择器
如下
- First
- Second
- Thrid
上例中的CSS
可以使用SCSS
嵌套,如下demo
SCSS基础用法①-嵌套
.box {
border: 2px solid grey;
> ul {
background-color: pink;
> li {
border: 2px solid blue;
color: grey;
}
}
}
变量 $variable
任何值都可以作为变量。且变量可以作为另一个变量的值(
如的变量$grey作为变量$gray的值
),这样就使两个变量其实代表的是一个值。还有一点好处是使用SCSS变量
可以批量修改样式,如果下面的.box
与li
的边框的大小都要变成3px
,这时候就可以直接把$border-width: 3px
即可,而不需要逐逐项去修改
SCSS基础用法②-变量
$grey: #666;
$gray: $grey;
$border-width: 2px;
.box {
border: $border-width solid $grey;
> ul {
background-color: pink;
> li {
border: $border-width solid blue;
color: $gray;
}
}
}
@mixin
在
@mixin
模式中结合@include
只是把代码机械的拷贝过来,总体上代码的量并不会减少(只是减少你重复书写代码,但是打开控制台代 .scss文件编译生成的 css代码并没有减少
)。
demoSCSS基础用法③mixin 基本使用、参数、默认参数
- mixin 最基本的用法
@mixin test {
border: 3px solid red;
}
.box {
@include test
}
/* box 对应的 border样式就是 @mixin test中被{} 包裹起来的样式,当然也可以是多个样式 */
- mixin 参数模式(
mixin的参数模式也可以支持 设定默认的参数
)
- one
- two
- three
SCSS
参数模式,以及默认参数 下面的 greenyellow
与#999
就是设定的参数的默认值
@mixin test1($color: greenyellow, $bgc: #999) {
border: 2px solid $color;
background-color: $bgc;
}
.box1 {
@include test1(green);
> ul {
@include test1(greenyellow,pink)
}
}
占位符选择器%foo
(Placeholder Selectors: %foo) 与 @extend
达成上面的图片效果的CSS
.box > div {
background-color: #ccc;
width: 300px;
height: 120px;
border-radius: 4px;
box-shadow: 1.5px 1.5px 1px .8px rgba(0, 0, 0, .5)
}
如果在另外一个CSS 选择器
,也需要同样的样式,则需要把上面的样式全部赋值过去粘贴,这无疑是一件费力不讨好的事情。当然我们机智的想到了使用SCSS mixin
如下
要使.box > div
与.box1 > div
达到下图的效果,则需要
方法一:mixin
mixin 模式demo
SCSS基础用法④-1 mixin 与 placeholder的区别比较
SCSS编译生成的CSS
方法二:placeholder selector
placeholder 模式demo
SCSS基础用法④-2 占位符选择器 Placeholder Selector
%box-style {
background-color: #ccc;
width: 300px;
height: 120px;
border-radius: 4px;
box-shadow: 1.5px 1.5px 1px .8px rgba(0, 0, 0, .5);
margin-bottom: 20px;
}
.box > div {
@extend %box-style;
}
.box1 > div {
@extend %box-style;
}
SCSS编译生成的CSS
从上面的mixin
SCSS编译的CSS
与placeholder selector
SCSS编译的CSS
可以看出。对于同样的样式mixin
实质就是把样式对应的CSS全部拷贝到另一个CSS选择器,如把div > box
的样式全部拷贝到div1 > box
选择器下面;而placeholder
只是把设定同样样式的CSS选择器拷贝到 对应的CSS前面,如把box1 > div
拷贝到box > div
对应的样式前面
参考:
Sass: Sass Basics
版权声明:本文为博主原创文章,未经博主许可不得转载