Sass是一种CSS预处理语言。CSS预处理语言是一种新的专门的编程语言,编译后形成正常的css文件,为css增加一些编程特性,无需考虑浏览器的兼容性(完全兼容css3),让css更加简洁、适应性更强,可读性更佳,更易于代码的维护等诸多好处。

CSS预处理语言有Scss(Sass) 和Less、Postcss。

Scss和Sass

sass一开始用的是一种缩进式的语法格式

采用这种格式文件的后缀名是.sass

在sass3.0版本后我们常用的是sassy css语法,扩展名是.scss,更接近与css语法

区别:

  • 后缀名不同 .sass和.scss
  • 语法不同,请看下面

新版:

/*新版本
多行文本注释*/ //新版本
//单行文本注释 @import "base"; @mixin alert{
color:red;
background:blue;
} .alert-warning{
@include alert;
} ul{
font-size:15px;
li{
list-style:none;
}
}

老版本:

/*新版本
多行文本注释 //新版本
单行文本注释 @import "base" =alert
color:red
background:blue .alert-warning
+alert ul
font-size:15px
li
list-style:none

变量

变量的意义

在sass里我们可以定义多个变量来存放颜色、边框等等的样式,这样就可以在下面想要使用样式的时候使用变量了

这样的优点就是便于维护,更改方便


变量的使用

可以通过$来定义变量,在变量名字中可以使用-和_来作为连接,并且-和_是可以互通的,就是用起来一模一样。

变量的值可以是字符串、数字、颜色等等,在变量里还可以使用其他变量,使用的时候直接写变量名就好了

例如

$primary-color:#ff6600;
$primary-border:1px solid $primary_color; div.box{
background:$primary-color;
} h1.page-header{
border:$primary-border;
}

css写法---》

div.box {
background: #ff6600;
} h1.page-header {
border: 1px solid #ff6600;
}

嵌套的使用

合理的使用嵌套语法,可以使我们编写代码更为快捷

假设我们想写这样的css:

.nav {
height: 100px;
}
.nav ul {
margin: 0;
}
.nav ul li {
float: left;
list-style: none;
padding: 5px;
}

在sass里我们可以这样写

.nav{
height:100px;
ul{
margin:0;
li {
float:left;
list-style:none;
padding:5px;
}
}
}

大家会发现,写出来的代码父和子之间都有空格隔开,如果我们需要给a加上伪类的话我们这样写

.nav{
height:100px;
a{
color:#fff;
:hover{
color:#ff6600;
}
}
}

在里面就会出现这样的情况

.nav a :hover {
color: #ff6600;
}

我们发现在a和:hover之间有了空格,这样是不好的,所以我们需要在写的时候在:hover之前把a加上,这样就需要用到在之类里引用父类选择器的方式,我们可以用&符号代替父类

例如:

.nav{
height:100px;
a{
color:#fff;
&:hover{
color:#ff6600;
}
}
}

这样就好了,下面来个完整的代码:

.nav{
height:100px;
ul{
margin:0;
li{
float:left;
list-style:none;
padding:5px;
}
a{
display:block;
color:#000;
&:hover{
color:#f60;
background:red;
}
}
} & &-text{
font-size:15px;
}
}

css写法-----》

.nav {
height: 100px;
}
.nav ul {
margin: 0;
}
.nav ul li {
float: left;
list-style: none;
padding: 5px;
}
.nav ul a {
display: block;
color: #000;
}
.nav ul a:hover {
color: #f60;
background: red;
}
.nav .nav-text {
font-size: 15px;
}

嵌套属性

我们可以把一些复合属性的子属性来嵌套编写,加快编写速度,例如

body{
font:{
family:Helvitica;
size:15px;
weight:bold;
}
}
.nav{
border:1px solid red{
left:none;
right:none;
}
} .page-next{
transition:{
property:all;
delay:2s;
}
}

css写法-----》

body {
font-family: Helvitica;
font-size: 15px;
font-weight: bold;
} .nav {
border: 1px solid red;
border-left: none;
border-right: none;
} .page-next {
transition-property: all;
transition-delay: 2s;
}

mixin 混合

你可以把它想象成一个有名字的定义好的样式

每一个mixin都有自己的名字,类似于js里的函数定义方法如下

@mixin 名字(参数1,参数2...){
...
}

使用方法是在其他选择器css样式里通过@include引入,其实就相当于将mixin里的代码写入到这个选择器的css里,如下:

@mixin alert {
color:#f60;
background-color:#f60;
a{
color:pink;
}
&-a{
color:red;
}
} .alert-warning{
@include alert;
}

css写法-----》

.alert-warning {
color: #f60;
background-color: #f60;
}
.alert-warning a {
color: pink;
}
.alert-warning-a {
color: red;
}

刚才是没有参数的mixin,mixin也可以拥有参数,需要注意的是:

  • 形参的名字前要加$
  • 传参的时候只写值的话要按顺序传
  • 传参的时候不想按顺序的话需要加上形参名字

例如:

@mixin alert($color,$background) {
color:$color;
background-color:$background;
a{
color:darken($color,10%);//把颜色加深百分之十
}
} .alert-warning{
@include alert(red,blue);
} .alert-info{
@include alert($background:red,$color:blue);
}

css写法------》

.alert-warning {
color: red;
background-color: blue;
}
.alert-warning a {
color: #cc0000;
} .alert-info {
color: blue;
background-color: red;
}
.alert-info a {
color: #0000cc;
}

继承拓展 extend

如果我们有一个选择器想要拥有另一个选择所有的东西,不管是样式还是子元素等等,可以使用@extend来继承

大家需要注意的是,++b继承a的时候,a的子元素设置了样式,也会给b的子元素设置样式++,达到完全一样的情况,例如:

.alert {
padding:5px;
} .alert a {
font:{
weight:bold;
size:15px;
}
} .alert-info {
@extend .alert;
backgournd:skyblue;
}

css写法----》

.alert, .alert-info {
padding: 5px;
} .alert a, .alert-info a {
font-weight: bold;
font-size: 15px;
} .alert-info {
backgournd: skyblue;
}

partials

在以前咱们编写css的时候,一个css引入另一个css需要使用@import,其实这是不好的,会多发一次http请求,影响咱们站点的响应速度。

在sass里,咱们可以把小的sass文件分出去,叫做partials,在某个sass里通过@import ‘partials名’去引入,注意路径哟,这样的话就可以把partials里的代码引到咱们大的sass里一起编译

  • 需要注意的是 partials的文件名前要加_
_base.scss :
body{
margin:0;
padding:0;
}
style.scss :
@import "base";

.alert {
padding:5px;
} .alert a {
font:{
weight:bold;
size:15px;
}
} .alert-info {
@extend .alert;
backgournd:skyblue;
}

css写法----------->

body {
margin: 0;
padding: 0;
} .alert, .alert-info {
padding: 5px;
} .alert a, .alert-info a {
font-weight: bold;
font-size: 15px;
} .alert-info {
backgournd: skyblue;
}

这样的话我们就可以把模块化的思想引入到sass里了


comment注释

sass里的注释有三种

  • 多行注释
  • 单行注释
  • 强制注释

多行注释:压缩后不会出现在css里 /* */

