CSS预处理器之Sass(三)

简介: CSS预处理器之Sass(三)

CSS预处理器之Sass(二):https://developer.aliyun.com/article/1556764


7.2 多继承

index.scss

.message {
    padding: 15px;
    margin-top: 100px;
    border: 1px solid transparent;
}

.important {
    @extend .message;
    font-weight: 800;
    font-size: 14px;
}

.message-danger {
    @extend .important;
    background-color: #000;
    border-color:#B1EBB6;
}

转为 css 后

index.css

.message, .important, .message-danger {
  padding: 15px;
  margin-top: 100px;
  border: 1px solid transparent;
}

.important, .message-danger {
  font-weight: 800;
  font-size: 14px;
}

.message-danger {
  background-color: #000;
  border-color: #B1EBB6;
}
/*# sourceMappingURL=index.css.map */

7.3 占位符 %

%message,它是一个占位符选择器。占位符选择器不会生成实际的 CSS 输出,只有在被继承时才会生成对应的样式规则。

index.scss

%message {
    padding: 15px;
    margin-top: 100px;
    border: 1px solid transparent;
}

.important {
    @extend %message;
    font-weight: 800;
    font-size: 14px;
}

.message-danger {
    @extend .important;
    background-color: #000;
    border-color:#B1EBB6;
}

转为 css 后

index.css

.important, .message-danger {
  padding: 15px;
  margin-top: 100px;
  border: 1px solid transparent;
}

.important, .message-danger {
  font-weight: 800;
  font-size: 14px;
}

.message-danger {
  background-color: #000;
  border-color: #B1EBB6;
}
/*# sourceMappingURL=index.css.map */

⑧ Sass 运算符的基本使用 ✅

8.1 等号操作符

所有数据类型都支持等号运算符

==!=

$them: "dark";
.container {
    @if $them == 'dark' {
        background-color: #000;
        color: #fff;
        font: {
            weight: 400;
            size: 12px;
        }
    }
    @else {
        background-color: #fff;
        color: #000;
        font: {
            weight: 500;
            size: 14px;
        }
    }
}

转为 css 后

index.css

.container {
  background-color: #000;
  color: #fff;
  font-weight: 400;
  font-size: 12px;
}
/*# sourceMappingURL=index.css.map */

8.1 关系(比较)运算符

关系运算符只支持整数这一数据类型

<><=>=

$them: 1;
.container {
    @if $them >= 1 {
        background-color: #000;
    }
    @else {
        background-color: #fff;
    }
}

8.2 逻辑运算符

andornot

$width: 100;
$height: 200;
$last: false;
div {
    @if $width > 50 and $height < 300 {
        font-size: 16px;
    }
    @else {
        font-size: 14px;
    }
    @if not $last {
        border-color: red;
    }
    @else {
        border-color: blue;
    }
}

转为 css 后

div {
  font-size: 16px;
  border-color: red;
}
/*# sourceMappingURL=index.css.map */

8.3 数字操作符

sass 中支持的数字类型有哪些呢?

纯数字、百分号、css 部分单位

可以使用如下操作符作为运算

+-*/%

8.3.1 +
.container {
    width: 50 + 20;
    width: 50 + 20%;
    width: 50% + 20%;
    width: 50 + 20px;
    width: 50px + 20px;
    width: 50px + 20pt;
}

转为 css 后

.container {
  width: 70;
  width: 70%;
  width: 70%;
  width: 70px;
  width: 70px;
  width: 76.6666666667px;
}
/*# sourceMappingURL=index.css.map */
8.3.2 -
.container {
    width: 50 + 20;
    width: 50 - 20%;
    width: 50% - 20%;
    width: 50 - 20px;
    width: 50px - 20px;
    width: 50px - 20pt;
}

转为 css 后

.container {
  width: 70;
  width: 30%;
  width: 30%;
  width: 30px;
  width: 30px;
  width: 23.3333333333px;
}
/*# sourceMappingURL=index.css.map */
8.3.3 *
.container {
    width: 10 * 20;
    width: 5 * 10%;
    // width: 10% * 10%; ❌
    // width: 10px * 10px; ❌
    width: 10px * 2;
}

转为 css 后

.container {
  width: 200;
  width: 50%;
  width: 20px;
}/*# sourceMappingURL=index.css.map */
8.3.4 /

/ 运算符只有在某些特殊情况下才会当作是运算符,不然就是一个普通的分隔符。

以下 3 种情况,/ 将被视为除法运算符号

  • 如果值或值的一部分,是变量或者函数的返回值
  • 如果值被圆括号包裹
  • 如果值是算数表达式的一部分
$width: 100px;
.container {
    width: 10 / 5;
    width: (10 / 5);
    width: $width / 5;
    width: round($number: 50) / 2;
    width: 10px / 2px;
    width: 10px / 2px + 3px;
    width: 10px / 2 + 3px;
}

转为 css 后

