预处理语言less和sass

384 阅读5分钟

预处理语言

1.1 less是什么?

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

1.2 怎么使用less?

less文件不能在浏览器中直接显示 需要将less文件转换成css 文件。
所以需要安装Nodejs文件转换less文件为css文件

1.3 安装Nodejs

 1)安装Nodejs 
      安装完毕之后,要测试是否安装完成?
      node -v 或者 npm --version (来安装一些工具)
 2)npm install less -g  (global)
      注意安装完毕之后,会在cmd窗口中可以使用lessc

1.4 使用less

1)win+R-->cmd进入控制台
2)切换盘,如文件在D盘 D:回车切换  cd 后加less文件所在的文档
3)使用lessc + 需要转换的.less文件 + 转换成需要的.css文件  ——————注意后缀一定要前面是.less后面是.css 

1.5 less语言

1)变量.less
  定义一个变量如:@color:red;
 一个盒子div就可引入这个变量
 div{
     color:@color;
 }
 转换成css文件之后就是
  div{
     color:red;
 }
2)混合.less
将一些通用的属性放在一个class中,然后在例外一个class中去调用这些属性。任何的class和id或是元素都可以用这样的方式进行引入。
.temp{
  border-top: dotted 1px black;
  border-bottom: solid 2px black;
}
#header a{
  color : #111;
  .temp;
}
#nav a{
  color : black;
  .temp;
}
转换之后
#header a{
  color : #111;
  border-top: dotted 1px black;
  border-bottom: solid 2px black;
}
#nav a{
  color : black;
  border-top: dotted 1px black;
  border-bottom: solid 2px black;
}

3)带参数的混合.less
可以像函数一样定义一个带参数的属性集合
.border-radius (@radius){
    border-radius: @radius;
   -moz-border-radius: @radius;
   -webkit-border-radius: @radius;
}
#header{
    .border-radius(10px) ;
}
.button{
    .border-radius(20px)
}
转换成css
#header {
  border-radius: 10px;
  -moz-border-radius: 10px;
  -webkit-border-radius: 10px;
}
.button {
  border-radius: 20px;
  -moz-border-radius: 20px;
  -webkit-border-radius: 20px;
}

4)运算.less
任何数字、颜色都可以参与运算
@width:200px;
#header{
    width: @width;
    height: @width/2;
}
转换css
#header{
    width: 200px;
    height: 100px;
}
5)内置函数
less本身提供了一系列的颜色运算函数。颜色会被转化成为HSL色彩空间,然后在通道级别操作。
lighten(@color, 10%);     // 返回一个比@color低10%更轻的颜色
darken(@color, 10%);      // 返回一个比@color高10%较暗的颜色
saturate(@color, 10%);    // 返回比@color多饱和度10%的颜色
desaturate(@color, 10%);  // 返回一个比@color少饱和度10%的颜色
fadein(@color, 10%);      // 返回一个比@color少10%透明度的颜色
fadeout(@color, 10%);     // 返回一个比@color多10%透明度的颜色
fade(@color, 50%);        // 返回一个颜色透明度为50%的颜色
spin(@color, 10);         // 返回色调比@color大10度的颜色
spin(@color, -10);        // 返回一个比@color小10度色调的颜色
mix(@color1, @color2);    // 返回一个混合@ color1和@ color2的颜色

6)嵌套规则
以嵌套的方式写层叠样式
#footer {
    color: red;
    >ul {
        font-size: 20px;
        li {
            a {
               text-decoration: none;
            }
           
            &:hover {
                color: #e9232c;
            }
        }
    }
}
转换css
#footer {
  color: red;
}
#footer > ul {
  font-size: 20px;
}
#footer > ul li a {
  text-decoration: none;
}
#footer > ul li:hover {
  color: #e9232c;
}

7)作用域
less的作用域和其他编程语言十分的相似,首先在本地的变量和混合模块进行查找,如果没有找到的话,就会去父及作用域查找,直到找到为止。
@var: red;

#page {
  @var: white;
  #header {
    color: @var; // white
  }
}

#footer {
  color: @var; // red  
}

2.1 sass是什么?

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

2.2需要安装什么?

npm install -g sass

2.3 怎么使用

其实道理跟less差不多
lessc换成sass
注意sass后缀是.scss

2.5 Sass语言

Sass 嵌套规则与属性同less嵌套规则与属性
Sass @import 
Sass 导入文件

类似 CSS,Sass 支持 @import 指令。
@import 指令可以让我们导入其他文件等内容。
CSS @import 指令在每次调用时,都会创建一个额外的 HTTP 请求。但,Sass @import 指令将文件包含在 CSS 中,不需要额外的 HTTP 请求。
Sass @import 指令语法如下:
@import filename;


注意:包含文件时不需要指定文件后缀,Sass 会自动添加后缀 .scss。

此外,你也可以导入 CSS 文件。
导入后我们就可以在主文件中使用导入文件等变量。
以下实例,导入  reset.scss 文件。
Sass 代码:@import "reset";
reset.scss 文件代码:
html,
body,
ul,
ol {
  margin: 0;
  padding: 0;
}

@import "reset";

body {
  font-family: Helvetica, sans-serif;
  font-size: 18px;
  color: red;
}
Css 代码:
html, body, ul, ol {
  margin: 0;
  padding: 0;
}

body {
  font-family: Helvetica, sans-serif;
  font-size: 18px;
  color: red;
}
Sass @mixin与 @include 
@mixin 指令允许我们定义一个可以在整个样式表中重复使用的样式。
定义一个混入
混入(mixin)通过 @mixin 指令来定义。 @mixin name { property: value; property: value; ... }
以下实例创建一个名为 "important-text" 的混入:
Sass 代码:
@mixin important-text {
  color: red;
  font-size: 25px;
  font-weight: bold;
  border: 1px solid blue;
}
使用混入

@include 指令可用于包含一混入:
selector {
  @include mixin-name;
}
实例
.danger {
  @include important-text;
  background-color: green;
}
转换
.danger {
  color: red;
  font-size: 25px;
  font-weight: bold;
  border: 1px solid blue;
  background-color: green;
}
Sass @extend 与 继承 
@extend 指令告诉 Sass 一个选择器的样式从另一选择器继承。

如果一个样式与另外一个样式几乎相同,只有少量的区别,则使用 @extend 就显得很有用。

以下 Sass 实例中,我们创建了一个基本的按钮样式 .button-basic,接着我们定义了两个按钮样式 .button-report 与 .button-submit,它们都继承了 .button-basic ,它们主要区别在于背景颜色与字体颜色,其他的样式都是一样的。
Sass 代码:
.button-basic  {
  border: none;
  padding: 15px 30px;
  text-align: center;
  font-size: 16px;
  cursor: pointer;
}

.button-report  {
  @extend .button-basic;
  background-color: red;
}

.button-submit  {
  @extend .button-basic;
  background-color: green;
  color: white;
}
将以上代码转换为 CSS 代码,如下所示:
.button-basic, .button-report, .button-submit {
  border: none;
  padding: 15px 30px;
  text-align: center;
  font-size: 16px;
  cursor: pointer;
}

.button-report  {
  background-color: red;
}

.button-submit  {
  background-color: green;
  color: white;
}