编译型CSS(Less)

以你之姓@ 2023-02-13 14:45 278阅读 0赞

编译型HTML:模板引擎(Pug)。

编译型CSS:less、sass、stylus。

一、如何搭建Less的运行环境

1、Vue项目下的Less:

(1)利用npm下载Less:

  1. npm install less --save-dev
  2. npm install less-loader --save-dev
  3. //less-loader的最高版本:6.0

(2)卸载最高版本less-loader,下载4.1.0版本。

  1. npm install less-loader
  2. npm install less-loader@4.1.0 --save-dev

(3)配置web-pack:@\build\webpack.base.conf.js

  1. {
  2. test:/\.less$/,
  3. loader:'style-loader!css-loader!less-loader'
  4. }

(4)在单组件文件.vue中

  1. <style lang="less">
  2. //less代码
  3. </style>

2、uni-app项目下的Less

工具 | 插件安装:less编译(安装)
在但组件文件.vue中:<style lang="less"></style>

3、原生开发下如何使用Less

  1. 使用编译型CSS必须在服务器下操作。
  2. 新建本地文件:<link rel=“stylesheet/less” type=“text/css” href=“style/index.less” />
  3. 在less官网上下载less.js文件:<script src=“js/less.min.js”></script>

二、在Less技术中使用变量

  1. 定义变量:@变量名:变量值
  2. 使用变量:
    (1)变量可以作为css属性的取值:@变量名

    1. @co:#3358ff;
    2. .box{
    3. color:@co
    4. }

    (2)变量作为CSS属性取值以外的用法:@{变量名}

    1. <div class="first">我是first</div>
    2. @fi:first;
    3. @bgc:background-color;
    4. .@{ fi}{
    5. color: #ff5857;
    6. @{ bgc}:#0f0;
    7. }

    在这里插入图片描述

三、在Less技术中使用嵌套

  1. 普通嵌套:根据HTML标记对的嵌套关系实现

    @back:#c2d3c1;

    demo{

    1. width: 100%;
    2. height: 50px;
    3. background-color: @back;
    4. .ul{
    5. width: 1200px;
    6. height: 50px;
    7. background-color: #ff5857;
    8. margin: 0 auto;
    9. display: flex;
    10. li{
    11. width: 25%;
    12. height: 100%;
    13. text-align: center;
    14. line-height: 50px;
    15. }
    16. }

    }

  2. 鼠标经过

    li{

    1. width: 25%;
    2. height: 100%;
    3. text-align: center;
    4. line-height: 50px;
    5. &:hover a{
    6. text-decoration: underline; //&表示上一层级的选择器
    7. }
    8. a{
    9. color: #7fa96a;
    10. }

    }

四、Less运算:+ - * / ()

  1. +用来表示数值相加,不能表示字符串连接。
  2. 运算符两侧的运算数有一侧带有单位即可。
  3. 运算符与运算数之间必须带有空格。

    @height:50px;

    demo{

    1. width: 100%;
    2. height: @height + 20px;

    }

