本文将介绍Sass的一些基本概念,比如说“变量”、“混合参数”、“嵌套”和“选择器继承”等。著作权归作者所有。

什么是Sass?

Sass是一门非常优秀的CSS预处语言,他是由Hampton Catlin创立的。它可以减化CSS的工作流,使开发者更加容易开发,维护CSS样式。

例如,你是否在特定的样式表中查找和替换一个十六进制的颜色而烦恼?或者你正在寻找一个计算器为多栏布局的宽度计算而头痛?(不用担心,Sass能帮你解决这样的烦恼)。

Sass和CSS非常相似,但是在Sass中是没有花括号({})和分号(;)的。

如下面的CSS:

#skyscraper_ad { display: block; width: 120px; height: 600px; } #leaderboard_ad { display: block; width: 728px; height: 90px; } 

在Sass中,上面的CSS代码你要写成下面这样:

#skyscraper_ad display: block width: 120px height: 600px
#leaderboard_ad display: block width: 728px height: 90px

Sass使用两个空格来定义嵌套的区别。

你现在看过了Sass是如何书写的,接下来我们一起看一些Sass方面的介绍,让Sass在你手中变得不再可怕。

变量(Variables)

在Sass中定义变量,是用“$”符号声明,然后后面跟变量名称。在这个例子中,定义变量“red”,在变量名后使用冒号(:),然后紧跟变量值:

$red: #ff4848

Sass还内置了函数功能,例如变暗(darken)和变亮(lighten),他们可以帮助你修改变量。

在这个例子中,段落要使用一个比“h1”标签更深的红色,就可以这样使用:

$red: #ff4848
$fontsize: 12px
h1color: $red
pcolor: darken($red,10%) 

你也可以在相同的变量上做加减运算的操作。如果我们想将颜色变黑,我们也可以在变量的基础上减一个十六进制的颜色,例如“#101”。如果我们想把字号调大“10px”,我们也可以在字号的变量基础上加上这个值。

/*加法和减法*/
color: $red - #101
font-size: $fontsize + 10px 

嵌套(Nesting)

Sass有两种嵌套规则:

选择器嵌套

选择器嵌套是Sass嵌套规则中的第一种。

Sass的嵌套类似于你的HTML嵌套:

$fontsize: 12px
.speaker.namefont:weight: boldsize: $fontsize + 10px.positionfont:size: $fontsize

如果你看了Sass生成的CSS,你可以看到“.name”嵌套在“.speaker”内,这里生成的CSS选择器是“.speaker .name”。

.speaker .name {font-weight: bold; font-size: 22px; } .speaker .position { font-size: 12px; } 

属性嵌套

属性嵌套是Sass嵌套的第二种

相同前缀的属性,你可以进行嵌套:

$fontsize: 12px
.speaker.namefont:weight: boldsize: $fontsize + 10px.positionfont:size: $fontsize

在上面的例子中,我们有一个“font:”,在新的一行增加两个空格放置他的属性(通常我们看到的是使用连字符“-”来连接)。

因此我们先写“font:”属性,然后断行空两格,写“weight:”属性,在CSS中就变成了“font-weight:”属性。

.speaker .name {font-weight: bold; font-size: 22px; } .speaker .position { font-size: 12px; } 

所有连字符的选择器都支持。

这种嵌套用来组织你的CSS结构是非常棒的,可以让你不在写一些重复的代码。

混合(Mixins)

混合是Sass中另一个很优秀的特性。混合可以让你定义一整块的Sass代码,甚至你可以给他们定义参数,更酷的是你还可以设置默认值。

使用关键词“@mixin”来定义Sass的混合,你可以你自己的喜好定义一个混合的名称。如果你需要设置一些参数,你还可以将参数设置到这些代码片段中;如果你需要设置默认值,你也可以在混合的代码片段中设置默认值。

调用混合代码片段,可以使用Sass中的关键词“@include”调用,并在其后面跟上你的混合代码片段的名称,你还可以使用括号,在里面设置一些参数。

来看一个简单的例子:

@mixin border-radius($amount: 5px)-moz-border-radius: $amount -webkit-border-radius: $amount border-radius: $amount h1 @include border-radius(2px) .speaker @include border-radius 

上面的Sass代码将转译成下面的CSS代码:

h1 {-moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px; } .speaker { -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; } 

我们给“h1”元素指定了一个特定的圆角值,但是并没有给“.speaker”指定任何值,因此他将使用的是默认值“5px”。

选择器继承

选择器的继承可以让你的选择器继承另一个选择器的所有样式风格,这是一个非常优秀的特性。

使用选择器的继承,要使用Sass的关键词“@extend”,后而跟上你需要继承的选择器,那么这个选择器就会继承另一个选择器的所有样式。(当然他们是有继承和被继承的关系)

h1border: 4px solid #ff9aa9
.speaker@extend h1border-width: 2px 

上面的Sass代码将转译成下面的CSS代码:

