sass认识

本文介绍了Sass的安装步骤及特色,详细解释了如何利用Sass进行嵌套、变量定义、混合使用等功能,并展示了控制指令和表达式的具体用法。

sass的安装

http://www.yiibai.com/sass/sass_installation.html
介绍了安装sass的过程,但是值的注意的是在装好ruby以后只需要在命令行执行gem install sass就可以安装sass 检测是否安装好sass -v
scss的简单使用页在上述的网页中。

Sass的特色

完全兼容css3
在css语言的基础上增加变量、嵌套、混合等功能
通过波函数进行颜色值和属性值的运算
提供控制指令等个高级功能
自定义输出格式

cSS的扩展

在sass中完全支持css

嵌套表示父级和子级的关系

sass

#mian p{
  color:#00ff00;
  width:97%;
  .redbox{
      background: #ff0000;
     color: #000000;
  }

css

#mian p {
  color: #00ff00;
  width: 97%; }
#mian p .redbox {
    background: #ff0000;
    color: #000000; }

引用父选择器&

sass

a{
  font-weight: bold;
  text-decoration:none;
  &:hover{
    text-decoration: underline;
    body.fire &{
      font-weight: normal;
    }
  }
}

css

a {
  font-weight: bold;
  text-decoration: none; }
  a:hover {
    text-decoration: underline; }
    body.fire a:hover {
      font-weight: normal; }
```、





<div class="se-preview-section-delimiter"></div>

嵌套属性
----
针对css中有一些属性遵循相同的命名空间,比如font-family   font-weight等
sass





<div class="se-preview-section-delimiter"></div>

.funk{
font:{
family: normal;
size: 30px;
weight: bold;
}
}

css





<div class="se-preview-section-delimiter"></div>

.funk {
font-family: normal;
font-size: 30px;
font-weight: bold; }






<div class="se-preview-section-delimiter"></div>

sass的脚本
=======





<div class="se-preview-section-delimiter"></div>

变量:$
----
sass





<div class="se-preview-section-delimiter"></div>

$width:300px;

main{

width: $width;
}

css





<div class="se-preview-section-delimiter"></div>

main {

width: 300px; }






<div class="se-preview-section-delimiter"></div>

sass支持的数据类型
-----------
数字、文本字符、颜色(blue #000000  rgba(三个参数))
布尔值 、空值(null)、值列表(1.5px 1em 0 2em)
maps   从一个值映射到另一个
**字符串**
使用  #{} interpolation(插值)时,将带引号的字符串编译为不带引号的字符串
**@mixin**定义函数的一个关键字  #{变量}   在函数中使用传进来的变量
sass





<div class="se-preview-section-delimiter"></div>

@mixin firefox-message(selector){  
   body.firefox #{
selector}:before{
content: “sjaisaj”;
}
}
@include firefox-message(“.header”)

css





<div class="se-preview-section-delimiter"></div>

body.firefox .header:before {
content: “sjaisaj”; }






<div class="se-preview-section-delimiter"></div>

插值#{}的使用
--------
sass





<div class="se-preview-section-delimiter"></div>

name:header; age:”border”;
p .#{name} {  
  #{
age}-color:blue;
}

css





<div class="se-preview-section-delimiter"></div>

p .header {
border-color: blue; }






<div class="se-preview-section-delimiter"></div>

控制和指令
=====





<div class="se-preview-section-delimiter"></div>

@import指令
---------

@import "foo.css"
@import "foo"
@import "http://foo.com/bar"
@import  url(foo)
@import指令可以被嵌套
example.scss




<div class="se-preview-section-delimiter"></div>

.example{
color: red;
}

style.scss





<div class="se-preview-section-delimiter"></div>

main{

@import “example”;
}

成为了css文件





<div class="se-preview-section-delimiter"></div>

main .example {

color: red; }






<div class="se-preview-section-delimiter"></div>

@media指令
--------
这个之林如果被嵌套在一个类里边,会自动浮动到顶层,带着嵌套它的类,这样会打破书写流
应该这样写
scss





<div class="se-preview-section-delimiter"></div>

@media screen {
.sidebar{
@media (orientation: landscape) {
width: 500px;
}
}
}


css





<div class="se-preview-section-delimiter"></div>

@media screen and (orientation: landscape) {
.sidebar {
width: 500px; } }






<div class="se-preview-section-delimiter"></div>

@extend指令
---------

**扩展选择器**

@extend通过在样式表中    出现被扩展选择器(.error)的地方插入例如了扩展选择器(.serious)
sass文件




<div class="se-preview-section-delimiter"></div>

.error{
border: 1px #f00;
background-color: #fdd;
}
.serious{
@extend .error;
border-width: 3px;
}
.error .instrusion{
font-weight: bold;
}

css文件





<div class="se-preview-section-delimiter"></div>

.error, .serious {
border: 1px #f00;
background-color: #fdd; }

.serious {
border-width: 3px; }

.error .instrusion, .serious .instrusion {
font-weight: bold; }

**多重扩展**
scss





<div class="se-preview-section-delimiter"></div>

.error{
border: 1px #f00;
background-color: #fdd;
}
.attention{
font-size: 3em;
background-color: #ff0;
}
.serions{
@extend .error;
@extend .attention;
border-width: 3px;
}

css





<div class="se-preview-section-delimiter"></div>

.error, .serions {
border: 1px #f00;
background-color: #fdd; }

.attention, .serions {
font-size: 3em;
background-color: #ff0; }

.serions {
border-width: 3px; }

**链式扩展**
scss





<div class="se-preview-section-delimiter"></div>

.error{
border: 1px #f00;

}
.serions{
@extend .error;
border-width: 3px;
}
.cirticl{
@extend .serions;
background-color: #fdd;
}

css





<div class="se-preview-section-delimiter"></div>

.error, .serions, .cirticl {
border: 1px #f00; }

.serions, .cirticl {
border-width: 3px; }

.cirticl {
background-color: #fdd; }






<div class="se-preview-section-delimiter"></div>

控制指令和表达式
========





<div class="se-preview-section-delimiter"></div>

@if和@else指令
-----------





<div class="se-preview-section-delimiter"></div>

type:monster;  
   p{  
     @if
type==ocean{
color: blue;
}@else if type==matadorcolor:red;@elseif type==monster{
color:green;
}
}

编译后的css





<div class="se-preview-section-delimiter"></div>

p {
color: green; }






<div class="se-preview-section-delimiter"></div>

@for指令
------
重复的输入一组样式,
@for $var from <start>  through <end>  start和end都包括
@for $var from <start>  to<end>    不包括end





<div class="se-preview-section-delimiter"></div>

@for i from 1 through 3{  
    .item-#{
i}{
width: 200px;
}
}

css





<div class="se-preview-section-delimiter"></div>

.item-1 {
width: 200px; }

.item-2 {
width: 200px; }

.item-3 {
width: 200px; }






<div class="se-preview-section-delimiter"></div>

@each指令
-------
格式:   @each in puma,dsds,dsds,{}





<div class="se-preview-section-delimiter"></div>

@each ema in puma,sasa,sas,ffd{  
  .#{
ema}-icon{
font-size: 20px;
}
}

css





<div class="se-preview-section-delimiter"></div>

.puma-icon {
font-size: 20px; }

.sasa-icon {
font-size: 20px; }

.sas-icon {
font-size: 20px; }

.ffd-icon {
font-size: 20px; }

**多重赋值**





<div class="se-preview-section-delimiter"></div>

@each animal, color,cursor in (puma,black,default),(sea-slug,blue,pointer,),(egret,white,move){  
   .#{
animal}{
color: color;cursor: cursor;
}
}

css





<div class="se-preview-section-delimiter"></div>

.puma {
color: black;
cursor: default; }

.sea-slug {
color: blue;
cursor: pointer; }

.egret {
color: white;
cursor: move; }






<div class="se-preview-section-delimiter"></div>

@while指令
--------





<div class="se-preview-section-delimiter"></div>

i:6;@while i>0{
.item-#{i}{  
      width: $i*2em;  
    }
i:$i - 2;
}

注意减号的两边都有空格
css





<div class="se-preview-section-delimiter"></div>

.item-6 {
width: 12em; }

.item-4 {
width: 8em; }

.item-2 {
width: 4em; }
“`

