美文网首页
第六章 Css预处理器

第六章 Css预处理器

作者: 时修七年 | 来源:发表于2018-07-08 18:24 被阅读6次
  • 基于CSS的另一种语言
  • 通过工具编译成CSS
  • 添加了很多CSS不具备的特性
  • 能提升CSS文件的组织

less使用js编写,但是稍繁琐,功能较简单,可以直接引入。sass使用vb编写

  • 嵌套 反映层级和约束
  • 变量和计算 减少重复代码
  • Extend和Mixin代码片段
  • 循环 适用于复杂有规律的样式
  • import Css文件模块化

less的使用

npm install less -g  //安装less
lessc demo1.less // 把demo1.less编译成demo1.css
lessc demo1.less > demo1.css  //编译后写入到demo1.css中

嵌套

less

body {
    margin: 0;
    padding: 0;
}
.wrapper {
    width: 900px;
    margin: 0 auto;
    .nav {
        height: 30px;
        background-color: #eee;
        color: red;
        text-align: center;
        line-height: 30px
    }
    .container {
        border: 1px solid green;
        height: 500px;
        background-color: lightblue;
        &:hover { //&表示同级
        background-color: orange;
        }
    }
}

编译后

body {
  margin: 0;
  padding: 0;
}
.wrapper {
  width: 900px;
  margin: 0 auto;
}
.wrapper .nav {
  height: 30px;
  background-color: #eee;
  color: red;
  text-align: center;
  line-height: 30px;
}
.wrapper .container {
  border: 1px solid green;
  height: 500px;
  background-color: lightblue;
}
.wrapper .container:hover {
  background-color: orange;
}

sass

node-sass  --output-style expanded demo1.sass > sass.css

变量

less

@bgColor: red;
@fontSize: 16px;

body {
    margin: 0;
    padding: 0;
}
.wrapper {
    width: 900px;
    margin: 0 auto;
    .nav {
        height: 30px;
        background-color: lighten(@bgColor,40%); //lighten函数
        font-size: @fontSize+6px; //相加时要带单位,相乘可以忽略
        color: red;
        text-align: center;
        line-height: 30px
    }
    .container {
        border: 1px solid green;
        height: 500px;
        background-color: lightblue;

        &:hover {
        background-color: orange;
        }

    }
}

sass

sass采用$前缀定义一个变量
$fontSize: 18px;
$bgColor: red;

mixin

mixin 用来在样式表中复用 一段css代码;

语法

.mixin-name(arg1,arg2) {
  //some css code
}
//mixin的语法类似选择器,不同的是它支持括号传参;

//示例:定义两个大小,边框相同,背景色不同的正方形
//less
.box {
    height: 30px;
    width: 30px;
    border: 1px solid red;
}

.box1 {
  .box();
    background-color: red;
}
.box2 {
    .box();
    background-color: green;
}
//编译后的css
.box {
  height: 30px;
  width: 30px;
  border: 1px solid black;
}
.box1 {
  height: 30px;
  width: 30px;
  border: 1px solid black;
  background-color: red;
}
.box2 {
  height: 30px;
  width: 30px;
  border: 1px solid black;
  background-color: green;
}

因为.box没有带括号,所以显示在编译后的css中

@bgColor: #ccc;
@textColor: red;
@containerBgColor: orange;
@fontSize: 16px;
body {
    margin: 0;
    padding: 0
}

/*mixin方法1:
带括号的mixin不会被编译在css文件中*/
.head(@bgColor,@textColor){
    height: 30px;
    text-align: center;
    background-color: @bgColor;
    color: @textColor;
    line-height: 30px;
}
/*mixin方法2:
不带括号的mixin会出现在编译后的css中*/
.w {
    width: 990px;
}
.wrapper {
    .w(); //即使mixin不带括号,这里要带括号
    margin:  0 auto;
    .nav {
        .head(@bgColor,@textColor)
    }
    .container {
        height: 500px;
        background-color: @containerBgColor;
    }
    .footer {
        .head(@bgColor,@textColor)
    }
}

sass

sass中的mixin语法

@mixin mixin-name() {
  // some css code
}
//在调用时
.box1 {
  @include block($fontSize)
}

less在定义mixin时,可以是类也可以时mixin,前者可以转换为后者,sass中要求更加严格,两者不能混用,在定义和使用时分别要加@mixin @include

extend将具有相同样式的选择器写成一组

.box {
  height: 150px;
  width: 150px;
  border: 1px solid red;
}
.wrapper {
    width: 500px;
    margin: 0 auto;
    .box1 {
        &:extend(.box);
        background-color: orange;  
    };
    .box2 {
        &:extend(.box);
        background-color: blue;
    }
}

编译后

.box,
.wrapper .box1,
.wrapper .box2 {
  height: 130px;
  width: 130px;
  border: 1px solid black;
}
.wrapper {
  width: 200px;
  margin: 0 auto;
}
.wrapper .box1 {
  background-color: red;
}
.wrapper .box2 {
  background-color: green;
}

loop

当需要生成一系列具有每种规律的css样式时,我们可以使用less提供的loop循环,来实现。

//loop对空格要求十分严格,一定要注意断开
.gen-col(@n) when (@n>0){//1.when前后必须是空格
    .gen-col(@n -1);
    .col-@{n} {
      width: 1000px/12*@n;
    }
}

import

@import "./6-import-variable";
@import "./6-import-module1"

Css预处理器框架

Css预处理器框架.png

est

相关文章

  • 初识css预编译之Less

    什么是less less是CSS的预处理器,学过C语言的同学应该对预处理器挺熟悉的把,C语言的编译过程就分为:预处...

  • Scss与 Less 对比

    相同点: 两者都是css预处理器 能够更快速的编写代码 结构清晰,便于维护 相比较: sass是较成熟的CSS预处...

  • 在Vue.js中使用Stylus预处理器

    概述 什么是Stylus Stylus是一个CSS预处理器。 什么是CSS预处理器 关于CSS预处理器,推荐先行阅...

  • 十分钟入门sass

    什么是css预处理器 :bookmark: CSS 预处理器是一个能让你通过预处理器自己的语法生成CSS的工具。 ...

  • CSS预处理器之Less

    CSS预处理器 什么是CSS预处理器 CSS 预处理器就是用某一种语言用来为 CSS 增加一些动态语言的的特性(变...

  • sass是什么?为什么要使用sass?使用sass,以及其他一些

    什么是scss? Sass属于CSS预处理器,那什么是 CSS 预处理器呢? CSS 预处理器定义了一种新的语言,...

  • CSS预处理器之less0731

    CSS预处理器之less 1.基础内容 1.1什么是CSS预处理器? CSS 预处理器就是用某一种语言用来为 CS...

  • Sass和Less

    什么是Sass和Less? Sass和Less都属于CSS预处理器。 什么是 CSS 预处理器呢? CSS 预处理...

  • web开发小部分单词

    Sass=scss编程 Sass 是css预处理器 css预处理器用编程思维写一些可以转成css的东西 优点:更加...

  • 为什么选择Sass而不是Less?

    什么是Sass和Less? Sass和Less都是属于CSS的预处理器,那什么是预处理器呢? CSS预处理器定义了...

网友评论

      本文标题:第六章 Css预处理器

      本文链接:https://www.haomeiwen.com/subject/ulwguftx.html