预处理语言

222 阅读2分钟

Less

Less 是一门 CSS 预处理语言,它扩展了 CSS语言
增加了变量、Mixin、函数等特性,使 CSS 更易维护和扩展。

Less的安装与编译

安装
    $ npm install -g less
编译
    $ lessc styles.less styles.css

Less的使用

1.变量

//定义变量
@color:#e9232c;
#header{
    //使用变量
    color: @color;
}
div{
    color: @color;
}

less转换成css

#header {
    color: #e9232c;
}
div {
    color: #e9232c;
}

2.混入

.temp{
    border-bottom: 1px solid black;
    border-bottom: 1px solid red;
}
#header{
    color: #111111;
    .temp
}
div{
    background-color: red;
    .temp
}

less转换成css

.temp {
    border-bottom: 1px solid black;
    border-bottom: 1px solid red;
}
#header {
    color: #111111;
    border-bottom: 1px solid black;
    border-bottom: 1px solid red;
}
div {
    background-color: red;
    border-bottom: 1px solid black;
    border-bottom: 1px solid red;
}

3.带参数混入

.border-radius(@radius){
    border-radius: @radius;
    -moz-border-radius: @radius;
    -o-border-radius: @radius;
    -webkit-border-radius: @radius;
}
div{
    background: red;
    .border-radius(4px)
}
.home{
    .border-radius(10px)
}

less转换成css

div {
    background: red;
    border-radius: 4px;
    -moz-border-radius: 4px;
    -o-border-radius: 4px;
    -webkit-border-radius: 4px;
}
.home {
    border-radius: 10px;
    -moz-border-radius: 10px;
    -o-border-radius: 10px;
    -webkit-border-radius: 10px;
}

4.嵌套

#footer{
    background-color: red;
    ul{
        font-size: 18px;
        >li{
            a{
                text-decoration: none;
            }
            &:hover{
                border: 1px solid 
                #000000;
                //&表示父级元素
            }
        }
    }
}

less转换成css

#footer {
    background-color: red;
}
#footer ul {
    font-size: 18px;
}
#footer ul > li a {
    text-decoration: none;
}
#footer ul > li:hover {
    border: 1px solid #000000;
}

5.运算

@width: 300px;
div{
    width: @width;
    height: @width / 2;
}

less转换成css

div {
    width: 300px;
    height: 150px;
}

6.内置函数

@color:red;
div{
    color: lighten(@color,10%);
}

less转换成css

div {
    color: #ff3333;
}

7.import

@import "./import.less";
.home{
    color:@color;
}

less转换成css

div {
    color: red;
}
.home {
    color: red;
}

Sass

Sass 是一种 CSS 的预编译语言。它提供了 变量(variables)、
嵌套(nested rules)、 混合(mixins)、 函数(functions)等功能,并且完全兼容 CSS 语法
。Sass 能够帮助复杂的样式表更有条理, 并且易于在项目内部或跨项目共享设计。

Sass的安装和编译

安装
    $ npm install -g sass
编译
    $ sass runoob-test.scss runoob-test.css

Sass的使用

1.变量

$color:red;
div{
    color: $color;
}

sass转换成css

div {
    color: red;
}

2.作用域

$mycolor:red;
h1{
    // $mycolor:black;
    color: $mycolor;
    //离谁最近用谁的样式
}

sass转换成css

h1 {
    color: red;
}

3.嵌套

#header{
    font-size: 20px;
    ul{
        li{
            a{
                &:hover{
                color: red;
                &表示父级元素
                }
            }
        }
    }
}

sass转换成css

#header {
    font-size: 20px;
}
#header ul li a:hover {
    color: red;
}

4.import

@import "./reset.scss";
div{
    color:red;
}
reset.scss
*{
    margin: 0;
    padding: 0;
}
a{
    text-decoration: none;
}

sass转换成css

* {
    margin: 0;
    padding: 0;
}
a {
    text-decoration: none;
}
div {
    color: red;
}

5.混入

@mixin important-text {
    color: red;
    font-size: 24px;
}
div{
    @include important-text;
}

sass转换成css

div {
    color: red;
    font-size: 24px;
}

6.混入带参数

@mixin border($radius) {
    border-radius: $radius;
    -moz-border-radius: $radius;
    -o-border-radius: $radius;
    -webkit-border-radius: $radius;
}
#header{
    @include border(10px);
}

sass转换成css

#header {
    border-radius: 10px;
    -moz-border-radius: 10px;
    -o-border-radius: 10px;
    -webkit-border-radius: 10px;
}

7.继承

.button-basic{
    border: 1px solid #000000;
    padding: 10px;
}
.button-success{
    color: green;
    @extend .button-basic;
}
.button-error{
    @extend .button-basic;
    color: red;
}

sass转换成css

.button-basic, .button-error, .button-success {
    border: 1px solid #000000;
     padding: 10px;
}
.button-success {
    color: green;
}
.button-error {
    color: red;
}