码迷,mamicode.com
首页 > 其他好文 > 详细

sass学习笔记

时间:2015-10-06 00:45:09      阅读:302      评论:0      收藏:0      [点我收藏+]

标签:

一个sass转化css的软件:koala 

 

基本用法

1、变量:SASS允许使用变量,所有变量以$开头。如果变量需要镶嵌在字符串之中,就必须需要写在#{}之中。

 $side : left;

.rounded {
  border-#{$side
}-radius: 5px;
}

 

2、计算功能:
body {
  margin
: (14px/2);
  top
: 50px + 100px;
  right
: $var * 10%;
}

 3、嵌套:sass的嵌套包括两种:一种是选择器的嵌套;另一种是属性的嵌套。我们一般说起或用到的都是选择器的嵌套。

在嵌套的代码块内,可以使用&引用父元素。

 

 .car  {

     .bwm{
           color 
: red;
     
}
}

 //sass style

//-------------------------------
.fakeshadow 
{
  border
: {
    style: solid
;
    left
: {
      width: 4px
;
      color
: #888;
    
}
    right: 
{
      width
: 2px;
      color
: #ccc;
    
}
  }
}

//css style
//-------------------------------
.fakeshadow 
{
  border-style
: solid;
  border-left-width
: 4px;
  border-left-color
: #888;
  border-right-width
: 2px;
  border-right-color
: #ccc; 
}

 

 4、注释:sass有两种注释方式,一种是标准的css注释方式/* */,另一种则是//双斜杆形式的单行注释,不过这种单行注释不会被转译出来。

 


代码的重用 

1、继承sass中,选择器继承可以让选择器继承另一个选择器的所有样式,并联合声明。使用选择器的继承,要使用关键词@extend,后面紧跟需要继承的选择器。

//sass style
//-------------------------------
h1
{
  border
: 4px solid #ff9aa9;
}
.speaker
{
  @extend h1;
  border-width
: 2px;
}

//css style
//-------------------------------
h1,.speaker
{
  border
: 4px solid #ff9aa9;
}
.speaker
{
  border-width
: 2px;

} 

 

 2、@mixin——可以重用的代码块,sass中使用@mixin声明混合,可以传递参数,参数名以$符号开始,多个参数以逗号分开,也可以给参数设置默认值。声明的@mixin通过@include来调用。

 无参数mixin

 //sass style

//-------------------------------
@mixin center-block 
{
    margin-left
:auto;
    margin-right
:auto;
}
.demo
{
    @include center-block;
}

//css style
//-------------------------------
.demo
{
    margin-left
:auto;
    margin-right
:auto;
}

 

有参数mixin

 

调用时可直接传入值,如@include传入参数的个数小于@mixin定义参数的个数,则按照顺序表示,后面不足的使用默认值,如不足的没有默认值则报错。除此之外还可以选择性的传入参数,使用参数名与值同时传入。

 //sass style

//-------------------------------   
@mixin horizontal-line($border:1px dashed #ccc, $padding:10px)
{
    border-bottom
:$border;
    padding-top
:$padding;
    padding-bottom
:$padding;  
}
.imgtext-h li
{
    @include horizontal-line(1px solid #ccc);
}
.imgtext-h--product li
{
    @include horizontal-line($padding
:15px);
}

//css style
//-------------------------------
.imgtext-h li 
{
    border-bottom
: 1px solid #cccccc;
    padding-top
: 10px;
    padding-bottom
: 10px;
}
.imgtext-h--product li 
{
    border-bottom
: 1px dashed #cccccc;
    padding-top
: 15px;
    padding-bottom
: 15px;
}

 3、占位选择器%

从sass 3.2.0以后就可以定义占位选择器%。这种选择器的优势在于:如果不调用则不会有任何多余的css文件,避免了以前在一些基础的文件中预定义了很多基础的样式,然后实际应用中不管是否使用了@extend去继承相应的样式,都会解析出来所有的样式。占位选择器以%标识定义,通过@extend调用。

 //sass style

//-------------------------------
%ir
{
  color
: transparent;
  text-shadow
: none;
  background-color
: transparent;
  border
: 0;
}
%clearfix
{
  @if $lte7 {
    *zoom
: 1;
  
}
  &:before,
  &:after 
{
    content
: "";
    display
: table;
    font
: 0/0 a;
  
}
  &:after 
{
    clear
: both;
  
}
}
#header
{
  h1{
    @extend %ir;
    width
:300px;
  
}
}
.ir
{
  @extend %ir;
}

//css style
//-------------------------------
#header h1,
.ir
{
  color
: transparent;
  text-shadow
: none;
  background-color
: transparent;
  border
: 0;
}
#header h1
{
  width
:300px;
}

 如上代码,定义了两个占位选择器%ir和%clearfix,其中%clearfix这个没有调用,所以解析出来的css样式也就没有clearfix部分。占位选择器的出现,使css文件更加简练可控,没有多余。所以可以用其定义一些基础的样式文件,然后根据需要调用产生相应的css。

ps:在@media中暂时不能@extend @media外的代码片段,以后将会可以

 

 4、导入文件 (@import “xxx”)可以忽略后缀名.scss

sass的导入(@import)规则和CSS的有所不同,编译时会将@import的scss文件合并进来只生成一个CSS文件。但是如果你在sass文件中导入css文件如@import ‘reset.css‘,那效果跟普通CSS导入样式文件一样,导入的css文件不会合并到编译后的文件中,而是以@import方式存在。

 

所有的sass导入文件都可以忽略后缀名.scss。

 


高级用法 

 1、each循环 导入图片

单个字段list数据循环

 //sass style

//-------------------------------
$animal-list: puma, sea-slug, egret, salamander;
@each $animal in $animal-list 
{
  .#{$animal
}-icon {
    background-image
: url(‘/images/#{$animal}.png‘);
  }
}

//css style
//-------------------------------
.puma-icon 
{
  background-image
: url(‘/images/puma.png‘); 
}
.sea-slug-icon 
{
  background-image
: url(‘/images/sea-slug.png‘); 
}
.egret-icon 
{
  background-image
: url(‘/images/egret.png‘); 
}
.salamander-icon 
{
  background-image
: url(‘/images/salamander.png‘); 
}

 (多个字段list数据循环)

 //sass style

//-------------------------------
$animal-data: (puma, black, default),(sea-slug, blue, pointer),(egret, white, move);
@each $animal, $color, $cursor in $animal-data 
{
  .#{$animal
}-icon {
    background-image
: url(‘/images/#{$animal}.png‘);
    border: 2px solid $color;
    cursor: $cursor;
  }
}

//css style
//-------------------------------
.puma-icon 
{
  background-image
: url(‘/images/puma.png‘);
  border
: 2px solid black;
  cursor
: default; 
}
.sea-slug-icon 
{
  background-image
: url(‘/images/sea-slug.png‘);
  border
: 2px solid blue;
  cursor
: pointer; 
}
.egret-icon 
{
  background-image
: url(‘/images/egret.png‘);
  border
: 2px solid white;
  cursor
: move; 
}

 

 以上是比较实用的例子,更多应用可以看:http://www.cnblogs.com/jingwhale/p/4601115.html

 

 

 

 

 


sass学习笔记

标签:

原文地址:http://www.cnblogs.com/iwsx/p/4856575.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!