@mixin混入指令

混入指令允许您定义在整个样式表中重复使用的样式

@mixin混入指令

混入指令允许您定义在整个样式表中重复使用的样式,可以将经常使用的命令组合为一个@mixin

@mixin large-text{
  font:{
    family: Arial;
    size: 20px;
    weight: bold;
  };
  color: #ff0000;
}
.page_title{
     @include large-text;
}

css

.page_title {
  font-family: Arial;
  font-size: 20px;
  font-weight: bold;
  color: #ff0000; }

混合样式的嵌套

@mixin large-text{
  font:{
    family: Arial;
    size: 20px;
    weight: bold;
  };
  color: #ff0000;
}
@mixin cc{
    p{
      color: red;
    }
}
.page_title{
  @include large-text;
  @include  cc
}

css

.page_title {
  font-family: Arial;
  font-size: 20px;
  font-weight: bold;
  color: #ff0000; }
  .page_title p {
    color: red; }

为混合命令传入参数

@mixin sex-border($color,$width){
     border: {
       width: $width;
       color: $color;
     };
}
p{
  @include sex-border(blue,10px)
}

css

p {
  border-width: 10px;
  border-color: blue; }

为混入指令传入可变参数

@mixin sex-shadow($shadows...){
     -moz-box-shadow: $shadows;
     -webkit-box-shadow: $shadows;
     box-shadow: $shadows;
}
.shadows{
    @include sex-shadow(0px 4px 5px #666,2px 6px 10px #999)
}

css

.shadows {
  -moz-box-shadow: 0px 4px 5px #666, 2px 6px 10px #999;
  -webkit-box-shadow: 0px 4px 5px #666, 2px 6px 10px #999;
  box-shadow: 0px 4px 5px #666, 2px 6px 10px #999; }

将列表和map传递给混入指令

@mixin colors($text,$background,$border){
    color: $text;background-color: $background;border-color: $border;
}
$values:#ff0000,#00ff00,#0000ff;
.primary{
  @include colors($values...);
};
$value-map:(text:#00ff00,background:#0000ff,border:#ff0000);
.seconda{
   @include colors($value-map...)
}

css代码

.primary {
  color: #ff0000;
  background-color: #00ff00;
  border-color: #0000ff; }

.seconda {
  color: #00ff00;
  background-color: #0000ff;
  border-color: #ff0000; }

@content指令

内容快指令,这个指令可以被抽象的定义为,

@mixin apply-to-ie6-only{
    p {
      @content;
    }
}
@include apply-to-ie6-only{
  #logo{
    background-color:red;
  }
}

在后边使用的时候才指定了内容区的内容

p #logo {
  background-color: red; }

函数指令

@function 和@return

$a:20px;
$b:30px;
@function gird-width($n){
   @return $n * $a+$b * ($n - 1)
}
.sider{
    width:gird-width(5);
}

css

.sider {
  width: 220px; }

注意:不希望由sass生成css的我文件使用_fileName.scss来命名

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值