标签:
学习Sass之前,应该要知道css预处理器这个东西,css预处理器是什么呢?
Css预处理器定义了一种新的语言将Css作为目标生成文件,然后开发者就只要使用这种语言进行编码工作了。预处理器通常可以实现浏览器兼容,变量,结构体等功能,代码更加简洁易于维护。
那么css预处理器与Sass有什么关系呢,Sass就是属于css预处理器中的一种,还有两款他们分别是Less和 Stylus,这里就不做过多的介绍了.
Compass是Sass的工具库,详情请点击这里
$ gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/
gem install compass
来安装compass,安装compass的时候,也会把sass一起装上.compass -v
查看是否安装成功,安装成功会在控制台输出版本号.sass -v
查看是否安装sass成功,安装成功会在控制台输出版本号.sass <sass file> <css file>
1.body {
2. background-color: #f00; }
3.
4..person, .son {
5. height: 100px; }
6.
7./*# sourceMappingURL=demo1.css.map */
1./* line 1, ../sass/demo1.scss */
2.body {
3. background-color: #f00;
4.}
5.
6./* line 4, ../sass/demo1.scss */
7..person, .son, .banner {
8. height: 100px;
9.}
10.
11./* line 7, ../sass/demo1.scss */
12..son, .banner {
13. height: 100px;
14.}
15.
1./* line 1, ../sass/demo1.scss */
2.body { background-color: #f00; }
3.
4./* line 4, ../sass/demo1.scss */
5..person, .son, .banner { height: 100px; }
6.
7./* line 7, ../sass/demo1.scss */
8..son, .banner { height: 100px; }
9.
1.body{background-color:red}.person,.son,.banner{height:100px}.son,.banner{height:100px}
sass --watch <sass file>:<css file>
sass --watch <sass folder>:<css folder>
compass create folderName
compass compile
命令就可以编译了,编译好的文件会自动放在stylesheets
文件夹内compass watch
compass watch --force
C:\Ruby22-x64\lib\ruby\gems\2.2.0\gems\sass-3.4.20\lib\sass\engine.rb
Encoding.default_external = Encoding.find(‘utf-8‘)
!global
,否则如果在另一个块级作用域使用此变量会报错.1.// scss
2.body {
3. /*$color: red;
4. color: $color; 局部变量,下面访问不到, 所以编译会报错,如果想要下面能够访问到的话. 只需要后面加上!global就可以了*/
5. $color: red !global; /*这样就可以吧局部变量变为全局变量*/
6. color: $color;
7.}
8.
9.footer {
10. color: $color;// 这里也不会报错
11.}
!default
$color: red
,那么第二次继续赋值为$color: green
,此时$color
的值为green
, 如果第二次赋值的时候在变量后面加上一个!default
标识的话,就不会覆盖上次的赋值.这说明,加上!default
标识的语句会被优先编译和赋值.1.// scss
2.$fontSize: 12px;
3.$fontSize: 16px;
4..one {
5. font-size: $fontSize;
6.}
7.// 生成的css
8.body { color: red; }
9.footer { color: red; }
10..one { font-size: 16px; }
!default
1.// scss
2.$fontSize: 12px;
3.$fontSize: 16px !default;
4..one {
5. font-size: $fontSize;
6.}
7.// 生成的css
8.body { color: red; }
9.footer { color: red; }
10..one { font-size: 12px; }
11.
nth(variable,index)
;1.// scss
2.$color: red;
3.$maps: (borderColor: red, backgroundColor: blue);
4.$paddings: 10px 20px 30px 40px;
5.$padding1: 3px 20px 30px 40px;
6.body {
7. color: $color;
8.}
9.
10.footer {
11. color: $color;
12. padding: $paddings;
13. padding-left: nth($padding1,1);
14.}
15.
16.// 生成的css
17.
18.body { color: red; }
19.footer { color: red; padding: 10px 20px 30px 40px; padding-left: 3px; }
map-get(variable, key)
$maps: (borderColor: red, backgroundColor: blue);
1.// scss
2.$color: red;
3.$paddings: 10px 20px 30px 40px;
4.$padding1: 3px 20px 30px 40px;
5.$maps: (borderColor: red, backgroundColor: blue);
6.body {
7. color: $color;
8.}
9.
10.footer {
11. color: $color;
12. padding: $paddings;
13. padding-left: nth($padding1,1);
14. border-color: map-get($maps, borderColor);
15. background-color: map-get($maps, backgroundColor);
16.}
17.
18.// 生成的css
19.body { color: red; }
20.footer { color: red; padding: 10px 20px 30px 40px; padding-left: 3px; border-color: red; background-color: blue; }
#{变量名}
1.// scss
2.$className: container; // 变量的特殊用法
3.$bgc: background-color;
4..#{$className} {
5. width: 100px;
6. height: 100px;
7. #{$bgc}: $color;
8.}
9.// 生成的css
10..container { width: 100px; height: 100px; background-color: red; }
1.//scss
2.$font-size: 19px;
3..font-size {
4. font-size: $font_size;
5.}
6.// 生成的css
7..font-size { font-size: 19px; }
1.// scss
2.@import "css.css";
3.@import "http://xxx";
4.@import url(css.css);
5.// 生成的css
6.@import url(css.css);
7.@import "http://xxx";
8.@import url(css.css);
1.// 这里我新建了一个文件名称叫做_part1.scss
2.
3.// _part1.scss 文件的样式
4.$fontFamily: ‘微软雅黑‘;
5..body {
6. font-family: $fontFamily;
7.}
8.
9.// 在demo1.scss中导入
10.@import "part1"; // 这样直接写,就会导入_part1.scss中的样式,这是约定.
11.
12.
13.// demo1文件生成了以下的css
14./* line 2, ../sass/_part1.scss */
15..body { font-family: "微软雅黑"; }
@at-root
跳出嵌套 @at-root
只能跳出选择器嵌套,不能跳出@media
和@support
@at-root(without: media)
和@at-root(without: support)
all
表示所有的rule
表示常规的media
表示mediasupport
表示support,目前@support还无法广泛的使用@at-root
,其实就是@at-root(without: rule)
1.body {
2. a {
3. height: 100px;
4. &:hover {
5. background-color: green;
6. }
7. // 跳出常规样式,对应着下面的行号 8
8. @at-root .container {
9. height: 100px;
10. }
11. @media(min-width: 768px) {
12. // 跳出media和常规样式
13. @at-root(without: media rule) {
14. .container { // 这里对应下面的行号14
15. height: 100px;
16. }
17. }
18. // 下面的样式只跳出了media 没有跳出常规样式,如果需要跳出常规样式的话需要设置,rule
19. @at-root(without: media) {
20. .container { // 这里对应行号20
21. width: 1000px;
22. }
23. }
24. }
25. }
26. @media(max-width: 1000px) {
27. // 默认是跳出 rule
28. @at-root .container{ // 对应行号28
29. height: 1000px;
30. }
31. // 下面这句跳出media
32. @at-root(without: media rule) {
33. .container { // 对应行号33
34. width: 500px;
35. }
36. }
37. }
38.}
39.
40.
41.// css
42.@charset "UTF-8";
43./* line 2, ../sass/demo2.scss */
44.body a { height: 100px; }
45./* line 4, ../sass/demo2.scss */
46.body a:hover { background-color: green; }
47./* line 8, ../sass/demo2.scss */
48..container { height: 100px; }
49./* line 14, ../sass/demo2.scss */
50..container { height: 100px; }
51./* line 20, ../sass/demo2.scss */
52.body a .container { width: 1000px; }
53.
54.@media (max-width: 1000px) { /* line 28, ../sass/demo2.scss */
55. .container { height: 1000px; } }
56./* line 33, ../sass/demo2.scss */
57..container { width: 500px; }
&
和 @at-root
的嵌套用法1.// scss
2. @at-root .container {
3. color: red;
4. @at-root nav & {
5. color: blue;
6. }
7. }
8.
9.// out css
10..container { color: red; }
11.nav .container { color: blue; }
@extend selector
,代码如下1.//scss
2..alert {
3. height: 30px;
4.}
5..alert-info {
6. @extend .alert;
7. color: #D9EDF7;
8.}
9.// out css
10..alert, .alert-info { height: 30px; }
11..alert-info { color: #D9EDF7; }
@extend selector1, selector2…………
1.// scss
2..alert {
3. height: 30px;
4.}
5..bgc {
6. background-color: #f5f5f5;
7.}
8..alert-info {
9. @extend .alert, .bgc;
10. color: #D9EDF7;
11.}
12.
13.// out css
14..alert, .alert-info { height: 30px; }
15..bgc, .alert-info { background-color: #f5f5f5; }
16..alert-info { color: #D9EDF7; }
c
继承b
,b
继承a
,那么c
同时拥有b
和a
的属性.这看起来像一条链条1.// scss
2..one {
3. border: 1px solid red;
4.}
5..two {
6. @extend .one;
7. color: red;
8.}
9..three {
10. @extend .two;
11. background-color: #f5f5f5;
12.}
13.
14.// out css
15..one, .two, .three { border: 1px solid red; }
16..two, .three { color: red; }
17..three { background-color: #f5f5f5; }
.one + .two
).one .two {}
)交叉继承
.1.a span{
2. height: 100px;
3.}
4.div .container {
5. @extend a, span;
6.}
7.a span, div .container span, a div .container, div a .container, div .container .container { height: 100px; }
1.// scss 这样写将会出错 ,
2.// .three1 {width: 100px;} // 将media写在这里将会出错
3.@media screen and (min-width:320px) and (max-width:639px){
4. .three1 {width: 100px;} // 写在这里下面的才可以继承
5. .container {
6. @extend .three1;
7. height: 100px;
8. }
9.}
%
表示占位选择器, 不会生成到架构里面,只有用到它的时候才会生成1.// scss
2.%message {height: 30px;}
3..message-danger {
4. @extend %message;
5. color: red;
6. font-size: 18px;
7. height: 30px;
8.}
9.
10.// out css
11..message-danger { height: 30px; }
12..message-danger { color: red; font-size: 18px; height: 30px; }
好了基础篇完结了,接下来是进阶之路,依次会介绍数据类型,变量操作和内置函数等等, 写博客好费劲,我要坚持,坚持,咬牙坚持.作者的水平有限,文中若有疏漏,还请多多批评..谢谢!
标签:
原文地址:http://www.cnblogs.com/songyaqi/p/5195777.html