单行注释: 不会出现在css里 //

强制注释:压缩后也会出现在css里 /*! */

sass的基础使用方法就介绍到这里,文章持续更新,后续更新sass高阶用法,关注公众号第一时间阅读。

【项目实战】sass使用基础篇(上)的更多相关文章

  1. SpringBoot图文教程「概念+案例 思维导图」「基础篇上」

    有天上飞的概念,就要有落地的实现 概念+代码实现是本文的特点,教程将涵盖完整的图文教程,代码案例 每个知识点配套自测面试题,学完技术自我测试 本文初学向,所以希望文中所有的代码案例都能敲一遍 大哥大姐 ...

  2. Sass/Scss 基础篇

    Sass/Scss 基础篇 总结Sass学习到的内容 应用Sass/Scss前,环境配置 首先下载Ruby (http://rubyinstaller.org/downloads) 通过命令下载sas ...

  3. 【转】Shell编程基础篇-上

    [转]Shell编程基础篇-上 1.1 前言 1.1.1 为什么学Shell Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, Linux/UNIX系统的底层及基础应 ...

  4. 前端开发工程师 - 03.DOM编程艺术 - 第1章.基础篇(上)

    第1章.基础篇(上) Abstract:文档树.节点操作.属性操作.样式操作.事件 DOM (Document Object Model) - 文档对象模型 以对象的方式来表示对应的html,它有一系 ...

  5. .net 开源模板引擎jntemplate 实战演习:基础篇之入门

    一.简介 模板引擎是Web开发中非常重要的一环,它负责将页面上的动态内容呈现出最终的结果展现给前端用户,在asp.net mvc中,我们最熟悉的就是Razor了,作为官方的视图引擎(视图引擎不等同于模 ...

  6. Redis项目实战---应用及理论(上)---redis基础知识介绍

    redis(Remote Dictionary Server)   一.原理及特性层面:     1.优势:        1)数据加载在内存中,执行速度快, 数据结构类似于HashMap,HashM ...

  7. Sass之一(基础篇)

    源码链接:http://pan.baidu.com/s/1o8M51hCSass 学习Sass之前,应该要知道css预处理器这个东西,css预处理器是什么呢? Css预处理器定义了一种新的语言将Css ...

  8. 新一代分布式实时流处理引擎Flink入门实战之先导理论篇-上

    @ 目录 概述 定义 为什么使用Flink 应用行业和场景 应用行业 应用场景 实时数仓演变 Flink VS Spark 架构 系统架构 术语 无界和有界数据 流式分析基础 分层API 运行模式 作 ...

  9. Shell编程基础篇-上

    1.1 前言 1.1.1 为什么学Shell Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, Linux/UNIX系统的底层及基础应用软件的核心大都涉及Shell脚 ...

随机推荐

  1. Mysql 实例:mysql语句练习50题(普通sql写法)

    为了练习sql语句,在网上找了一些题,自己做了一遍,收益颇多.很多地方换一种思路,有更好的写法,欢迎指正. 题目地址:https://blog.csdn.net/fashion2014/article ...

  2. 机器学习实战基础(十五):sklearn中的数据预处理和特征工程(八)特征选择 之 Filter过滤法(二) 相关性过滤

    相关性过滤 方差挑选完毕之后,我们就要考虑下一个问题:相关性了. 我们希望选出与标签相关且有意义的特征,因为这样的特征能够为我们提供大量信息.如果特征与标签无关,那只会白白浪费我们的计算内存,可能还会 ...

  3. Thymeleaf模板引擎学习

    开发传统Java WEB项目时,我们可以使用JSP页面模板语言,但是在SpringBoot中已经不推荐使用JSP页面进行页面渲染了.从而Thymeleaf提供了一个用于整合Spring MVC的可选模 ...

  4. JavaScript动画实例:曲线的绘制

    在“JavaScript图形实例:曲线方程”一文中,我们给出了15个曲线方程绘制图形的实例.这些曲线都是根据其曲线方程,在[0,2π]区间取一系列角度值,根据给定角度值计算对应的各点坐标,然后在计算出 ...

  5. java大数据最全课程学习笔记(3)--HDFS 简介及操作

    目前CSDN,博客园,简书同步发表中,更多精彩欢迎访问我的gitee pages 目录 HDFS 简介及操作 HDFS概述 HDFS产出背景及定义 HDFS优缺点 HDFS组成架构 HDFS文件块大小 ...

  6. 事件循环 event loop 究竟是什么

    事件循环 event loop 究竟是什么 一些概念 浏览器运行时是多进程,从任务管理器或者活动监视器上可以验证. 打开新标签页和增加一个插件都会增加一个进程,如下图:  浏览器渲染进程是多线程,包 ...

  7. DDD之5限界上下文-定义领域边界的利器

    上图是一张普通地图,最刺眼的就是边界? 非常好奇地图绘制工程师是如何描绘如此弯曲多变的边界的?强制行政区域还是人群历史原因自然的人以群分? 我们再换个视角,对工程师或者架构师来说,微服务的边界如何划分 ...

  8. Docker 概念-1

    阅读本文大概需要15分钟,通过阅读本文你将知道一下概念: 容器 什么是Docker? Docker思想.特点 Docker容器主要解决什么问题 容器 VS 虚拟机 Docker基本概念: 镜像(Ima ...

  9. 21天学通PythonPDF高清完整版免费下载|百度云盘

    百度云盘:21天学通PythonPDF高清完整版免费下载 提取码:nqa9 豆瓣评分: 书籍封面: 内容简介  · · · · · · <21天学通Python>全面.系统.深入地讲解了P ...

  10. idea 配置多个tomcat引发的血案

    javax.management.InstanceNotFoundException: Catalina:type=Server 修改tomcat端口时却仍是8080 没有使用在idea tomcat ...