当前位置:Gxlcms > html代码 > sass入门_html/css_WEB-ITnose

sass入门_html/css_WEB-ITnose

时间:2021-07-01 10:21:17 帮助过:12人阅读

SASS是一种CSS的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变得简单可维护

SASS 官网介绍:

sass is the most mature(成熟的),stable(稳定的),and powerful professional grade CSS extension language in the world.

官方文档:

http://sass-lang.com/documentation/file.SASS_REFERENCE.html

初学sass 遇到的最大阻碍可能是:需要搭建Ruby的运行环境和需要用命令行,其实这都非常简单。

一、安装

1、安装Ruby

SASS是Ruby语言写的,但是两者的语法没有关系。不懂Ruby,照样使用。只是必须先安装Ruby,然后再安装SASS。

安装SASS请参考SASS官方网站: http://sass-lang.com/install,windows下安装ruby:rubyinstaller.org。

安装时注意一点:勾选Add Ruby executables to your PATH,添加Ruby可执行路径到环境变量再安装。

安装成功Dos窗口输入ruby -v会出现版本信息。

2、安装sass

假定你已经安装好了Ruby,接着在命令行输入下面的命令:gem install sass

安装成功输入sass -v可以看到版本信息。

二、使用

1、编译

Note:注意sass的文件名后缀是scss而不是sass。

将style.scss编译成css

sass style.scss

将style.scss编译后保存成css文件

sass style.scss style.css

将style.scss编译后保存成压缩过的css文件

sass --style compressed style.scss style.css

