Sass入门:第二章
1.Sass语法格式
假设有这样一段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
这种语法格式没有CSS中常见的大括号和分号,容易出错。
而SCSS的语法格式
$font-stack : Helvetica , sans-serif;
$primary-color : #333; body{
font : 100% $font-stack;
color : $primary-color;
}
SCSS比Sass更接近CSS。
2.Sass编译
使用Sass进行开发,项目中还是引用".css"文件,Sass只是一个预处理工具,只有在需要的时候,才有效。
Sass编译有多种方法:
▶命令编译
▶GUI工具编译
▶自动化编译
3.命令编译
指使用电脑中的命令终端,通过输入Sass指令来编译Sass。这种编译方式是最直接也是最简单的一种。
▶单文件编译:
sass <要编译的Sass文件路径>/style.scss:<要输出CSS文件路径>/style.css
▶多文件编译:
sass sass/:css/
上面的命令表示将项目中"sass"文件夹中所有".scss"文件编译成".css"文件,并且将这些CSS文件都放在项目中"css"文件夹中。
▶缺点
在实际的编译过程中,上面的命令只能一次性编译。每次保存".scss"文件之后,都要重新执行一次这样的命令。解决的方法是在编译Sass时,开启"watch"功能,这样只要你的代码进行任何修改都能自动监听到代码的变化,并且编译出来。
sass --watch <要编译的Sass文件路径> / style.scss : <要输出的CSS文件路径> / style.css
例如:假设要把项目中的"bootstrap.scss"编译出"bootstrap.css"文件,并且将编译出来的文件放在"css"文件夹中,可以在命令终端中执行:
sass --watch
sass / bootstrap.scss : css / bootstrap.css
一旦bootstrap.scss文件有任何修改,只要重新保存了修改的文件,命令终端就能监听。
4.GUI界面工具编译
对于 GUI 界面编译工具,目前较为流行的主要有:
▶Koala (http://koala-app.com/)
▶Compass.app(http://compass.kkbox.com/)
▶Scout(http://mhs.github.io/scout-app/)
▶CodeKit(https://incident57.com/codekit/index.html)
▶Prepros(https://prepros.io/)
相比之下,推荐使用以下两个:
▶Koala (http://www.w3cplus.com/preprocessor/sass-gui-tool-koala.html)
▶CodeKit (http://www.w3cplus.com/preprocessor/sass-gui-tool-codekit.html)
5.自动化编译
▶Grunt配置Sass编译的示例代码
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
sass: {
dist: {
files: {
'style/style.css' : 'sass/style.scss'
}
}
},
watch: {
css: {
files: '**/*.scss',
tasks: ['sass']
}
}
});
grunt.loadNpmTasks('grunt-contrib-sass');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('default',['watch']);
}
▶Gulp 配置 Sass 编译的示例代码
var gulp = require('gulp');
var sass = require('gulp-sass');
gulp.task('sass', function () {
gulp.src('./scss/*.scss')
.pipe(sass())
.pipe(gulp.dest('./css'));
});
gulp.task('watch', function() {
gulp.watch('scss/*.scss', ['sass']);
});
gulp.task('default', ['sass','watch']);
6.常见编译错误
▶字符编译错误:在Sass编译的过程中,需要将文件编码设置为"utf-8".
▶路径中午字符错误:建议在项目中文件命名或者文件目录命名不要使用中文字符。
7.不同风格样式输出
Sass中编译的风格主要包括以下几种:
▶嵌套输出方式 nested
▶展开输出方式 expanded
▶紧凑输出方式 compact
▶压缩输出方式 compressed
例如:
nav {
ul {
margin:;
padding:;
list-style: none;
}
li { display: inline-block; }
a {
display: block;
padding: 6px 12px;
text-decoration: none;
}
}
(1)嵌套输出方式 nested
在编译的时候带上参数 " --style nested ":
sass --watch test.scss:test.css --style nested
编译出来的CSS样式风格:
nav ul {
margin:;
padding:;
list-style: none; }
nav li {
display: inline-block; }
nav a {
display: block;
padding: 6px 12px;
text-decoration: none; }
(2)展开输出方式 expanded:
在编译的时候带上参数 " --style expanded":
sass --watch test.scss:test.css --style expanded
编译出来的CSS样式风格:
nav ul {
margin:;
padding:;
list-style: none;
}
nav li {
display: inline-block;
}
nav a {
display: block;
padding: 6px 12px;
text-decoration: none;
}
这个输出的CSS样式风格和nested类似,只是大括号另起一行。
(3)紧凑输出方式 compact:
在编译的时候带上参数 " --style compact ":
sass --watch test.scss:test.css --style compact
编译后的CSS样式:
nav ul { margin:; padding:; list-style: none; }
nav li { display: inline-block; }
nav a { display: block; padding: 6px 12px; text-decoration: none; }
适合喜欢单行CSS样式格式的朋友。
(4)压缩输出方式 compressed
在编译的时候带上参数 " --style compressed ":
sass --watch test.scss:test.css --style compressed
编译出来的CSS样式风格:
nav ul{margin:;padding:;list-style:none}nav li{display:inline-block}nav a{display:block;padding:6px 12px;text-decoration:none}
压缩输出方式会去掉标准的Sass和CSS注释以及空格。
9.Sass调试
只要浏览器支持 "sourcemap" 功能就可以直接在浏览器中调试Sass文件。早一点的版本,需要在编译的时候添加 " --sourcemap "参数:
sass --watch --scss --sourcemap
style.scss : style.css
在Sass3.3版本之上,不需要添加这个参数:
sass --watch style.scss : style.css
在命令终端,你将看到一个信息:
>>> Change detected to: style.scss
write style.css
write style.css.map
就可以直接在浏览器调试Sass文件。
Sass入门:第二章的更多相关文章
- JAVA 入门第二章 (面对对象)
本渣渣鸽了一个月终于有时间更新.因为有c++基础,学起来这章还是比较简单的,本章我觉得是程序猿质变课程,理解面向对象的思想,掌握面向对象的基本原则以及 Java 面向对象编程基本实现原理,熟练使用封装 ...
- RabbitMQ 消息队列 入门 第二章(交换类型fanout)
1.安装完 RabbitMQ 之后,我们可以点击 http://localhost:15672/#/ 默认账号:guest 密码: guest 在这上面我们可以查看执行情况.管理连接.管理队列 ...
- Linux基础入门 第二章 Linux终端和shell
Linux终端 进入编辑IP地址命令:vi /etc/sysconfig/network-scripts/ifcfg-eth0 按键“i”:进行编辑 按键“ESC”:退出编辑 按键“:”:输入wq, ...
- MySQL----MySQL数据库入门----第二章 数据库和表的基本操作
2.1 数据库和数据库表的创建 ①数据库的创建(在数据库系统中划分一块存储数据的空间): create database 数据库名称 [charset 字符集]: ②数据库表的创建 use 数据库名 ...
- java入门第二章——java编程基础
习题 一.填空题 (p)1.java中的程序代码都必须在一个类中定义,类使用(class)关键字来定义. (p)2.布尔常量即布尔类型的两个值,分别是(true)和(false) (p18)3.jav ...
- ES6标准入门 第二章:块级作用域 以及 let和const命令
一.块级作用域 1.为什么需要块级作用域? ES5中只有全局作用域和函数作用域,带来很多不合理的场景. (1)内层变量可能会覆盖外层变量: var tem = new Date(); function ...
- chomp/undef/标量 --Perl 入门第二章
1.chomp 用途:去掉字符串 末尾的换行符 $text="a line of text \n" chomp($text) #去除行末的换行符 chomp() --本质上是一个 ...
- C++ Primer Plus学习:第二章
C++入门第二章:开始学习C++ 进入C++ 首先,以下是一个C++程序: //myfirst.cpp 显示一行文字 #include<iostream> //预处理器编译指令 int m ...
- Ionic 入门与实战之第二章第二节:Ionic 环境搭建之 Ionic Lab 使用
原文发表于我的技术博客 本文是「Ionic 入门与实战」系列连载的第二章第二节,主要对 Ionic Lab 工具作了介绍,并讲解了其使用方法,这也是一个开发 Ionic 比较好的调试工具. 原文发表于 ...
- Jenkins入门系列之——02第二章 Jenkins安装与配置
2014-12-08:已不再担任SCM和CI的职位,Jenkins的文章如无必要不会再维护. 写的我想吐血,累死了. 网页看着不爽的,自己去下载PDF.有问题请留言! Jenkins入门系列之——03 ...
随机推荐
- python 数据聚合与分组
前面讲完了字符处理,但对数据进行整体性的聚合运算以及分组操作也是数据分析的重要内容. 通过数据的聚合与分组,我们能更容易的发现隐藏在数据中的规律. 数据分组 数据的分组核心思想是:拆分-组织-合并 首 ...
- smbaclient
在linux中通过smbaclient获取windows的共享文件 列出windows的共享目录 $ smbclient -L .xxx -U administrator%password 进入指定共 ...
- mysql 保存emoji时报,数据库报错:Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...' for column 'review' at row 1
错误原因:我们可以看到错误提示中的字符0xF0 0x9F 0x98 0x84 ,这对应UTF-8编码格式中的4字节编码(UTF-8编码规范).正常的汉字一般不会超过3个字节,为什么为出现4个字节呢?实 ...
- Malware Defender(HIPS主动防御软件) V2.8 免费版
软件名称: Malware Defender(HIPS主动防御软件) V2.8 免费版 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win7 / Vista / Win2003 / Win ...
- Apache php无法开启php_curl
解决办法: 将php安装目录下的libeay32.dll,libssh2.dll,php5ts.dll,php_curl.dll,ssleay32.dll 复制到system32目录下 在httpd. ...
- 斗地主 (NOIP2015 Day1 T3)
斗地主 张牌,因为它可以连在K后, 总体思路为 先出炸弹和四带二 再出三带一 再把对牌和单牌出完 记录并更新Answer,后枚举顺子,并继续向下搜索. 注意:弄明白题意,题目描述不太清楚....另外, ...
- [Q]复制授权了文件但仍显示“未注册”问题(安装在非默认目录或目录包含中文)
1. 注意要将解压后的文件复制到CAD批量打图精灵安装目录,而不要复制文件夹,复制是提示是否需要覆盖,要选择覆盖. 2. 若通过第1步操作仍然显示“未注册”,则可能是由于安装目录含有中文或者不是默认目 ...
- ElasticSearch(6)-结构化查询
引用:ElasticSearch权威指南 一.请求体查询 请求体查询 简单查询语句(lite)是一种有效的命令行_adhoc_查询.但是,如果你想要善用搜索,你必须使用请求体查询(request bo ...
- C# 语言规范_版本5.0 (第9章 命名空间)
1. 命名空间 C# 程序是利用命名空间组织起来的.命名空间既用作程序的“内部”组织系统,也用作“外部”组织系统(一种向其他程序公开自己拥有的程序元素的方法). using 指令(第 9.4 节)用来 ...
- 第一个Android crackme(2016-05)
第一个Android crackme 0x00 背景 最近在学习Android的逆向,把基本的环境搭好后,看了看<第一行代码--Android>,然后就按照非虫大牛的<Android ...