对Css、Less、Sass区别及特性的理解

  序言:最近在自己玩玩引一些好看的字体样式的时候,偶然看见有 .less的样式文件,又偶然想起还有.scss格式的样式文件,这些虽然有印象,还是想写篇博文加深一下理解,就跑来记录一下,作为小白理解的可能会浅显,文章末尾附有借鉴文档

  Ps:有关Vue项目引入Sass、Less,会在下篇博文讲述:https://www.cnblogs.com/yanyuyinmo/p/15573559.html

1、Css

      概念:前端恰饭的三件套之一(Html + Js + Css),层叠样式表,是一种用来表现HTML或XML等文件样式的计算机语言,它是用来优化网页的结构和内容的(就是控制页面的文字、颜色、背景图片等等影响外观的东西,通俗点就是,人靠衣装,马靠鞍,Css就是制造衣服的缝纫机,制造马鞍的制革台)。

      使用:Html元素的Css样式是写在 <style></style>里面

<div class="fontStyle">这是蓝色的</div>
<style>
/* Css样式*/
.testCss {
  flex: 1;
  padding: 8px;
}
.fontStyle {
  height: 100px;
  border: 1px solid #ccc;
  color: blue;
  text-align: center;
}
</style>

效果:


2、Sass

      概念:Sass是一种对css的一种扩展提升,和Less一样都扩展了Css,而且Less(2009)的产生也受Sass(2007)的影响很大,Sass增加了变量、计算、嵌套、继承、函数、注释等等特性。它可以理解为使用 JavaScript 的方式书写,最后编译成Css来控制网页样式。Sass是 Ruby 语言写的,但是两者的语法没有关系,不懂 Ruby 也能使用。Sass文件就是普通的文本文件,里面可以直接使用CSS语法,文件后缀名是.scss(详见阮大大的博客,我会在下面列出)。

      说到 注释 特性:

                   1、标准的CSS注释 /* comment */ ,会保留到编译后的文件。

                   2、单行注释 // comment,只保留在SASS源文件中,编译后被省略。

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

/*!
  这里是重要注释
*/

 

      有意思的是:在日常开发中,我们也有见到 .scss 文件,又是什么呢?它是Sass么,我来补充一下:

             Sass 和 Scss有什么区别?

                     · 文件扩展名不同,文件后缀分别是“.scss”和“.sass”

                     · sass是以严格缩进语法规则来编写代码的,不包括大括号和分号,而scss的语法和css书写语法类似;sass的安装和使用不细说了;

                     · scss是sass3.0引入的语法,可以理解 scss 是 sass 的一个升级版本,是一种SCSS-like语言,弥补了sass和css之间的鸿沟。 

点击查看代码

/* ----------------- 使用Sass时,直接在Test.Vue里面写 -------------------- */
/* Test.vue */
<div class="useSass">Sass冒号后面必须有空格</div>

<style lang="sass">
@import url("../../less/test.css")
.testLess
  .useSass
    color: red   //冒号后面必须有空格
    font-weight: 600
    font-size: 22px
    background: #FFFFFF
</style>



/*------------------ 引入局部scss文件时 ----------------------*/
/* Test.vue */
<div class="testSass">
  <div class="useSass">测试 Sass</div>
  <p>哈哈哈</p>
</div>

<style lang="scss">
@import url("../../assets/sass/test.scss");
.Test {
  p {
    color: blueviolet;
  }
}
</style>



/* test.scss */
//颜色
$blue : #7d7e80;//变量
$width: 200;
.font_style {
  font-weight: 600;
  font-size: 22px;
}
//混合
@mixin font_color {
 color: lighten(rgb(238, 103, 13), 10%) // 颜色函数
}

.testSass {
  color: $blue;
  flex: 1;
  padding: 8px;
  // 嵌套
  .useSass {
    @extend .font_style; //继承 .font-style类
    min-width: $width * 0.5; //计算特性
    background: #FFFFFF;
    @include font_color; //使用混合
    border: 1px black dashed;
  }
}

    效果:


3、Less

      概念:Less 是一门 CSS 预处理语言,它扩展了 CSS 语言,增加了变量、计算、嵌套、混合、函数等特性,使 CSS 更易维护和扩展。Less 可以运行在 Node 或浏览器端(无论如何,Less最终都是编译成Css来对页面样式进行渲染)。

      简单使用:

点击查看代码

/* 在使用Less时,我是 样式写在vue模板里 和  引入less文件 结合使用了!!!*/

