最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 让我们再学一下less

    正文概述 掘金(答案cp3)   2021-06-09   448

    这是我参与更文挑战的第8天,活动详情查看: 更文挑战

    写在前面

    less之前看过很多文章,也写过,但是只是记住一些常用用法,很多时候又得去网上翻找资料才记得,所以今天我打算把less重温一遍,把安装,使用,语法这些都记录下来,记录成文章,方便后续查阅。

    定义

    使用

    第一种方式:引入less.js

    1. 在html引入less.js

      可以通过cdn方式,也可以把less下载下来,然后通过script标签引入

      <script src="http://cdnjs.cloudflare.com/ajax/libs/less.js/3.11.1/less.min.js"></script>
      // 或者
      <script src="less.min.js"></script>
      
    2. 引入编写好的less文件

      <link rel="stylesheet/less" href="index.less">
      <script src="less.min.js"></script>
      
    3. 执行html

    第二种方式:安装依赖

    1. node全局安装less
      npm install -g less  // 也可以通过  yarn global add less
      
    2. 在命令行执行
      lessc index.less index.css
      
    3. 在html引入编译好的index.css

    语法

    变量(Variables)

    css 如果一个颜色多个地方使用,就得定义多次,如果需要修改,也得改多次,这样很不方便;
    less支持变量的写法,把那些用的比较多的相同的值通过变量来定义,只需修改一次。

    @ 开头声明变量

    @width: 50px;
    @color: red;
    @bgColor: blue;
    
    .div1 {
     width: @width;
     color: @color;
     background: @bgColor;
    }
    .div2 {
     width: @width;  // 如果要修改width 只需改上面定义的width就行
     color: @color;
     background: @bgColor;
    }
    
    // less编译后
    .div1 {
     width: 50px;
     color: red;
     background: blue;
    }
    .div2 {
     width: 50px;
     color: red;
     background: blue;
    }
    
    

    混合(Mixins)

    将一类样式的封装好,可以在别的元素里面直接调用,复用

    // 需要复用的样式
    .center(@width: 100px) {
      width: @width;
      display: flex;
      justify-content: center;
      align-items: center;
      line-height: normal;
    }
    #div1 {
       // 调用
      .center();
    }
    #div2 {
       // 调用,可以传参
      .center(200px);
    }
    // 编译后
    #div1 {
      width: 100px;
      display: flex;
      justify-content: center;
      align-items: center;
      line-height: normal;
    }
    #div2 {
      width: 200px;
      display: flex;
      justify-content: center;
      align-items: center;
      line-height: normal;
    }
    

    嵌套(Nesting)

    css的元素之间的样式是不能嵌套的,less扩展了这个,可以跟 HTML 的组织结构一样嵌套写样式,方便寻找和修改
    嵌套用的比较多有个符号&,代表的是父级元素的引用

    @color: red;
    body {
      .header {
        color: @color;
      }
      .content {
        color: @color;
        .item {
          color: @color;
          &.item-1 {
            color: @color;
          }
          &-2 { // 要注意这种情况,这里只是使用父级名称
            color: @color;
          }
        }
      }
      .footer {
        color: @color;
      }
    }
    
    // 编译后
    body .header {
      color: red;
    }
    body .content {
      color: red;
    }
    body .content .item {
      color: red;
    }
    body .content .item.item-1 {
      color: red;
    }
    body .content .item-2 {
      color: red;
    }
    body .footer {
      color: red;
    }
    
    

    运算(Operations)

    支持+-*/ 符号运算

    @width-200: 100px + 100px;
    @width-50: 150px - 100px;
    @width-10: 5px * 2px;
    
    .div1 {
     width: @width-200;
    }
    .div2 {
     width: @width-50;
    }
    .div3 {
     width: @width-10;
    }
    
    // 编译后
    .div1 {
      width: 200px;
    }
    .div2 {
      width: 50px;
    }
    .div3 {
      width: 10px;
    }
    

    内置函数(Functions)

    Less 内置了很多函数,可以处理百分比,小数,颜色等等

    @width: 0.5;
    @color: #fa0141;
    div{
        width: percentage(@width); // returns `50%`
        color: saturate(@color, 5%) // 增加5%的颜色饱和度
    }
    
    // 编译后
    div {
      width: 50%;
      color: #fb0041;
    }
    

    导入(Importing)

    可以导入别的less文件,也可以是css文件,导入后可以使用该文件的变量之类等等

    import 'other.less'
    import 'other.css'
    

    注释(Comments)

    多行注释可以使用 /**/,单行注释可以使用//

    /*
    多行注释
    */
    
    // 单行注释
    

    循环 (Loop)

    less没有现成的for循环,一般是用when + 递归实现;

    示例代码:
    .loop(@counter) when (@counter > 0) {
      .loop((@counter - 1));    // 下一次调用,直到@counter等于0
      width: (10px * @counter); 
    }
    
    div {
      .loop(5); // 调用,传参5
    }
    
    // 编译后
    div {
      width: 10px;
      width: 20px;
      width: 30px;
      width: 40px;
      width: 50px;
    }
    
    

    条件判断 (Condition)

    less 没有现成的if else,你可以使用 when, 如果需要可以结合and 或者 not 或者 ,逗号运算符

    .width1(@width) when (@width > 200px) {
        width: @width;
        background: yellow;
    }
    // and 都要满足
    .width2(@width) when (@width > 200px)  and (@width < 400px) {
        width: @width;
        background: red;
    }
    // not 非运算,不用满足
    .width3(@width) when  not (@width > 200px){
        width: @width;
        background: blue;
    }
    // 逗号运算符 或运算,其中一个满足就行
    .width4(@width) when  (@width > 100px), (@width > 200px){
        width: @width;
        background: green;
    }
    .div1 {
      .width1(400px);
    }
    .div2 {
      .width2(300px);
    }
    .div3 {
     .width3(100px);
    }
    .div4 {
     .width4(150px);
    }
    
    // 编译后
    .div1 {
      width: 400px;
      background: yellow;
    }
    .div2 {
      width: 300px;
      background: red;
    }
    .div3 {
      width: 100px;
      background: blue;
    }
    .div4 {
      width: 150px;
      background: green;
    }
    
    

    继承(extend)

    :extend是一个伪类,可继承它所引用的选择器的样式,参数是所要引用的选择器

    .a {
      color: red;
      .b {
        color: green;
      }
    }
    .c {
      &:extend(.a);
    }
    
    // 编译后
    // a和c样式写在一起
    .a,
    .c {
      color: red;
    }
    .a .b {
      color: green;
    }
    
    

    总结

    以上就是总结的常用的less语法,希望你们看了之后有所收获。


    起源地下载网 » 让我们再学一下less

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元