五、混合(Mixin)

  1. 无参混合:
    (1)创建混合:

    1. .fontStyle{
    2. font-size: 20px;
    3. color: #3385ff;
    4. }
    5. #fontStyle(){
    6. font-size: 20px;
    7. color: #ff5857;
    8. }
    9. #box(){
    10. font-size: 50px;
    11. }

    (2)调用混合:

    1. .demo{
    2. .fontStyle();
    3. }
    4. .demo{
    5. #box();
    6. }
  2. 有参混合:

    .fontStyle(@fs,@color,@ff){

    1. font-size: @fs;
    2. color: @color;
    3. font-family: @ff;

    }
    .fa{

    1. .fontStyle(20px,#ff5857,Microsoft YaHei);

    }
    .fb{

    1. .fontStyle(16px,#3385ff,SimSun);

    }
    .fc{

    1. .fontStyle(26px,orange,SimHei);

    }

(1)混合中的形参可以带有默认值:

  1. .fontStyle(@fs,@color:#d8ad7a,@ff){
  2. font-size: @fs;
  3. color: @color;
  4. font-family: @ff;
  5. }

(2)Less混合中实参向形参的传递时按照参数名来进行传递的。

  1. .fd{
  2. .fontStyle(@color:gray,@fs:30px,@ff:Microsoft YaHei);
  3. }

(3)使用@arguments表示传递过来的所有参数。

  1. .borderS(@style,@width,@color){
  2. border: @arguments;
  3. }
  4. .demo{
  5. .borderS(solid,1px,#f00)
  6. }

(4)使用@rest表示剩余的参数。

  1. .borderS(@bgc,@rest...){
  2. background-color: @bgc;
  3. border: @rest;
  4. }
  5. .demo{
  6. .borderS(#3385ff,solid,1px,#f00)
  7. }
  8. /*或者写为:*/
  9. .borderS(@rest...){
  10. border: @rest;
  11. }

(5)在混合中使用匹配模式:
在这里插入图片描述

  1. <div id="box">我使用了编译型CSS:less</div>
  2. <div id="fox">我使用了编译型CSS:less</div>
  3. .st(abc,@a,@b){
  4. font-size: @a;
  5. color: @b;
  6. }
  7. .st(xyz,@a){
  8. text-align: @a;
  9. }
  10. #box{
  11. .st(abc,18px,#f00);
  12. }
  13. #fox{
  14. .st(xyz,right);
  15. }

例:制作四个方向的三角形(此案例为向上):

  1. <div class="box"></div>
  2. .triangle(top,@width,@color){
  3. border-color: @color transparent transparent transparent;
  4. }
  5. .triangle(right,@width,@color){
  6. border-color: transparent @color transparent transparent;
  7. }
  8. .triangle(bottom,@width,@color){
  9. border-color: transparent transparent @color transparent;
  10. }
  11. .triangle(left,@width,@color){
  12. border-color: transparent transparent transparent @color;
  13. }
  14. .triangle(@_,@width,@color){
  15. width: 0;
  16. height: 0;
  17. border-style: solid;
  18. border-width: @width;
  19. }
  20. .box{
  21. .triangle(bottom,20px,#3385ff);
  22. }

六、嵌套混合/命名空间:

  1. <div id="box">
  2. <button class="btn">按钮1</button>
  3. </div>
  4. <button class="btn2">按钮2</button>
  5. #box{
  6. .btn{
  7. color: #3385ff;
  8. width:80px;
  9. height: 30px;
  10. border: 1px solid gray;
  11. &:hover{
  12. background-color: #ff3857;
  13. }
  14. }
  15. }
  16. .btn2{
  17. /*方法一*/
  18. #box.btn();
  19. /*方法二*/
  20. #box > .btn();
  21. }

七、混合引导(Minxin Guards)

在Less中使用流程控制。

  1. 条件控制:
    when(条件1) and | , (条件2)
    逻辑与:and
    逻辑或:,
    逻辑非:not
    例:根据元素的宽度(200px)设置背景颜色。元素宽度大于200px,背景颜色为@ff857;元素宽度小于200px,背景颜色为#3385ff;

    1. .setBgc(@width,@height) when(@width>200px){
    2. width: @width;
    3. height: @height;
    4. background-color: #ff5857;
    5. }
    6. .setBgc(@width,@height) when(@width<=200px){
    7. width: @width;
    8. height: @height;
    9. background-color: #3385ff;
    10. }
    11. .box1{
    12. .setBgc(150px,220px)
    13. }
    14. .box2{
    15. .setBgc(220px,220px)
    16. }
    1. 循环控制
      本质是使用混合的递归调用。
      如何在Node环境下全局使用Less技术。
      (1)全局安装Less:npm install -g less
      (2)在本地新建一个文件夹:例如文件夹less
      (3)在该文件夹中编译less代码
      (4)在cmd中进入该文件夹,并编译less文件:less index.less index.css
      例:制作一个自动栅格系统:

      1. .grid(@n,@i:1) when(@i<=@n){
      2. .col-@{ i}{
      3. width:@i*100%/@n
      4. }
      5. .grid(@n,@i+1)
      6. }
      7. .grid(24);

发表评论

表情:
评论列表 (有 0 条评论,278人围观)

还没有评论,来说两句吧...

相关阅读

    相关 编译和解释

    \简介,计算机不能直接理解高级语言,只能 理解和运行机器语言(机器码,即二进制码)。必须要把高级语言翻译成机器语言,计算机才能运行高级语言所编写的程序。翻译的方式有两种,一个是

    相关 编译语言和解释语言

    计算机是不能够识别高级语言的,所以当我们运行一个高级语言程序的时候,就需要一个“翻译机”来从事把高级语言转变成计算机能读懂的机器语言的过程。这个过程分成两类,第一种是编译,第二