h1,
.speaker {border: 4px solid #ff9aa9; } .speaker { border-width: 2px; } 

尝试Sass

网上尝试

如果你的本地电脑没有安装Sass,你可以在网上尝试使用。

在转译之前,你需要选择底部的“Indented Syntax”选项。

安装

Sass是一个Ruby gem。如果你的本地已经安装了Ruby gems,那么可以在你命令终端直接运行:

gem install sass

Sass也可以使用命令行工具将Sass文件转译成CSS文件。

你可以键入“sass --watch sass_folder:stylesheets_folder”,这个时候你的Sass文件(文件扩展名必须是.sass)stylesheets_folder就会把转译的样式文件保存在“sass_folder”目录,当然你的sass文件必须保存在这个文件目录中。“--watch”选项的意思就是将这个目录中的sass文件转译成样式文件。

CSS转换成Sass

在现有的项目中通过“sass-convert”使用sass。

在终端进入你的目录中,键入“sass-convert --from css --to sass -R .”。将CSS转换成Sass。其中“-R”表示递归,“.”表示当前目录。

Scss

在这里我们只介绍了Sass的语法,然后还有一个新的名称叫SCSS或者Sassy CSS。不同的是SCSS看起来更像CSS,但他也像Sass一样具有变量、混合、嵌套和选择器继承等特性。

总结

在你组织和管理CSS时,Sass真的很优秀。还有个项目Compass,它在CSS框架中使用混合模式,而不是去修改你的HTML结构或者重新定义你的类名。

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
原文: https://www.w3cplus.com/css/the-absolute-beginners-guide-to-sass.html © w3cplus.com

转载于:https://www.cnblogs.com/lauzhishuai/p/9530296.html

【学习笔记】Sass入门指南相关推荐

  1. css 样式三元运算_CSS扩展语言——Sass入门指南

    一.Sass概况 今天来聊聊sass吧,之前用了很久的less,刚开始接触的时候感觉这东西就是个神器. 写CSS时间长了自然就能发现CSS在书写的时候的不足之处,不能嵌套,没有变量,更加不能像js那样 ...

  2. mybatis学习笔记(3)-入门程序一

    2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(3)-入门程序一 标签: mybatis [TOC] 工程结构 在IDEA中新建了一个普通的java项 ...

  3. nginx学习笔记-01nginx入门,环境搭建,常见命令

    nginx学习笔记-01nginx入门,环境搭建,常见命令 文章目录 nginx学习笔记-01nginx入门,环境搭建,常见命令 1.nginx的基本概念 2.nginx的安装,常用命令和配置文件 3 ...

  4. React学习笔记:入门案例

    React学习笔记:入门案例 React 起源于 Facebook 内部项目,因为市场上所有 JavaScript MVC 框架都不令人满意,公司就决定自己写一套,用来架设 Instagram 的网站 ...

  5. Linux操作系统学习笔记【入门必备】

    Linux操作系统学习笔记[入门必备] 文章目录 Linux操作系统学习笔记[入门必备] 1.Linux入门 2.Linux目录结构 3.远程登录 3.1 远程登录Linux-Xshell5 3.2 ...

  6. JavaScript学习笔记之入门篇

    JavaScript学习笔记之入门篇 JavaScript引入 1. 页面级 js: 2. 外部js文件: JavaScript变量 1. 变量的作用: 2. 声明变量: 3. 变量赋值: 4. 单一 ...

  7. javaSE学习笔记01 入门篇

    javaSE学习笔记01 入门篇 java语言概述 Java背景知识 java是 美国 sun 公司 在1995年推出的一门计算机高级编程语言. java早期称为Oak(橡树),后期改名为Java. ...

  8. dubbo入门学习笔记之入门demo(基于普通maven项目)

    注:本笔记接dubbo入门学习笔记之环境准备继续记录; (四)开发服务提供者和消费者并让他们在启动时分别向注册中心注册和订阅服务 需求:订单服务中初始化订单功能需要调用用户服务的获取用户信息的接口(订 ...

  9. Java学习笔记系列-入门篇-计算机基础

    Java学习笔记 Java学习笔记是一个持续更新的系列,工作多年,抽个空对自身知识做一个梳理和总结归纳,温故而知新,同时也希望能帮助到更多正在学习Java 的同学们. 本系列目录: 入门篇 计算机基础 ...

  10. Python学习笔记之入门基础

    课程链接:Python入门教程--基础阶段_哔哩哔哩_bilibili Python学习笔记 注释 单行注释: * 多行注释: 1.多行前面加# 2."""注释信息&qu ...

最新文章

  1. 学界 | 邢波团队提出 contrast-GAN:实现生成式语义处理
  2. IDA 逆向工程 反汇编使用
  3. hdu-1207(规律推导)
  4. 2、django管理网站
  5. Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询
  6. 前端学习(3128):react-hello-react之回调形式的ref
  7. 芯片公司急聘嵌入式软件精英人才
  8. unistd.h linux,Linux 标准库下的unistd.h
  9. Linux系统基础知识
  10. 邂逅StringIndexOutOfBoundsException
  11. K-摇臂赌博机算法与实现
  12. HDU 3065 病毒侵袭持续中(AC自动机 模板)题解
  13. 计算机数据库相关法规,法律法规数据库-详细页
  14. Houdini SOP节点
  15. wx.getUserProfile踩坑填坑大全,is not a function?fail can only be invoked by user TAP gesture?
  16. Lazy与Suspense
  17. 青春无敌?那只是一瞬间
  18. 若依配置教程(九)若依前后端分离版部署到服务器Nginx(Windows版)
  19. Kubernetes学习之Helm包管理器
  20. 室内声场计算机模拟的声线跟踪法和虚声源法,建筑物理课件.ppt

热门文章

  1. 位操作的应用:判断一个数是不是2的幂数,实现循环移位【位操作】(55)
  2. Android MVVM封装,MVVMFramework
  3. mysql虚拟机远程链接_windows下用navicat远程链接虚拟机Linux下MySQL数据库
  4. ping 不通容器 宿主_使用容器的正确方式,Docker在雪球的技术实践
  5. 青少年计算机学奥林匹克大赛,2019年第36届全国青少年信息学奥林匹克竞赛获奖规则...
  6. Cisco路由器操作命令汇总,看完全学会
  7. 亲历者说 | 完整记录一年多考拉海购的云原生之路
  8. 开放下载 | 《Knative 云原生应用开发指南》开启云原生时代 Serverless 之门
  9. Python使用循环实现1-100的和
  10. mysql导出linux,linux下mysql导出导入方法