Css预处理语言之Less

  • Less 是一门 CSS 预处理语言,它扩展了 css 语言,增加了变量、Mixin、函数等特性,使得 css 更易维护和扩展。
  • Less 可以运行在 Node 或者浏览器端
  • Less 支持变量和嵌套

    npm转义less文件

  • npm root -g 该命令可以输出全局的依赖包所在的位置

  • npm i less 下载 less 依赖包
    • lessc index.less index.css 该命令转义 less 文件
  • package.json 配置文件里边可以在”scripts”属性中 自定义脚本。

    一、less支持变量

    1、样式的变量

    1. // less 支持变量和嵌套
    2. // 1、样式的变量
    3. @width:200px;
    4. @bg:green;
    5. @bg2:red;
    6. #box {
    7. width: @width;
    8. height: 200px;
    9. background: @bg;
    10. }

    2、选择器的变量

    1. // 2、选择器的变量
    2. @name:#box .container;
    3. @{name} {
    4. width: @width;
    5. height: 200px;
    6. background: @bg2;
    7. }
    8. @url: './img/logo';

    3、路径的变量

    ```javascript // 3、路径的变量

    box {

    background: url(@url); }

    header {

    // 在引路径的时候如果想在变量后边加上一部分,那就用下边这种形式 background: url(‘@{url}/1.png’); }
  1. <a name="TP2zr"></a>
  2. ### 二、less支持嵌套
  3. - &表示最近的父级选择器
  4. ```javascript
  5. // Less 的嵌套
  6. // 在样式嵌套中有类似作用域的功能
  7. // 在样式中使用变量,寻找变量的过程类似于作用域链查找机制,一层一层的往外查找
  8. #box {
  9. width: @width;
  10. .container {
  11. height: 300px;
  12. @width: 500px;
  13. a {
  14. text-decoration: none;
  15. width: @width;
  16. background-color: @bg2;
  17. }
  18. }
  19. }
  20. #box {
  21. // &表示最近的父级选择器
  22. &:hover {
  23. color: lavender;
  24. }
  25. }

三、less 支持运算

1、16 进制颜色值相加

  1. @black:#333;
  2. @light-black:#222;
  3. @deep-black:@black+@light-black;
  4. #main {
  5. background-color: @deep-black;
  6. }

2、单位相加

  1. @a:100px;
  2. @b:100px;
  3. @d:100rem;
  4. @c:@a+@b;
  5. @e:@b+@d;
  6. @f:@d+@b;
  7. #main {
  8. width: @c;
  9. height: @e;
  10. outline: @f;
  11. }

四、less支持函数形式

  • less 中的函数可以有形参
  • 函数体一旦有形参,那函数执行的使用必须给他传递实参
  • 形参和实参的个数是一一对应的,而且数量必须一致
  • Less 中的函数支持 arguments
    1. // Less 支持函数形式
    2. // less 中的函数可以有形参
    3. // 函数体一旦有形参,那函数执行的使用必须给他传递实参
    4. // 形参和实参的个数是一一对应的,而且数量必须一致
    5. .public(@w,@h){
    6. width: @w;
    7. height: @h;
    8. border:1px solid red;
    9. line-height: 300px;
    10. }
    11. #box {
    12. .public(100px,200px)
    13. }

    Less 中的函数支持 arguments

  1. .public(@w, ...) {
  2. // less 中的函数可以有形参
  3. // 如果你不想写形参,可以拿...代替
  4. width: @w; // @w 就是实参的第一个值
  5. height: 200px;
  6. border: @arguments;
  7. line-height: 300px;
  8. }

五、!!Less 的解析顺序是从后往前解析

  1. @front:"i am frond";
  2. @var :"front";
  3. #wrapper::after {
  4. content:@@var;
  5. }
  1. // Less 的继承 &:extend();
  2. .box {
  3. color: red;
  4. background: #000;
  5. }
  6. #title {
  7. width: 200px;
  8. height: 200px;
  9. // 继承小括号里选择器的样式
  10. &:extend(.box);
  11. }

六、 Less 也支持逻辑判断