学习Sass 的基本语法规则[Sass和compass学习笔记]
自从发现可编程的css语法 Sass和基于Sass的css库compass
一个给我的感觉像c# 另外一个给我的感觉像.NET Framework,一切都为了提升开发效率和降低开发大型web的门槛。
当web开发趋势迈进WebApi+Js 时代,compass和Sass 会不会成为web开发的标配?这个得实际开发检验下.
预处理
当web站点变的越来越复杂。
先是html 复杂了----》动态编程语言解决方案
js复杂了---》jq和dojo 等解决方案
css现在也变的复杂了,但是css本身没有编程的功能,所以面向css预处理的中间件出现了,想compass和Sass这种想编写程序一样编写css,然后通过预处理,处理为浏览器可以解析的css,降低了构建更加强大的web站点复杂度。
变量
变量和js、c# 里面的变量差不多,都是用来存储东西了,我这样的菜鸟写css,最头疼一次修改好多高度,颜色等等,有了变量,即使是最笨的方法,编写css也比以前快多了了
在 sass 里面变量的标识符是$,话说和jq是一样的标识符呢
例如
$font-stack: Helvetica, sans-serif;
$primary-color: #333; body {
font: 100% $font-stack;
color: $primary-color;
}
这样编写的sass版的css在经过compass预处理后是可以正常解析的css,而且每一行还会有行号,用于对照比较,刚开始非常担心处理前和处理后如何联系到一起,排查BUG,后来发现有行号,so 方便
body {
font: 100% Helvetica, sans-serif;
color: #333;
}
嵌套和作用域
以前写css,最蛋疼的就是 css默认规则是一行一行的,BUT css超过一屏幕,我就搞不清楚这些css 是怎么个关系。。。
现在好了 有{} 嵌套和作用域,像写程序一样写css
纳尼,作用域?上面都有了变量跟定得有作用域,不知道作用域的,百度下
sass 的嵌套 和预处理后的css 是按照html对css的继承和处理规则来的,看着比以前舒服多了
nav {
ul {
margin: 0;
padding: 0;
list-style: none;
} li { display: inline-block; } a {
display: block;
padding: 6px 12px;
text-decoration: none;
}
}
预处理后 是这样的
nav ul {
margin: 0;
padding: 0;
list-style: none;
} nav li {
display: inline-block;
} nav a {
display: block;
padding: 6px 12px;
text-decoration: none;
}
对于作用域,官方的demo 没有解释,这个是在书里面看到的
例如
div{
$font-stack: Helvetica, sans-serif;
$primary-color: #333;
} li{
$font-stack: Helvetica, sans-serif;
$primary-color: #333;
}
在不同 {} 作用域内的变量互不影响
模块
看到这个单词 Partials,真的是喜极而泣啊,以前随便打开一个css文件都是1k行以上,本菜鸟在里面看代码,就好像在迷宫里面迷路一样,
sass的模块化是将需要模块化的css放在一个以下划线开始的单独的文件里面例如_partial.scss,使用这个模块的时候用@import导入即可
不支持模块化css的css框架都是耍流氓!
Import 导入模块
在css中使用一个Import 便会像服务器端发起一个请求,在sass中使用Import,compass 可以导入一个模块,而且会合并这个导入的文件.
例如, 重置浏览器默认样式的模块
// _reset.scss html,
body,
ul,
ol {
margin: 0;
padding: 0;
}
导入是这样导入的
/* base.scss */ @import 'reset'; body {
font-size: 100% Helvetica, sans-serif;
background-color: #efefef;
}
生成的css 是浏览器可以解析的,而且带行号,方便对比
html, body, ul, ol {
margin: 0;
padding: 0;
} body {
background-color: #efefef;
font-size: 100% Helvetica, sans-serif;
}
sass 中的函数方法--Mixins
函数 有函数名 参数 可选选参数,返回值等
在sass中 这些统统都有!具体我还在看书,这是官方的demo,足以发现mixins 是挺好用的
定义一个方法
@mixin border-radius($radius) {
-webkit-border-radius: $radius;
-moz-border-radius: $radius;
-ms-border-radius: $radius;
border-radius: $radius;
}
使用一个方法
.box { @include border-radius(10px); }
可以发现用@mixin开头 后跟方法 名称 括号内为参数,{}中间为返回内容,
使用@include 后跟方法名和括号,便可以调用这个方法
compass预处理后 生成的css如下
.box {
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
-ms-border-radius: 10px;
border-radius: 10px;
}
继承
此继承为sass组织代码的继承规则,非html解析和呈现css时候的继承规则,不要搞混了。。。,虽然生成的代码符合css继承规则。。。。。。
继承 使用的关键字是@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;
}
预处理后生成的代码
.message, .success, .error, .warning {
border: 1px solid #cccccc;
padding: 10px;
color: #333;
} .success {
border-color: green;
} .error {
border-color: red;
} .warning {
border-color: yellow;
}
操作符
sass 支持+、-、*、/、% 加减乘除和求余,是在是太劲爆了,这样在写宽度和高等等地方有更加方便了
看看官方的demo
.container { width: 100%; } article[role="main"] {
float: left;
width: 600px / 960px * 100%;
} aside[role="complimentary"] {
float: right;
width: 300px / 960px * 100%;
}
预处理后的代码
.container {
width: 100%;
} article[role="main"] {
float: left;
width: 62.5%;
} aside[role="complimentary"] {
float: right;
width: 31.25%;
}
学习Sass 的基本语法规则[Sass和compass学习笔记]的更多相关文章
- Sass 的基本语法规则
转自:http://www.cnblogs.com/qqloving/p/3676852.html 自从发现可编程的css语法 Sass和基于Sass的css库compass 一个给我的感觉像c# 另 ...
- Sass和compass 安装 和配合grunt实时显示 [Sass和compass学习笔记]
demo 下载http://vdisk.weibo.com/s/DOlfkrAWjkF/1401192855 为什么要学习Sass和compass ?提高站独立和代码产品化的绝密武器,尤其是程序化cs ...
- Sass和Compass学习笔记系列之Sass
最近在慕课网学习Sass和Compass,学习链接地址:https://www.imooc.com/learn/364,现在整理笔记如下: 一.使用Sass和Compass的优点: a.使用Sass和 ...
- Sass简单、快速上手_Sass快速入门学习笔记总结
Sass是世界上最成熟.稳定和强大的专业级css扩展语言 ,除了Sass是css的一种预处理器语言,类似的语言还有Less,Stylus等. 这篇文章关于Sass快速入门学习笔记. 资源网站大全 ht ...
- Sass入门——简介+语法格式及编译调试
本文来自慕课网大漠. Sass简介 Sass和SCSS区别 1.后缀名不同,很好理解 2.Sass以严格的缩进语法规则书写,不带大括号和分号:而SCSS的语法规则和CSS的语法很类似. Sass: $ ...
- 【css预处理器】------sass的基本语法------【巷子】
001.安装sass 1.删除gem源:gem sources --remove https://rubygems.org/ 2.添加国内源:gem sources -a http://gems.ru ...
- Python学习系列(四)Python 入门语法规则2
Python学习系列(四)Python 入门语法规则2 2017-4-3 09:18:04 编码和解码 Unicode.gbk,utf8之间的关系 2.对于py2.7, 如果utf8>gbk, ...
- Lua 学习之基础篇十<Lua 常见的语法规则>
下面讲一些lua 常见的用法和规则,可以为学习理解lua带来帮助,最后附上的部分是lua的基本操作,基本包含所有常用语法语句. 1. if判断 lua把 nil 和false 视为"假&qu ...
- sass,compass学习笔记总结
最近在进行百度前端技术学院的任务,知道自己基础薄弱,可没想到弱到这种地步,同时在安装各种软件的同时遇到了各种坑,查阅了各种资料,一个个解决的时候也发现自己凌乱了.学习总结,在脑海中形成自己的学习系统才 ...
随机推荐
- C++内存动态分配
https://www.percona.com/blog/2012/07/05/impact-of-memory-allocators-on-mysql-performance/ https://su ...
- 浅谈ARP协议以及应用
0. 前言 本章主要简单的介绍ARP的协议格式,主机如何发送和处理ARP报文,以及免费ARP. 1. ARP协议原理 ARP,全称Address Resolution Protocol,地址解析协议, ...
- Bash 中的 $0 在什么时候不是 argv[0]
每个 C 程序都有一个 main 函数,每个 main 函数都有一个 argv 参数,这个参数是一个字符串数组,这个数组的值是由该 C 程序的父进程在通过 exec* 函数启动它时指定的. 很多人说 ...
- Python基础知识(一)
- Mac Pro 利用PHP导出SVN新增或修改过的文件
先前在 Windows 操作系统下,习惯用 TortoiseSVN 导出新增或修改过的文件([相当实用]如何让TortoiseSVN导出新增或修改过的文件 ),最近换成了 Mac Pro 笔记本电脑, ...
- PHP上传(单个)文件示例
通过 PHP,可以把文件上传到服务器. 创建一个文件上传表单 允许用户从表单上传文件是非常有用的. 请看下面这个供上传文件的 HTML 表单: <html> <body> &l ...
- 实现统一用户体验的BaseActivity
对一个规模较大的App开发团队来说,保持统一的代码规范是个好的事情,同时,保持统一的用户体验规范也是个好的事情. 当用户进入一个页面时,一般会有以下交互场景:场景1, 初始化loading,页面从se ...
- linux Mint截图软件 Shutter
安装shutter: sudo add-apt-repository ppa:shutter/ppa sudo apt-get update sudo apt-get install shutter ...
- 医学CT图像特征提取算法(matlab实现)
本科毕设做的是医学CT图像特征提取方法研究,主要是肺部CT图像的特征提取.由于医学图像基本为灰度图像,因此我将特征主要分为三类:纹理特征,形态特征以及代数特征,每种特征都有对应的算法进行特征提取. 如 ...
- SQL,Linq,Lambda之间的转换练习
1.查询Student表中的所有记录的Sname.Ssex和Class列. SQL:select sname,ssex,class from Students linq:from s in Stude ...