sass基础用法

摘要:
cssFileDirectory变量SASS使用$开始定义变量$white:body{color:}操作SASS允许使用公式$min-left:body{margin-left:}嵌套SASS允许嵌套规则div{//选择器嵌套p{color}//属性嵌套margin:over{color:}。测试{@includepage;

SASS是什么

传统的CSS是一种单纯的描述性样式文件,然而SASS可以对CSS进行预编译处理。 在SASS源码中可以使用变量、函数、继承等动态语言的特性,并且可以编译成CSS文件。

安装与使用

安装

由于sass是ruby写的,所以想要使用sass就需要安装ruby环境。然后再使用gem安装sass。 输入下面的命令进行安装sass:

gem install sass

可以使用sass -v命令查看sass的版本。

使用

新建一个后缀名为.scss源码文件,就可以编辑sass源码了。 然后使用下面的命令可以将源码文件编译转换为css并显示在屏幕上。

sass test.scss

也可以在后面加上后缀名为.css的文件名,就可以在当前目录生成css文件。如下:

sass test.scss test.css

.sass.scss这两种的区别在于.sass文件对代码的排版有着非常严格的要求,而且没有大括号,没有分号。

命令参数

--style:编译风格 sass提供四种编译风格选项:

  • nested:嵌套缩进的css代码,它是默认值。
  • expanded:没有缩进的、扩展的css代码。
  • compact:简洁格式的css代码。
  • compressed:压缩后的css代码。

e.g.

sass test.scss test.css --style compressed

--watch:监听文件变动 sass可以监听源文件变动,并自动生成编译后的版本。 e.g.

//监听单个文件
sass --watch test.scss:test.css
//监听目录
sass --watch sassFileDirectory:cssFileDirectory

变量

SASS使用$开头定义变量

$white:#FFFFFF;
body{
    color: $white;
}

如果需要将变量插入到字符串中,需要将变量写在#{}

$imgUrl:"../img/test.png";
body{
    background-image: url(#{$imgUrl});
}

运算

SASS允许在代码中使用算式

$min-left:10px;
body{
    margin-left:$min-left+20px;
}

嵌套

SASS允许嵌套规则

div{
    //选择器嵌套
    p{
        color:#FFFFFF;
    }
    //属性嵌套
    margin:{
        left:10px;
    }
    //伪类嵌套
    &:hover{
        color:#F4F4F4;
    }
}

编译成CSS样式为:

div {
  margin-left: 10px;
}
div p {
  color: #FFFFFF;
}
div:hover {
    color: #F4F4F4;
}

继承

SASS可以使用@extend继承于另一个选择器。

.page{
    background-color:#F7F7F7;
}
.div1{
    @extend .page;
    color:#FFFFFF;
}

Mixin

SASS提供Mixin类似“函数”的重用代码块。 使用@mixin定义样式代码块,然后使用@include调用该样式。 不同于@extend的是Mixin定义样式不会编译输出在CSS样式中,并且可以指定参数和默认值。

//不带参数的mixin
@mixin page{
    background-color:#F7F7F7;
}
//带参数的mixin
@mixin setDefMargin($left, $right, $bottom: 10px,$top: 10px){
    margin:$top $right $bottom $left;
}
.test{
    @include page;
    @include setDefMargin(20px,30px);
    color:#FFFFFF;
}

需要注意的是,必须先定义没有默认值的参数,后指定有默认值的参数。

Import

sass可以使用@import语句,来引用指定的外部文件。

//引入scss文件
@import "variable.scss";
//引入css样式文件
@import "style.css";

条件语句

使用@if@else语句可以用来做条件判断

$min-margin: 10px;
@mixin init-margin($left){
    //判断传入的参数是否大于最小值
    @if $left > $min-margin {
        margin-left: $left;
    } @else {
        margin-left: $min-margin;
    }
}
body {
    @include init-margin(5px);
}

循环语句

FOR循环

使用@for来定义循环体。 $i表示循环变量,from 后面跟上开始数值,to后面跟结束数值。

@for $i from 1 to 20 {
    .page-index#{$i} {
        color: #FFFFFF;
    }
}

WHILE循环

使用@while定义循环体,后面跟循环条件。

//循环变量
$i: 2;
@while $i<10{
    page-index#{$i} {
        color: #F4F4F4;
    }
    $i=$i=1;
}

自定义函数

使用@function语句可以自定义函数,@return表示函数的返回值

@function calcNumber($num) {
    @return $num+10;
}
body {
    margin-left: calcNumber(20px);
}

免责声明:文章转载自《sass基础用法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇EntityFramework更新多条数据【8万】JVM8自适应导致内存居高不下下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Alexa世界排名原理+作弊源码,为网站赢得好排名

   虽然说 Alexa世界排名存在水分,高低都无所谓,只要能在搜索引擎中排名靠前就好了,但是一些风险投资还是把它当作网站的一个参考依据,就迫使一些网站不得不提升自己的Alexa世界排名,那如何让你的网站在Alexa世界排名靠前,吸引更多的风险投资呢?国内大多数网站刚起步的时候都是靠作弊,那怎样作弊才不被发现,算是“合理”的呢,下面就简单的说一说      ...

geotrellis使用(四十二)将 Shp 文件转为 GeoJson

前言 一个多月没有写博客了,今天尝试着动笔写点。 原因很多,最重要的原因是我转行了。是的,我离开了开发岗位,走向了开发的天敌-产品经理。虽然名义上是产品经理,但是干的事情也很杂,除了不写代码,其他的都干,经常还要加个小班,所以就没那么多时间研究技术上的东西,机械键盘上已经落下了一层薄薄的灰尘。但是自己确实又爱码农这一行,上班看着同事畅快的敲着代码,心里就有...

winform程序实现自动升级

本文代码参考http://www.cnblogs.com/iyond/archive/2007/06/14/783301.html而来,只是在原有基础上做了整合,想深入理解请看原本,我只是从实现过程简单总结。 解决方案总共有3个项目:AppUpdateDemo是测试项目;AppUpdateC是自动升级的组件,这个项目编译将生成一个AppUpdateC.dl...

【UEFI】---BIOS中UserPassword的重复校验总结

  UEFI作为目前较为流行的一套X86架构初始化的标准框架,已受到业界内的广泛认可。而其中很多编程所采用的思想确实值得学习。今天总结下UEFI的框架下修改代码的一点小经验,仅供菜鸟参考。 先列干货,具体的小结后续补充:   1. 明确你要的某个功能的实现逻辑,都需要在哪个位置添加代码。     (很重要,这决定着你的方案是否可行重要前提,一旦此步骤错误,...

MyX5TbsPlusDemo【体验腾讯浏览服务Android SDK (TbsPlus 版)】

版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 按照官网上的说明:只需接入aar文件和调用一个接口即可完成TBS接入,我们会通过全屏Activity展示TBS WebView,适用于快速接入TBS且常规使用WebView的开发者。 按照接入文档中的说明:tbsplus是在tbs sdk 完整版基础上提供的开发者一键接入的AAR包,开发者...

Delphi程序的自我修改

前言:     对于Delphi在编译时对代码所做的工作,大部分使用Object Pascal之类的高级语言的程序员并不是很熟悉。如果你对汇编程序以及EXE文件格式有一点基本认识,那么源代码里包含的注释将把一切解释得非常清楚。另外,我还要说明一下源代码在编译时被做了什么处理。     我对汇编程序以及EXE文件格式的认识也是及其有限的,大部分是我在寻找反盗...