zoukankan      html  css  js  c++  java
  • Less基本知识

    Less

    命令行用法

    1. 下载:

      npm install -g less
      
    2. 将less文件转换成css文件:

      1.lessc styles.less
      2.lessc styles.lesss styles.css
      
    3. 缩小转化文件

      lessc --clean-css styles.less styles.min.css
      

    代码用法

    1. 通过node方式导入编译:

      var less = require('less');
      
      // Less的render函数负责将less 转化成 css文件 具体情况需要查看相关文档,查看具体的option
      less.render('.class {  (1 + 1) }', function(e,output {
      	console.log(output.css);
      }));
      
      
      // 输出情况
      .class{
      	2;
      }
      
    2. 通过浏览器的方式

      <link rel="stylesheet/less" type="text/css" href="styles.less" />
      <script src="less.js" type="text/javascript"></script>
      // 先link后Script
      // less文件间是相互独立的,文件间的变量等是不可互相访问的
      // 由于浏览器的原始策略相同,因此加载外部资源需要启用CORS
      

      选项设置:

      ​ 设置必须是在<script src="less.js" type="text/javascript"></script>之前设置一个全局的less对象;

      <!-- set options before less.js script -->
      <script>
        less = {
          env: "development",
          async: false,
          fileAsync: false,
          poll: 1000,
          functions: {},
          dumpLineNumbers: "comments",
          relativeUrls: false,
          rootpath: ":/a.com/"
        };
      </script>
      <script src="less.js"></script>
      

    语言特性

    1. 变量: @+name 变量实际上就是常量,只能定义一次

      @nice-blue: #5B83AD;
      @light-blue: @nice-blue + #111;
      // 颜色可以运算
      #header {
        color: @light-blue;
      }
      
      //输出
      #header {
        color: #6c94be;
      }
      
    2. Mixins 混入模式:将一个组css样式规则直接混入到另一个规则中

      .bordered {
        border-top: dotted 1px black;
        border-bottom: solid 2px black;
      }
      
      #menu a {
        color: #111;
        .bordered;  // 进行混入,都会有bordered的规则
      }
      
      .post a {
        color: red;
        .bordered;
      }
      
    3. 嵌套规则

      // css规则
      #header {
        color: black;
      }
      #header .navigation {
        font-size: 12px;
      }
      #header .logo {
         300px;
      }
      
      // less嵌套,类似于html的嵌套方式
      #header {
        color: black;
        .navigation {
          font-size: 12px;
        }
        .logo {
           300px;
        }
      }
      
      &这个符号代表当前选择器的父级
      .clearfix {
        display: block;
        zoom: 1;
      
        &:after {
          content: " ";
          display: block;
          font-size: 0;
          height: 0;
          clear: both;
          visibility: hidden;
        }
      }
      
      属性放在最上面,并且同一规则集中嵌套,相对顺序保持不变,冒泡
      .screen-color {
        @media screen {
          color: green;
          @media (min- 768px) {
            color: red;
          }
        }
        @media tv {
          color: black;
        }
      }
      
      //输出后
      @media screen {
        .screen-color {
          color: green;
        }
      }
      @media screen and (min- 768px) {
        .screen-color {
          color: red;
        }
      }
      @media tv {
        .screen-color {
          color: black;
        }
      }
      
      #a {
        color: blue;
        @font-face {
          src: made-up-url;
        }
        padding: 2 2 2 2;
      }
      
      //输出
      #a {
        color: blue;
      }
      @font-face {
        src: made-up-url;
      }
      #a {
        padding: 2 2 2 2;
      }
      
    4. 运算方式是+ - * 可运算到任何的数值,颜色,变量中,数值运算会在运算前考虑单位并转换数字.不同单位间不可直接转化

      // 单位相同的可以直接转化
      @conversion-1: 5cm + 10mm; // result is 6cm
      @base: 2cm * 3mm; // result is 6cm 乘法不会转化单位,以第一个单位为基准
      @conversion-2: 2 - 3cm - 5mm; // result is 1.5cm
      
      // 变量间单位相同也可直接转化
      @base: 5%;
      @filler: @base * 2; // result is 10%
      @other: @base + @filler; // result is 15%
      
      // 不同单位间不可直接转化
      @incompatible-units: 2 + 5px - 3cm; // result is 4px,是以px来换算的
      
      // 颜色操作也是可以的
      @color: #224488 / 2; //results in #112244
      background-color: #112244 + #111; // result is #223355
      
    5. 函数:less提供了很多可以进行颜色转化,字符运算等操作的函数

      @base: #f04615;
      @ 0.5;
      
      .class {
         percentage(@width); // returns `50%`
        color: saturate(@base, 5%);
        background-color: spin(lighten(@base, 25%), 8);
      }
      
    6. 命名空间Namespaces 将混入模式的规则进行封装或是只需要使用混入中的一部分规则时

      //原本存在这样的规则
      #bundle {
        .button {
          display: block;
          border: 1px solid black;
          background-color: grey;
          &:hover {
            background-color: white
          }
        }
        .tab { ... }
        .citation { ... }
      }
      
      //现在只想将button的属性进行混入,或则说只需要button的属性
      #header a {
        color: orange;
        #bundle > .button;
      }
      
    7. 范围scope 与Vue中的Scope应该是一样的,当在对变量和混入进行查询时,先在本地进行查询,如果找不到就像父级中进行查找.

      @var: red;
      
      #page {
        @var: white;
        #header {
          color: @var; // white 类似于作用域的形式
        }
      }
      
      // 变量和混入不必事先声明即可使用,类似于javascript中的变量提升
      @var: red;
      
      #page {
        #header {
          color: @var; // white
        }
        @var: white; // 出现变量提升
      }
      
    8. 注释comments

      /* One hell of a block
      style comment! */
      @var: red;
      
      // Get in line!
      @var: white;
      
    9. 导入important

      @import "library"; // library.less 导入文件中的变量可以直接用
      @import "typo.css";
      

    变量

    主要是将相同的数值,通过变量来替换,方便对相同数值的一致更改.

    1. 在规则中属性值使用变量

      @link-color:        #428bca; // sea blue
      @link-color-hover:  darken(@link-color, 10%);
      
      // Usage
      a,
      .link {
        color: @link-color;
      }
      a:hover {
        color: @link-color-hover;
      }
      .widget {
        color: #fff;
        background: @link-color;
      }
      
    2. 在选择器中使用变量:对于选择器变量@Selection 那么使用可以.|#@{Selection}

      // Variables
      @my-selector: banner;
      
      // Usage
      .@{my-selector} {
        font-weight: bold;
        line-height: 40px;
        margin: 0 auto;
      }
      
    3. 地址URL中使用,使用{}将变量名进行包裹使用

      // Variables
      @images: "../img";
      
      // Usage
      body {
        color: #444;
        background: url("@{images}/white-sand.png");
      }
      
    4. 导入import 中使用变量

      // Variables
      @themes: "../../src/themes";
      
      // Usage
      @import "@{themes}/tidal-wave.less";
      
    5. 属性中使用变量

      @property: color;
      
      .widget {
        @{property}: #0ee;
        background-@{property}: #999;
      }
      
    变量的懒加载
    1. 变量是延迟加载的,不需要在使用前进行声明.

      .lazy-eval {
         @var;
      }
      
      @var: @a;
      @a: 9%;
      
      //  9%
      .lazy-eval-scope {
         @var;
        @a: 9%; // 就近原则 先考虑同一作用域下的变量
      }
      
      @var: @a;
      @a: 100%;
      
      // three:3 ;one: 1
      @var: 0;
      .class {
        @var: 1;
        .brass {
          @var: 2;
          three: @var;
          @var: 3;
        }
        one: @var;
      }
      
    默认值
    // library
    @base-color: green;
    @dark-color: darken(@base-color, 10%);
    
    // use of library
    @import "library.less";
    @base-color: red; // 可以很容易的覆盖默认数据
    

    Extend

    ExtendLess的伪类,主要是给父类扩展Inline选择器的规则

    nav ul {
      &:extend(.inline);
      background: blue;
    }
    .inline {
      color: red;
    }
    
    //输出
    nav ul {
      background: blue;
    }
    .inline,
    nav ul {
      color: red;
    }
    
    可以将该扩展放置到规则内部,也可放置到选择器名上作为伪类选择器
    .a:extend(.b) {} // 作用到选择器上
    
    // 作用到规则内
    .a {
      &:extend(.b);
    }
    
    .c:extend(.d all) {
      // 可以扩展所有带有'.d'的规则,如 ".x.d" or ".d.x"
    }
    
    .e:extend(.f, .g) {} // 可以一起扩展
    .some-class:extend(.bucket tr) {} // 扩展嵌套规则
    

    Mixins

    混入

    .a, #b {
      color: red;
    }
    .mixin-class {
      .a(); // .a 和.a()一样
    }
    .mixin-id {
      #b();
    }
    
    // 输出
    .a, #b {
      color: red;
    }
    .mixin-class {
      color: red;
    }
    .mixin-id {
      color: red;
    }
    
    // 不可单独使用,不输出,只能作为混合使用
    .my-other-mixin() {
      background: white;
    }
    
    .foo (@bg: #f5f5f5, @color: #900) { // 作为函数使用
      background: @bg;
      color: @color;
    }
    .unimportant {
      .foo();
    }
    .important {
      .foo() !important; // 最高级
    }
    
  • 相关阅读:
    mysql_数据查询_嵌套查询
    mysql_数据查询_连接查询
    大白_uva10795_新汉诺塔
    codeforces_731C_[dfs][并查集]
    Ajax+asp.net实现用户登陆 转自http://www.shangxueba.com/jingyan/2933319.html
    entity framework 中一些常用的函数 转自http://www.cnblogs.com/williamzhu/
    转自新浪博客的网页运作原理
    一些ASP.NET的小知识点
    。。
    .NET
  • 原文地址:https://www.cnblogs.com/panjingshuang/p/12367831.html
Copyright © 2011-2022 走看看