Sass的使用和基础语法
sass安装
- 官网下载ruby的windows安装包,安装时勾选上添加到环境变量add ruby executables to your path。安装完成后打开命令行,
ruby -v
输出内容则安装完成。 - 添加国内sources,安装sass
gem sources --remove https://rubygems.org/
gem sources -a http://gems.ruby-china.org 国内的镜像
gem sources -l 查看current sources
gem install sass 安装sass
sass -v 查看sass版本
其他命令
gem update 一段时间后更新所有的ruby程序
gem list 列出本地安装的所有ruby程序包
gem install sass --version=3.3.0 安装特定版本的ruby程序包
gem uninstall sass --version=3.3.0 删除某一版本的ruby程序包
gem uninstall sass 删除sass
compass安装
gem install compass
compass -v
compass create project_name 创建一个项目
compass watch 实时监听sass文件的变化
Sass基础语法
- sass和scss文件的相互转化
sass-convert main.scss main.sass
sass-convert main.sass main.scss
- 变量
$开头,后面紧跟变量名,而变量值和变量名之间就需要使用冒号(:)分隔开,如果值后面加上!default则表示默认值。
$color:#fff;
$side:left;
//变量引用
.headline{
background-color:$color;
margin-#{$side}:5px; //变量在字符串中,要写在#{}中
}
可以将变量放在一个scss文件中,并用 @import引入,但是这个 @import并不是css中原生的 @import
- 计算
SASS允许在代码中使用算式,并且可以带单位
.headline{
margin:(500px/2);
}
- 引入
Sass的导入(@import)规则和CSS的有所不同,编译时会将@import
的scss文件合并进来只生成一个CSS文件。但是如果你在Sass文件中导入css文件如@import 'reset.css'
,那效果跟普通CSS导入样式文件一样,导入的css文件不会合并到编译后的文件中,而是以@import
方式存在。
所有的Sass导入文件都可以忽略后缀名.scss。一般来说基础的文件命名方法以_开头,如_mixin.scss。这种文件在导入的时候可以不写下划线,可写成@import "mixin"
多个引入可以用逗号隔开@import "variables","mixin","compass/reset";
。 - 嵌套
选择器嵌套
.main-sec{
font-family:$main-sec-ff;
.headline{
font-family: $main-sec-ff;
}
}
属性嵌套(有冒号)
.headline{
font:{
family: $main-sec-ff;
size: 16px;
}
}
父选择器的标识符&
在嵌套的代码块内,可以使用&引用父元素,如a:hover
可以写成
a {
color: blue;
&:hover {
color: red;
}
&.active {
color: orange;
}
}
- 注释
- 单行注释
//单行注释,sass文件编译后不保留
- 文档注释
/*文档注释,文件编译后保留.*/
中文的注释必须在scss文件头部启用编码声明:@charset "utf-8";
- 单行注释
- 混合器mixin
@mixin通过 @include来调用。
@mixin col-6{
width: 50%;
float: left;
}
.webdemo-sec{
@include col-6();
&:hover{
background-color: #f5f5f5;
}
}
可以传递参数,参数名以$符号开始,多个参数以逗号分开,也可以给参数设置缺省值。
@mixin col($width: 50%, $float: left){ //冒号后面是默认值
width: $width;
float: $float;
}
- 选择器继承
选择器继承是说一个选择器可以继承为另一个选择器定义的所有样式。这个通过 @extend语法实现。注意:@extend不能继承.A .B{}这样的选择器序列。
.hint{
border:1px solid #f00;
}
.error{
@extend .hint;
color: #f00;
}
//css样式
.hint, .error {
border: 1px solid #f00;
}
.error {
color: #f00;
}
不希望出现在css,仅用于继承的选择器可以使用%
%hint{
border:1px solid #f00;
}
.error{
@extend %hint;
color: #f00;
}
//css样式
.error {
border: 1px solid #f00;
}
.error {
color: #f00;
}
- @media
.webdemo-sec{
@include col-sm();
&:hover{
background-color: #f5f5f5;
}
}
.webdemo-sec{
@include col-sm();
&:hover{
background-color: #f5f5f5;
}
}
//编译得到
@media (min-width: 768px) {
.webdemo-sec {
width: 50%;
float: left;
}
}
- @at-root 跳出嵌套,将样式提升到最外层
.main-sec{
font-family:$main-sec-ff;
@at-root{
.headline{
font:{
family: $main-sec-ff;
size: 16px;
}
}
.detail{
font-size:12px;
}
}
}
//编译得到
.main-sec {
font-family: Arial, Verdana, Helvetica, sans-serif;
}
.headline {
font-family: Arial, Verdana, Helvetica, sans-serif;
font-size: 16px;
}
.detail {
font-size: 12px;
}
- @if指令可以判断变量的值,配套的还有 @else、@else if
@mixin col($width: 50%){
@if $width > 50%{
$width: 50%;
}
width: $width;
float: left;
}
.webdemo-sec{
@include col(80%);
&:hover{
background-color: #f5f5f5;
}
}
//编译得到
.webdemo-sec {
width: 50%;
float: left;
}
以上。
Sass的使用和基础语法的更多相关文章
- sass的安装和基础语法
安装 下载ruby安装包[官网非常慢ruby官网] ruby-2.3.3-x64-mingw32.7z 下载sass sass-3.7.4.gem 方法一: ruby压缩包,解压即可,在bin目录下, ...
- 关于sass的介绍和基本语法
引入 什么是sass?sass是css预处理器. 那预处理器又是什么?css本身不是一种编程语言,而预处理器是用一种专门的编程语言,进行网页样式设计,然后再编译成正常的CSS文件. 如今主流的预处理器 ...
- Swift与C#的基础语法比较
背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...
- iOS-----正则表达式的基础语法
正则表达式简单语法总结 一.什么是正则表达式 从概念上来说,正则表达式也是一门小巧而精炼的语言,它可以用来简化检索特定的字符串,替换特定字符等功能,有许多开发语言工具,都内嵌支持正则表达式.那么一个正 ...
- python之最强王者(2)——python基础语法
背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...
- emmet 系列(1)基础语法
emmet 系列(1)基础语法 emmet 是一个能显著提升开发html和css开发效率的web开发者工具 emmet基本上目前已知的编辑器都有相应的插件,各个编辑器的emmet插件的下载地址:点我下 ...
- Scala基础语法 (一)
如果你之前是一名 Java 程序员,并了解 Java 语言的基础知识,那么你能很快学会 Scala 的基础语法. Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的. 我 ...
- Java基础语法
java基础学习总结——基础语法1 一.标识符
- javascript中正则表达式的基础语法
× 目录 [1]定义 [2]特点 [3]元字符[4]转义字符[5]字符组[6]量词[7]括号[8]选择[9]断言[10]模式[11]优先级[12]局限性 前面的话 正则表达式在人们的印象中可能是一堆无 ...
随机推荐
- Request 接收参数乱码原理解析三:实例分析
通过前面两篇<Request 接收参数乱码原理解析一:服务器端解码原理>和<Request 接收参数乱码原理解析二:浏览器端编码原理>,了解了服务器和浏览器编码解码的原理,接下 ...
- 使用ab进行页面的压力测试
ab是apache自带的一个很好用的压力测试工具,当安装完apache的时候,就可以在bin下面找到ab 参数说明及示例 我们可以模拟100个并发用户,对一个页面发送1000个请求 输入命令:ab - ...
- UNIX/Linux打包,压缩 ,解压:
1.tar打包命令 ①tar cvf tarname.tar file1 file2 $ .log $ .log $ .log $ tar cvf alllog.tar *.log a .log 0K ...
- 轻松自动化---selenium-webdriver(python) (五)
本节要解决的问题: 层级定位 场景: 假如两个控件,他们长的一模样,还都叫“张三”,唯一的不同是一个在北京,一个在上海,那我们就可以通过,他们的城市,区,街道,来找到他们. 在实际的测试中也经常会遇到 ...
- 自制Https证书并在Spring Boot和Nginx中使用
白话Https一文中, 介绍了Https存在的目的和工作原理,但多是偏向于原理性的介绍,本文介绍如何一步一步自制一个能够通过浏览器认证的Https证书,并讲解在Spring Boot环境和Nginx环 ...
- .net后台模拟浏览器get/post请求
#region 后台模拟浏览器get/post请求 /// <summary> /// 发送请求方式 /// </summary> /// <param name=&qu ...
- 输入URL之后都发生了什么
输入URL之后都发生了什么 这个标题印象中已经有很多讨论了.也来说说这个话题. 从头开始,当你的电脑使用网线连接到网络的时候,我们都知道,这个时候你的电脑会获取一个IP,这个IP就是你的唯一标识了.好 ...
- Web实时通信
学习SignalR,可以从<实时数据显示--SignalR实例演示>http://www.cnblogs.com/insus/p/5619422.html 开始. 此篇只是把数据库的数据实 ...
- 呼叫外部js文件并使用其内部方法
很久没有学习jQuery了,都快忘记了.今天学习一个小功能,使用jQuery的$.getScript()方法,是读取外部js文件,读取之后,并执行js文件内的一个方法. 首先我们创建这个js文件,如i ...
- 不可或缺 Windows Native (14) - C++: 文件
[源码下载] 不可或缺 Windows Native (14) - C++: 文件 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 文件 示例CppIO2.h #prag ...