<!-- Test.vue -->
<div class="testLess">
  <div class="header-center">测试 Less</div>
   <a>我使用了混合特性</a>
</div>

/* common.less */
// 宽高 
@width: 400px;
@height: 500px;

// 文本区背景
@text_backgound_color: #f7f7f7;

// 边框
@border: 1px solid #56db3a;
@border_green: 1px solid green;

// 字体颜色
@text_color_333: #333;
@text_color_666: #666;
@text_color_999: #999;
@commonColor: #3b3834;

// 字体大小
@text_size_14: 14px;
@text_size_18: 18px;

/* 绿色边框 */
.borderGreen {
  border: @border_green;
}

/* 头部样式 */
.header-center {
  min-width: @width / 2; //宽运算
  min-height: @height / 4; //高运算
  font-size: @text_size_14;
  text-align: center;
  color: @commonColor + #333; //颜色运算(rgb()形式也可行),例如:#112233 + #111 ---> @223344
  background: saturate(hsl(224, 12%, 82%), 20%); // saturate函数
  /*
     @width:0.5;
     width: percentage(@width); // percentage 函数将 0.5 转换为 50%
  */
  .borderGreen(); //Less的混合特性
}

 效果:

如上我们可以看到:

Less比较于Css的区别(优点):1、Less允许单独定义一系列通用的变量,然后在需要的时候去进行调用, 方便更改,提高了代码的复用。

                                                     2、Less可以使用一个选择器嵌套另外一个选择器,减少代码量。

                                                     3、Less中提供了加,减,乘,除运算,以及属性值和颜色的运算,以便实现属性值之间的关系。


4、完整代码(Vue2.6 + vue/cli4.5.4)

    Vue模板:

     注: test.scss 文件和 test.less 上面已经全部列出,这里就不贴代码了。

点击查看代码

/* Test.vue */
<template>
  <div class="Test">
    <!-- 测试 Css -->
    <div class="testCss">
      <div class="fontStyle">测试 Css</div>
    </div>
    <!-- 测试 Less -->
    <div class="testLess">
      <div class="header-center">测试 Less</div>
      <a>我使用了混合特性</a>
    </div>

    <!-- 测试 Sass -->
    <div class="testSass">
      <div class="useSass">测试 Sass</div>
      <p>哈哈哈</p>
    </div>
  </div>
</template>

<script>
export default {
  name: "Test",
  data() {
    //这里存放数据
    return {};
  }
};
</script>
<style>
/* Css样式*/
.testCss {
  flex: 1;
  padding: 8px;
}
.fontStyle {
  height: 100px;
  border: 1px solid #ccc;
  color: blue;
  text-align: center;
}
</style>
<style lang="less">
//@import url(); 引入公共css类
@import "../../assets/less/test.less";
.Test {
  height: 100%;
  width: 100%;
  display: flex;
  padding: 8%;
  .testLess {
    flex: 1;
    padding: 8px;
    a {
      margin-top: 5px;
      .borderGreen();
    }
  }
  //可以修改它的属性
  .header-center {
    font-size: @text_size_18;
  }
}
</style>

<style lang="scss">
@import url("../../assets/sass/test.scss");
.Test {
  p {
    color: blueviolet;
  }
}
</style>

 5、总结:

         1、Sass和Less都是Css的预处理语言,拓展了Css,传统的Css可以直接被Html引用,但是 Sass 和 Less 由于使用了类似JavaScript的方式去书写,所以必须要经过编译生成Css。

         2、Sass增加了变量、计算、嵌套、继承、函数、注释等等特性,Sass文件对代码的排版有着非常严格的要求,而且没有大括号,没有分号。

         3、Less相对于Css增加了变量、混合、嵌套、运算、嵌套等特性。详见官方文档:https://less.bootcss.com/

 

   附一下gitHub地址吧https://github.com/fei2020last/TestPro

   参考博客:   

          阮大大的SASS用法指南:https://www.ruanyifeng.com/blog/2012/06/sass.html(重要!!!)

          Less官方中文文档:https://less.bootcss.com/(重要!!!)

          IT界新人的十分钟看懂Css、less和Sass(SCSS)的区别:https://www.cnblogs.com/a1231230/p/12107592.html     

          关于css样式文件和less的文件的比较说明:https://blog.csdn.net/qq_45670012/article/details/102516142

 

posted @ 2021-11-15 18:52  隐殁烟雨  阅读(2350)  评论(0编辑  收藏  举报