sass入门
SASS是一种CSS的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变得简单和可维护。
SASS 官网介绍:
sass is the most mature(成熟的),stable(稳定的),and powerful professional grade CSS extension language in the world.
官方文档:
http://sass-lang.com/documentation/file.SASS_REFERENCE.html
初学sass 遇到的最大阻碍可能是:需要搭建Ruby的运行环境和需要用命令行,其实这都非常简单。
一、安装
1、安装Ruby
SASS是Ruby语言写的,但是两者的语法没有关系。不懂Ruby,照样使用。只是必须先安装Ruby,然后再安装SASS。
安装SASS请参考SASS官方网站: http://sass-lang.com/install,windows下安装ruby:rubyinstaller.org。
安装时注意一点:勾选Add Ruby executables to your PATH,添加Ruby可执行路径到环境变量再安装。
安装成功Dos窗口输入ruby -v会出现版本信息。
2、安装sass
假定你已经安装好了Ruby,接着在命令行输入下面的命令:gem install sass
安装成功输入sass -v可以看到版本信息。
二、使用
1、编译
Note:注意sass的文件名后缀是scss而不是sass。
将style.scss编译成css
sass style.scss
将style.scss编译后保存成css文件
sass style.scss style.css
将style.scss编译后保存成压缩过的css文件
sass --style compressed style.scss style.css
--style控制编译风格,可选参数如下
- nested:嵌套缩进的css代码,它是默认值。
- expanded:没有缩进的、扩展的css代码。
- compact:简洁格式的css代码。
- compressed:压缩后的css代码。
sass监听文件或目录,源文件有变动,自动编译。
// watch a file
sass --watch input.scss:output.css
// watch a directory
sass --watch app/sass:public/stylesheetss
2、语法
2.1、注释
和less一样,sass有两张注释
// 单行注释,不会作为最终输出
/*
多行注释,以原生CSS的/*注释....*/形式作为最终输出
*/
在/*后面加一个感叹号,表示这是"重要注释"。即使是压缩模式编译,也会保留这行注释,通常可以用于声明版权信息。
/*!
重要注释!
*/
2.2、变量
一般会把颜色,字体,将来会重用的css值存为变量,方便统一修改和维护。
//定义变量
$primary-color:#333;
//变量调用
body{
color:$primary-color;
}
如果变量需要镶嵌在字符串之中,就必须需要写在#{}之中。
$side : left;
.rounded{
border-#{$side}-radius:5px;
}
2.3、嵌套
像html标签嵌套一样进行选择器嵌套写css,但是在生成css时有利有弊。
以下经典用法。
nav {
ul {
margin:;
padding:;
list-style: none;
} li { display: inline-block; } a {
display: block;
padding: 6px 12px;
text-decoration: none;
} }
会生成:
nav ul {
margin:;
padding:;
list-style: none; }
nav li {
display: inline-block; }
nav a {
display: block;
padding: 6px 12px;
text-decoration: none; }
属性也可以嵌套,比如border-color属性如下,border后面必须加冒号。
p{
border:{
color:red;
}
}
在嵌套的代码块内,可以使用&引用父元素。比如a:hover伪类,可以写成:
a{
&:hover{color:red;}
}
2.4、Less css片段和引入
目的:方便模块化和管理,小模块可维护性好。最终编译成一个css文件,这点比纯css的@import好。
弊端:多一个@import就多一个http请求。
片段命名:_partial.scss,引入用@import。
Demo:将_reset.scss import到base.scss。
_reset.scss如下
// _reset.scss
html,
body,
ul,
ol {
margin: 0;
padding: 0;
}
base.scss如下
// base.scss
@import 'reset';
body {
font: 100% Helvetica, sans-serif;
background-color: #efefef;
}
@import 'reset'即可。
2.5、mixin 重用代码块
在sass中可用定义重用的代码块,且可传参数,方便日后根据需求调用。
定义:通过@minxin name即可定义一个重复利用的样式。
调用:@include name
demo:
// mixin
@mixin box($H:30px,$col:red){
height:$H;
background-color:$col;
} div.box{
@include box; //使用默认值
}
div.box1{
@include box(50px,blue); //传参
}
编译结果:
div.box {
height: 30px;
background-color: red; } div.box1 {
height: 50px;
background-color: blue; }
css中有一些浏览器兼容性的代码,一些css3私有前缀等,此时使用mixins非常便捷,一个经典例子border-radius如下。
@mixin border-radius($radius){
-webkit-border-radius: $radius;
-moz-border-radius: $radius;
-ms-border-radius: $radius;
border-radius: $radius;
} .box{@include border-radius(10px);}
2.6、继承
继承让一个选择器的样式被另一个选择器复用和覆盖。是一个DRY的语法,也最sass中有用的语法之一。
语法:@extend 选择器
demo:一系列提示信息。
.message{
border:1px solid #ccc;
padding:10px;
color:#333;
}
.success{
@extend .message;
border-color:green;
}
.error{
@extend .message;
border-color:red;
}
.warning{
@extend .message;
border-color:yellow;
}
编译后的css【继承实现了css组合声明】
.message, .success, .error, .warning {
border: 1px solid #ccc;
padding: 10px;
color: #333; } .success {
border-color: green; } .error {
border-color: red; } .warning {
border-color: yellow; }
2.7、运算符
包括+,-,*,、,%。
demo:计算aside和article的宽度。
.container{
width:100%;
}
article[role="main"]{
float:left;
width:600px/960px*100%;
}
aside[role="complimentary"]{
float:right;
width:300px/960px*100%;
}
编译后css
.container {
width: 100%; } article[role="main"] {
float: left;
width: 62.5%; } aside[role="complimentary"] {
float: right;
width: 31.25%; }
2.8、颜色
sass中集成了大量的颜色函数,让生成颜色更加简单
lighten(#cc3, 10%) // #d6d65c
darken(#cc3, 10%) // #a3a329
grayscale(#cc3) // #808080
complement(#cc3) // #33c
demo:
$linkColor: #08c;
a {
text-decoration:none;
color:$linkColor;
&:hover{
color:darken($linkColor,10%);
}
}
编译成css
a {
text-decoration: none;
color: #08c; }
a:hover {
color: #006699; }
3、高级语法
3.1、条件
if判断何种条件用何种样式。
p{
@if 1+1==2{border:1px solid red;}
@if 5<2 {border:2px dotted red;}
}
if,else配合使用。
demo:判断颜色中亮度大于30%,设置背景色为黑色,否则为白色。
$color : #1875e7;
p{
@if lightness($color)>30%{
background-color:#000;
}@else {
background-color:#fff;
}
}
备注:lightness($color):从一个颜色中获取亮度(lightness)值;
3.2、 循环语句
for循环
@for $i from 1 to 10{
.border-#{$i}{
border:#{$i}px solid blue;
}
}
编译生成如下css
.border-1 { border: 1px solid blue; }
.border-2 {border: 2px solid blue; }
.border-3 {border: 3px solid blue; }
.border-4 {border: 4px solid blue; }
.border-5 {border: 5px solid blue; }
.border-6 {border: 6px solid blue; }
.border-7 {border: 7px solid blue; }
.border-8 {border: 8px solid blue; }
.border-9 {border: 9px solid blue; }
while循环
$i : 6;
@while $i > 0{
.item-#{$i} {width:2em * $i;}
$i : $i - 2;
}
编译成css
.item-6 {width: 12em; }
.item-4 {width: 8em; }
.item-2 {width: 4em; }
each遍历
@each $member in a,b,c,d{
.#{$member}{
background-image:url("images/#{$member}.jpg");
}
}
编译成css
.a {background-image: url("images/a.jpg"); }
.b {background-image: url("images/b.jpg"); }
.c {background-image: url("images/c.jpg"); }
.d {background-image: url("images/d.jpg"); }
3.3自定义函数
sass可自定义函数。
@function double($n){
@return $n * 2;
}
#sidebar{
width:double(5px);
}
编译后css
#sidebar {width: 10px; }
资源链接:
http://www.w3cplus.com/sassguide/
本文作者starof,因知识本身在变化,作者也在不断学习成长,文章内容也不定时更新,为避免误导读者,方便追根溯源,请诸位转载注明出处:http://www.cnblogs.com/starof/p/5226661.html有问题欢迎与我讨论,共同进步。
sass入门的更多相关文章
- CSS进阶之SASS入门指南
CSS进阶之SASS入门指南 随着跟着公司学习项目的前端的推进,越来越对好奇了许久的SASS垂涎欲滴,哈哈,可能这个词使用不当,没有关系,就是对SASS有一股神秘的爱!好了,闲话不多说 ...
- sass入门(一)
一].sass入门安装sass安装koala // sass中可以自定义变量 $fontStack: Microsoft Yahei; $primaryColor: #333; body { font ...
- Sass入门指南
转自:http://www.imooc.com/article/1413 css预处理器已经算不上一个新鲜的词了,当前比较有代表性的css预处理器有sass.less.stylus.关于三者选择问题一 ...
- 09-移动端开发教程-Sass入门
1. 引言 CSS3之前的CSS都大都是枚举属性样式,而编程语言强大的变量.函数.循环.分支等功能基本都不能在CSS中使用,让CSS的编程黯淡无光,Sass就是一种增强CSS编程的扩展语言(CSS4也 ...
- Sass入门及知识点整理
Sass 快速入门 | SASS 中文网 文档链接:https://www.sasscss.com/getting-started/ 前言 之前整理了一篇关于Less的,现在就来整理一下关于Sass的 ...
- SASS 入门笔记
参考资料: SASS 用法指南 SASS 语法 Sass Basics SASS_REFERENCE sass 有两种后缀名文件:一种后缀名为 sass,不使用大括号和分号:另一种就是我们这里使用的 ...
- sass入门教程
一.什么是SASS SASS是一种CSS的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变得简单和可维护. 二.安装和使用 2.1 安装 SASS是Ruby语言写的,必须先 ...
- sass 入门教程
1.引言 众所周知css并不能算是一们真正意义上的“编程”语言,它本身无法未完成像其它编程语言一样的嵌套.继承.设置变量等工作.为了解决css的不足,开发者们想到了编写一种对css进行预处理的“中间语 ...
- Sass入门——基本特性-基础
本文来自慕课网大漠 声明变量 三个部分:1.声明变量的符号"$"2.变量名称3.赋予变量的值 $brand-primary : darken(#428bca, 6.5%) !def ...
随机推荐
- C# 热敏打印机 Socket 网络链接 打印 图片 (二)
IPAddress ip = IPAddress.Parse("192.168.1.212"); IPEndPoint iport = );//9100为小票打印机指定端口 Soc ...
- 彻底解决“从客户端中检测到有潜在危险的Request.Form值”
类似设置validateRequest="false"的方法不推荐,因为应用程序需要显式检查所有输入,不方便. 1.前端使用encodeHtml函数对字符串进行编码,例: var ...
- 【原创】SQL常用函数
--值类型转换 ) --时间差 ,GETDATE()),GETDATE()) --加减指定时间 ,GETDATE()) --获取系统日期 select GETDATE() --生成不重复Id sele ...
- EF架构~EF异步改造之路~让DbContextRepository去实现异步接口
回到目录 返回异步与并行目录 上一讲中,我们定义了三个异步操作接口,这回我们将对它进行实现,而有一个基础知识需要大家清楚,那就是实现接口的方式,一般我们使用默认的方式(隐式实现),这种方法实现的接口方 ...
- 渡轮问题Ship
题目描述 Palmia河从东往西流过Palmia国,把整个国家分成南北两半.河的两岸各有N个城市,北岸的每一个城市都与南岸的一个城市互为友好城市,而且任意两个北岸城市的友好城市都不相同.每一对友好城市 ...
- 通过HttpListener实现简单的Http服务
使用HttpListener实现简单的Http服务 HttpListener提供一个简单的.可通过编程方式控制的 HTTP 协议侦听器.使用它可以很容易的提供一些Http服务,而无需启动IIS这类大型 ...
- rest api参数与content-type
最近为项目组提供rest api 时遇到了关于接口参数的传递问题,主要是没有充分考虑到第三方调用者的使用方式,应该尽量的去兼容公司之前提供出去的接口调用方式,这样可以降低第三方调用者的学习成本,尽管之 ...
- [Cordova] Plugin里使用iOS Framework
[Cordova] Plugin里使用iOS Framework 前言 开发Cordova Plugin的时候,在Native Code里使用第三方Library,除了可以加速项目的时程.也避免了重复 ...
- 推荐15个最好用的 JavaScript 代码压缩工具
JavaScript 代码压缩是指去除源代码里的所有不必要的字符,而不改变其功能的过程.这些不必要的字符通常包括空格字符,换行字符,注释以及块分隔符等用来增加可读性的代码,但并不需要它来执行. 在这篇 ...
- Javascript中数组方法和方法的扩展
最近一直在努力的恶补javascript中的各种知识,比如说闭包,作用域,继承,构造函数,变量,内置对象等概念.同时,也在学习着ES6的新知识.最近想给大家分享的就是数组实例方法的练习以及如何去扩展一 ...