--style控制编译风格,可选参数如下

  • nested:嵌套缩进的css代码,它是默认值。
  • expanded:没有缩进的、扩展的css代码。
  • compact:简洁格式的css代码。
  • compressed:压缩后的css代码。
  • sass监听文件或目录,源文件有变动,自动编译。

    // watch a filesass --watch input.scss:output.css// watch a directorysass --watch app/sass:public/stylesheetss

    2、语法

    2.1、注释

    和less一样,sass有两张注释

    // 单行注释,不会作为最终
    输出/* 多行注释,以原生CSS的/*注释....*/形式作为最终输出 */

    在/*后面加一个感叹号,表示这是"重要注释"。即使是压缩模式编译,也会保留这行注释,通常可以用于声明版权信息。

    /*!    重要注释!*/

    2.2、变量

    一般会把颜色,字体,将来会重用的css值存为变量,方便统一修改和维护。

    //定义变量$primary-color:#333;//变量调用body{    color:$primary-color;}

    如果变量需要镶嵌在字符串之中,就必须需要写在#{}之中。

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

    2.3、嵌套

    像html标签嵌套一样进行选择器嵌套写css,但是在生成css时有利有弊。

    以下经典用法。

    nav {  ul {    margin: 0;    padding: 0;    list-style: none;  }  li { display: inline-block; }  a {    display: block;    padding: 6px 12px;    text-decoration: none;  }}

    会生成:

    nav ul {  margin: 0;  padding: 0;  list-style: none; }nav li {  display: inline-block; }nav a {  display: block;  padding: 6px 12px;  text-decoration: none; }

    属性也可以嵌套,比如border-color属性如下,border后面必须加冒号。

    p{   border:{        color:red;    }}

    在嵌套的代码块内,可以使用&引用父元素。比如a:hover伪类,可以写成:

    a{    &:hover{color:red;}}

    2.4、Less css片段和引入

    目的:方便模块化和管理,小模块可维护性好。最终编译成一个css文件,这点比纯css的@import好。

    弊端:多一个@import就多一个http请求。

    片段命名:_partial.scss,引入用@import。

    Demo:将_reset.scss import到base.scss。

    _reset.scss如下

    // _reset.scsshtml,body,ul,ol {   margin: 0;  padding: 0;}

    base.scss如下

    // base.scss@import 'reset';
    body { font: 100% Helvetica, sans-serif; background-color: #efefef;}

    @import 'reset'即可。

    2.5、mixin 重用代码块

    在sass中可用定义重用的代码块,且可传参数,方便日后根据需求调用。

    定义:通过@minxin name即可定义一个重复利用的样式。

    调用:@include name

    demo:

    // mixin@mixin box($H:30px,$col:red){    height:$H;    background-color:$col;}div.box{    @include box; //使用默认值}div.box1{    @include box(50px,blue); //传参}

    编译结果:

    div.box {  height: 30px;  background-color: red; }div.box1 {  height: 50px;  background-color: blue; }

    css中有一些浏览器兼容性的代码,一些css3私有前缀等,此时使用mixins非常便捷,一个经典例子border-radius如下。

    @mixin border-radius($radius){    -webkit-border-radius: $radius;    -moz-border-radius: $radius;    -ms-border-radius: $radius;          border-radius: $radius;}.box{@include border-radius(10px);}

    2.6、继承

    继承让一个选择器的样式被另一个选择器复用和覆盖。是一个DRY的语法,也最sass中有用的语法之一。

    语法:@extend 选择器

    demo:一系列提示信息。

    .message{    border:1px solid #ccc;    padding:10px;    color:#333;}.success{    @extend .message;    border-color:green;}.error{    @extend .message;    border-color:red;}.warning{    @extend .message;    border-color:yellow;}

    编译后的css【继承实现了css组合声明】

    .message, .success, .error, .warning {  border: 1px solid #ccc;  padding: 10px;  color: #333; }.success {  border-color: green; }.error {  border-color: red; }.warning {  border-color: yellow; }

    2.7、运算符

    包括+,-,*,、,%。

    demo:计算aside和article的宽度。

    .container{    width:100%;}article[role="main"]{    float:left;    width:600px/960px*100%;}aside[role="complimentary"]{    float:right;    width:300px/960px*100%;}

    编译后css

    .container {  width: 100%; }article[role="main"] {  float: left;  width: 62.5%; }aside[role="complimentary"] {  float: right;  width: 31.25%; }

    2.8、颜色

    sass中集成了大量的颜色函数,让生成颜色更加简单

    lighten(#cc3, 10%) // #d6d65cdarken(#cc3, 10%) // #a3a329grayscale(#cc3) // #808080complement(#cc3) // #33c

    demo:

    $linkColor: #08c;a {    text-decoration:none;    color:$linkColor;    &:hover{      color:darken($linkColor,10%);    }}

    编译成css

    a {  text-decoration: none;  color: #08c; }a:hover {  color: #006699; }

    3、高级语法

    3.1、条件

    if判断何种条件用何种样式。

    p{    @if 1+1==2{border:1px solid red;}    @if 5<2 {border:2px dotted red;}}

    if,else配合使用。

    demo:判断颜色中亮度大于30%,设置背景色为黑色,否则为白色。

    $color : #1875e7;p{    @if lightness($color)>30%{        background-color:#000;    }@else {        background-color:#fff;    }}

    备注:lightness($color):从一个颜色中获取亮度(lightness)值;

    3.2、 循环语句

    for循环

    @for $i from 1 to 10{    .border-#{$i}{        border:#{$i}px solid blue;    }}

    编译生成如下css

    .border-1 { border: 1px solid blue; }.border-2 {border: 2px solid blue; }.border-3 {border: 3px solid blue; }.border-4 {border: 4px solid blue; }.border-5 {border: 5px solid blue; }.border-6 {border: 6px solid blue; }.border-7 {border: 7px solid blue; }.border-8 {border: 8px solid blue; }.border-9 {border: 9px solid blue; }

    while循环

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

    编译成css

    .item-6 {width: 12em; }.item-4 {width: 8em; }.item-2 {width: 4em; }

    each遍历

    @each $member in a,b,c,d{    .#{$member}{        background-image:url("images/#{$member}.jpg");    }}

    编译成css

    .a {background-image: url("images/a.jpg"); }.b {background-image: url("images/b.jpg"); }.c {background-image: url("images/c.jpg"); }.d {background-image: url("images/d.jpg"); }

    3.3自定义函数

    sass可自定义函数。

    @function double($n){    @return $n * 2;}#sidebar{    width:double(5px);}

    编译后css

    #sidebar {width: 10px; }

    资源链接:

    http://sass-lang.com/guide

    http://www.w3cplus.com/sassguide/

    本文作者starof,因知识本身在变化,作者也在不断学习成长,文章内容也不定时更新,为避免误导读者,方便追根溯源,请诸位转载注明出处:有问题欢迎与我讨论,共同进步。

    人气教程排行