惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 叶小钗
V
Visual Studio Blog
雷峰网
雷峰网
J
Java Code Geeks
博客园 - 三生石上(FineUI控件)
人人都是产品经理
人人都是产品经理
MyScale Blog
MyScale Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
B
Blog RSS Feed
C
Check Point Blog
博客园 - Franky
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 【当耐特】
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
V2EX
D
Docker
IT之家
IT之家
博客园 - 聂微东
腾讯CDC
U
Unit 42
Microsoft Security Blog
Microsoft Security Blog
The Cloudflare Blog

Jiajun的技术笔记

你好,2026! TiDB 源码阅读(六):TiDB Coprocessor 源码解析 性能优化的核心思想 TiDB 源码阅读(五):索引 TiDB 源码阅读(四):AST、逻辑计划、物理计划 CockroachDB Serverless Architecture podman 无故退出 Cursor Control-L (CTRL-L) Keyboard Shortcuts in Terminal Replace docker with podman Using xmonad with xfce4 A RC script for freebsd frpc 自己动手写一个k8s controller AI 会取代你的(编程)岗位吗? 自建DERP服务器提升Tailscale连接速度(使用Nginx转发) 自动升级Docker容器 再读《程序员修炼之道-从小工到专家》 让浏览器下载文件 再读《软件随想录》/《黑客与画家》/《软技能》 HTTP 压力测试中的 Coordinated Omission 2的补码 编程语言中的 context 是什么? flutter macOS 构建出错 Flatpak 使用小记 Golang CAS 操作是怎么实现的 PostgreSQL 当MQ来使用 Clash 结合 工作VPN 的网络设计 使用 PostgreSQL 搭建 JuiceFS PostgreSQL 配置优化和日志分析 有GitHub Copilot?那就可以搭建你的ChatGPT4服务 窗口函数的使用(以PG为例)
后端工程师学前端(五): SASS
Jiajun Huang · 2019-07-13 · via Jiajun的技术笔记

此前我们学习了基本的CSS和HTML的知识,因此我们已经可以开始构建基本的页面, 但是现实工程中有一个问题,即CSS使用的越来越多,代码维护难度也上升。

因此2015-2018年左右,开始有了轰轰烈烈的前端工程化。

这一篇是阅读SASS官方指南之后的笔记

现在(2019年),基本上要用的工具都定型了,我们作为渔翁,可以直接上手开始使用。今天我们介绍一个CSS预处理器: SASS。

SASS

CSS的本质是DSL,它是一套规则,因此书写的时候就是一条条的规则,不像编程语言那样可以继承。而SASS的作用就是解决这个问题, SASS编译之后产生css。

SASS有两种语法:SCSS和SASS。SASS只是CSS的语法糖;SCSS是超集。官方推荐SCSS,不过我觉得使用SASS就够了。

首先看一下如何使用:

$ sudo pacman -S sassc  # 安装sass编译器,我安装的是C语言实现版本
$ cat > hello.sass
$font-stack: Helvetica, sans-serif
$primary-color: #333

body
    font: 100% $font-stack
    color: $primary-color
$ sassc -t compressed hello.sass hello.min.css
$ cat hello.min.css
body{font:100% Helvetica,sans-serif;color:#333}

接下来看看SASS的语法:

  • 支持 ///* */ 两种注释

  • 使用美元符号来声明变量:

    $font-stack: Helvetica, sans-serif
    $primary-color: #333
    
    body
    font: 100% $font-stack
    color: $primary-color
    
  • 通过缩进来嵌套:

    nav
    ul
    margin: 0
    padding: 0
    list-style: none
    
    li
    display: inline-block
    
    a
    display: block
    padding: 6px 12px
    text-decoration: none
    
  • 通过使用下划线开头的文件名来将一个sass文件作为可导入的模块;通过使用 @import 来导入

    // _reset.sass
    // _reset.sass
    html,
    body,
    ul,
    ol
    margin:  0
    padding: 0
    
    // base.sass
    @import reset
    body
    font: 100% Helvetica, sans-serif
    background-color: #efefef
    
  • 通过使用 % 定义可复用组件,然后使用 @extend 继承:

    /* This CSS will print because %message-shared is extended. */
    %message-shared
    border: 1px solid #ccc
    padding: 10px
    color: #333
    
    
    // This CSS won't print because %equal-heights is never extended.
    %equal-heights
    display: flex
    flex-wrap: wrap
    
    
    .message
    @extend %message-shared
    
    
    .success
    @extend %message-shared
    border-color: green
    
    
    .error
    @extend %message-shared
    border-color: red
    
    
    .warning
    @extend %message-shared
    border-color: yellow
    
  • 使用 +, -, *, /, % 进行运算:

    .container
    width: 100%
    
    
    article[role="main"]
    float: left
    width: 600px / 960px * 100%
    
    
    aside[role="complementary"]
    float: right
    width: 300px / 960px * 100%
    

参考资料:


相关文章