FE: Sass and Bootstrap 3 with Sass

Sass简介

Sass是CSS的预处理语言;提供了变量定义、函数定义、函数调用、类继承、嵌套(CSS层级关系)及代码引入功能。css

 

Sass安装指南

MAC

OS X 10.10.3
 
终端
1 -> gem -v
2    2.0.14
3 
4 -> sudo gem install sass
5  
6 -> sass -v
7    Sass 3.4.13 (Selective Steve)

 

WIN

Windows 7 x64html

 

须要安装ruby,而后就能够使用gem了。ruby传送门:http://rubyinstaller.org/bootstrap

 

命令行缓存

1 -> gem -v
2    2.4.5
3    
4 -> gem sources -l
5    *** CURRENT SOURCES ***
6    https://ruby.taobao.org/ 
7    
8 -> gem install sass

PS:sass

1. 强烈建议将gem sources改成https://ruby.taobao.org/;改的方法参考后文“MAC可能遇到的错误”中的命令ruby

2. 若添加https://ruby.taobao.org/后,仍然出错,使用gem sources -l命令查看当前全部源,使用gem sources --remove将默认源删除ide

 

MAC可能遇到的错误

sudo gem install sass时出现错误
1. ERROR:  Could not find a valid gem 'sass' (>= 0), here is why:
          Unable to download data from https://rubygems.org/ - Errno::ETIMEDOUT: Operation timed out - connect(2) (https://rubygems.org/latest_specs.4.8.gz)
 
缘由:被和谐了
解决:更改ruby源
 
1 -> gem sources
2    https://rubygems.org/
3 -> gem sources --remove https://rubygems.org/
4 -> gem sources --a https://ruby.taobao.org/
 
2. ERROR:  While executing gem ... (NoMethodError) undefined method `size' for nil:NilClass
 
缘由:缓存问题
解决:clear gem cache
 
1 -> cd /Library/Ruby/Gems/2.0.0/cache
2 -> sudo rm sass-3.4.13.gem

 

Bootstrap with Sass安装指南

MAC

1 -> gem install bootstrap-sass -v 3.3.2.0
2 -> cd /Library/Ruby/Gems/2.0.0/gems/bootstrap-sass-3.3.2.0/assets/stylesheets

 

WIN

1 gem install bootstrap-sass -v 3.3.2.0
2 cd C:\Ruby22-x64\lib\ruby\gems\2.2.0\gems\bootstrap-sass-3.3.2.0\assets\stylesheets

PS:Ruby22-x64是Ruby安装文件夹函数

 

bootstrap with sass相关文件在stylesheets文件夹下,拷贝到本身项目下使用便可;以下图所示。PS:我把stylesheets更名成了bootstrapSass :)ui

 

Sass使用指南

<最重要的事项开头说>Sass编译输出css
1 -> sass sample.scss output.css

如开篇所说Sass是CSS的扩展语言,其提供了变量定义、函数定义、函数调用、类继承、嵌套(CSS层级关系)及代码引入功能,下面逐一介绍其功能用法。spa

变量定义:$

sample.scss

1 $border-radius-base: 4px !default;

函数定义:@mixin

sample.scss

1 @mixin border-left-radius($radius) {
2   border-bottom-left-radius: $radius;
3      border-top-left-radius: $radius;
4 }

函数调用:@include

sample.scss

1 .front-btn-group {
2   @include border-left-radius(0);
3 }

output.css

1 .front-btn-group {
2   border-bottom-left-radius: 0;
3   border-top-left-radius: 0;
4 }

类继承:@extend

sample.scss

1 .message {
2   border: 1px solid #ccc;
3   padding: 10px;
4   color: #333;
5 }
6 .success {
7   @extend .message;
8   border-color: green;
9 }

output.css

1 .message, .success {
2   border: 1px solid #ccc;
3   padding: 10px;
4   color: #333; }
5 
6 .success {
7   border-color: green;
8 }

PS:Sass3.4.13(截止目前最新版)在media query中不能使用@extend

嵌套

sample.scss

1 .front-btn-group {
2   .btn {
3       border: 1px solid #ccc;
4   }
5 }

output.css

1 .front-btn-group .btn {
2   border: 1px solid #ccc;
3 }

&引用父类

sample.scss

1 .front-btn-group .btn:first-child {
2     margin-left: 0;
3     &:not(:last-child) {
4         @include border-right-radius(0);
5     }
6 }

output.css

1 .front-btn-group .btn:first-child {
2   margin-left: 0;
3 }
4 .front-btn-group .btn:first-child:not(:last-child) {
5     border-bottom-right-radius: 0;
6     border-top-right-radius: 0;
7 }

代码引入:@import

sample.scss

1 @import "bootstrapSass/bootstrap/mixins/border-radius";
2 .front-btn-group {
3   @include border-left-radius(0);
4 }
output.css
1 .front-btn-group {
2   border-bottom-left-radius: 0;
3   border-top-left-radius: 0;
4 }
PS:
1. border-left-radius定义在_border-radius.scss文件中
2. @import引入能产生css代码的scss文件,则被引入scss文件所产生的css也会被引入到当前scss生成的css文件中
3. 至于不能产生css代码的scss文件,参考bootstrap,如纯$变量定义文件:_variables.scss,如纯mixins定义文件:_border-radius.scss
 

结语

Sass入门相对简单,官方短短几屏介绍,已将Sass的功能全数道来,多是由于CSS语言自己简单吧
 

资料

http://sass-lang.com/:Sass main page
http://sass-lang.com/guide:Sass official guide
http://www.ruanyifeng.com/blog/2012/06/sass.html : 阮一峰 SASS用法指南