.container {
  width: 10/5;
  width: 2;
  width: 20px;
  width: 25;
  width: 10px/2px;
  width: 8px;
  width: 8px;
}
/*# sourceMappingURL=index.css.map */
8.3.5 %
$width: 100px;
.container {
    width: 10 % 5;
    width: 50 % 3px;
    width: 50px % 3px;
    width: 50% / 7;
    width: 50px % 7;
    width: 50% % 9%;
    // width: 50% % 10px; ❌
    width: 50px % 10pt; // => 等价于 50px % 13.33333px
    width: 50px + 10pt; // => 10pt = 13.33333px
    width: 50px % 13.33333px;
}

转为 css 后

.container {
  width: 0;
  width: 2px;
  width: 2px;
  width: 50%/7;
  width: 1px;
  width: 5%;
  width: 10px;
  width: 63.3333333333px;
  width: 10.00001px;
}
/*# sourceMappingURL=index.css.map */

8.4 字符串运算

+ 可用于连接字符串

注意:如果有引号字符串(位于 + 左侧)连接无引号字符串,运算结果式有引号的,相反,无引号字符串(位于 + 左侧)连接有引号字符串,运算结果则没有引号。

$width: 100px;
.container {
    content: "foo" + bar;
    content: foo + "bar";
    content: foo + bar;
    content: "foo" + "bar";
}

转为 css 后

.container {
  content: "foobar";
  content: foobar;
  content: foobar;
  content: "foobar";
}
/*# sourceMappingURL=index.css.map */

⑨ 插值语句 #{ … } 的基本使用 ✅

可以用于

  • 选择器
  • 属性名
  • 属性值
  • 注释
$class-name: danger;
$attr: color;
$font-size: 12px;
$line-height: 30px;
$author: "一勺";

/*
    文件说明
    @author: #{$author}
*/

a.#{$class-name} {
    border-#{$attr}: #f00;
    font: #{$font-size} / #{$line-height} Helvetica;
}

转为 css 后

@charset "UTF-8";
/*
    文件说明
    @author: 一勺
*/
a.danger {
  border-color: #f00;
  font: 12px/30px Helvetica;
}
/*# sourceMappingURL=index.css.map */

⑨ Sass 常见函数的基本使用 ✅

小结

目录
相关文章
|
2月前
|
前端开发 开发者
CSS预处理器Less、Scss
【10月更文挑战第3天】
126 59
|
1月前
|
前端开发
create-react-app 如何使用 less/sass 和 react-css-modules?
本文详细介绍了在 create-react-app 项目中如何使用 less/sass 和 react-css-modules 来管理和应用样式。首先,通过安装相应依赖并配置 webpack 支持 less/sass;接着,介绍如何使用这些预处理器编写样式;最后,讲解了如何配置和使用 react-css-modules 实现样式的模块化管理,以及如何结合使用 less/sass 和 react-css-modules 提高开发效率和代码质量。
31 3
|
3月前
|
前端开发 开发者
在 Vite 中使用 CSS 预处理器的劣势是什么?
在 Vite 中使用 CSS 预处理器的劣势是什么?
|
2月前
|
前端开发 开发者
CSS的预处理器是什么?
CSS的预处理器是什么?
58 4
|
3月前
|
前端开发
在 Vite 中使用 CSS 预处理器的优势是什么?
在 Vite 中使用 CSS 预处理器的优势是什么?
|
2月前
|
存储 前端开发 开发者
深入了解 Sass 和 SCSS:CSS 预处理器的强大功能
Sass(Syntactically Awesome Stylesheets)是一个强大的 CSS 预处理器,为开发者提供了诸多高级特性,如变量、嵌套、混合、继承等,简化了 CSS 的编写和管理。SCSS 是 Sass 3 引入的新语法,完全兼容 CSS3,并增强了 Sass 的动态功能。本文详细介绍了 Sass 和 SCSS 的核心特性及其在实际开发中的应用,如变量定义、嵌套规则、混合、继承、以及常用的操作符与扩展功能。
51 0
|
2月前
|
前端开发 开发者 容器
Vue3中Sass的安装与使用指南:轻松上手CSS预处理器
Vue3中Sass的安装与使用指南:轻松上手CSS预处理器
313 0
|
5月前
|
前端开发 JavaScript
vue3【实战】创建项目、创建并提交代码到远程仓库,安装 SASS, 清除浏览器默认样式 reset-css, 清除模板代码,提升开发效率的必要集成
vue3【实战】创建项目、创建并提交代码到远程仓库,安装 SASS, 清除浏览器默认样式 reset-css, 清除模板代码,提升开发效率的必要集成
83 0
|
前端开发 JavaScript 安全
使用Sass来写OOCSS
自从2008年Nicole Sullivan提出Object-Oriented CSS(OOCSS)以来。它就成为一个领先的模块系统,用来组织你的CSS代码方式之一。 OOCSS不同于其他组织CSS代码方法,比如SMACSS或者BEM。通过将CSS代码和结构分离让你的模块可重用。事实上,我也通常将SMACSS与OOCSS混为一谈。其实John W. Long在The Sass Way上面写了很多篇有关于CSS模块化的教程。
153 0