zoukankan      html  css  js  c++  java
  • CSS预处理器-Less

    CSS预处理器:定义了一种新的语言,其基本思想是,用一种专门的编程语言,为css增加一些编程的特性,将css作为目标生成文件,然后开发者就只要使用这种语言进行编码工作。它提供了一些变量、简单的使用逻辑、函数等等,优点是简化了css代码的编写,增加了维护性、可读性和适应性。

    CSS预处理器的类型有:Less、Sass、Stylus等;

    • Sass:是对css的语法的扩充。诞生于2007年,最早的一款css预处理器语言。它可以使用变量、常量、嵌套、混入、函数等功能。写完需要编译出合法的css才能让浏览器使用,也就是说它本身的语法不是太容易让浏览器识别,因为它不是标准的css格式。

        官网地址:sass-lang.com

    • Less:2009年开源的一个项目,比较容易上手。它提供了多种能够平滑的将写好的代码转化成标准的css代码,很多框架中常能看到它的身影(如BootStrap)。

        官网地址:lesscss.cn

        bootstrap中的less教程:www.bootcss.com/p/lesscss/

    Less:

    一、安装及调用

    • 命令行安装(通过node.js软件包管理器npm进行):
    1 $ npm install -g less
    • 命令行使用

                  调用编译器:

    1 $lessc style.less

                  要将css结果保存到style.css中:

    1 $ lessc style.less style.css

                  要缩小内容,可使用插件clean-css,安装后使用--clean-css选项指定缩小的css输出:

    1 $ lessc --clean-css style.less style.min.css
    • html内编写:导入style.less文件,(标签属性type=”text/less”),后导入less.js文件
    1 <link rel="stylesheet/less" type="text/css" href="styles.less" />
    2 <script src=”less.js”></script>
    • less文件编译:编写代码至xxx.less文件中,使用less编译工具编译成xxx.css,在html中导入xxx.css文件

                  less编译工具:koala-app.com

    二、编译:

    • 注释:以//开头的,不会编译进css文件中;以/**/包裹的会直接编译进css文件中。
    • 变量:使用@来声明一个变量,如@pink:pink;
      1 作为普通属性值来使用,如:直接使用@pink;
      2 作为选择器和属性名来使用,如:定义:@id:idName;使用:#@{id};
      3 作为URL来使用,如:@{url}
      4 变量的延迟加载,即先读取数据再调用,有块级作用域思想
    • 嵌套规则:选择器是父子关系,子选择器可以写在父选择器内;同级(包含伪类)则得写在同一级上;在选择器样式内用”&“加伪类可以定义该选择器的伪类或伪元素;
       1 /*选择器父子关系的*/
       2 .parent{
       3     /*样式*/
       4     .child{
       5         /*样式*/
      6 &:伪类/伪元素{
      7   /*样式*/
      8 }
      9 } 10 .child:伪类/伪元素{ 11 /*样式*/ 12 } 13 &:伪类/伪元素{ 14 /*样式*/ 15 } 16 }
    • less的混合:混合式将一系列属性从一个规则集引入到另一个规则集的方式

              定义:在less规则有明确指定,使用"."的形式来定义

     1 普通混合:将样式调用到另一个地方,集合会被输出到css上,
      如:定义:
          .集合名
    {
            /*样式*/
          
    }
        调用:
          .集合名;
    2 不带输出的混合:对比普通混合,不会将集合输出到css文件上,
      如:定义:
          .集合名() 
    { 
            /*样式*/
          
    }
        调用: 
          .集合名();
    3 带参数的混合:定义时将需要调用的形参写在括号内,在输出时按照顺序写上实参 4 带参数并且有默认值的混合:定义时在形参后面加上冒号和值,
      如:
        .集合名(@n1:10px)
    {
          /*样式*/
        
    } 5 带多个参数的混合:多个参数(形参、实参)用“,“逗号隔开 6 命名参数:定义时有多个参数并带默认值,只要修改其中一项参数的值时,就可以使用命名参数,在调用时括号内形参加冒号加值即可,
      如:定义:
          .集合名(@n:10px,@m:20px,@a:30px)
    {
            /*样式*/};
        调用:
          .集合名(@a:15px)
    {
            /*样式*/
          
    } 7 匹配模式:定义时第一个值取不同,调用时根据写不同的值来匹配与之对应的样式,
      如:三角形方向、定位、浮动等
    8 匹配不同条件时又想匹配相同条件的样式,可以新建同名混合使用“@_“参数来表示匹配全部 9 arguments变量:相当于数组,定义方法时里面的属性的值引用@arguments时,编译出来的css会将参数按顺序填入该位置,
      如:
        .border(@1,@2,@3)
    {
          border:@arguments;
        };
        #ele{
          .border(1px,solid,black)
        }
      编译出来后就是:#ele{border:1px solid #000000}
    • 计算:less可以进行 + - * / 等操作,也可以使用小括号进行一些更复杂的运算操作,计算时双方只需其中一方带单位即可;如:
      1 @20+20px   
      2 .ele{width:20+@widht}
    • 继承:可以给多个选择器添加相同的样式;包裹在父级内的子集或伪类,父级使用继承,子集的样式同样继承;
    1 /*语法*/
    2 .ele:extend(.style){}
    3 /*继承类的所有状态(点击、选中等)*/
    4 .ele:extend(.style all){}
    5 /*给选择器继承的两种方式*/
    6 .ele:extend(.style){}
    7 .ele{
    8   &:extend(.style);
    9 }

          混合和继承的区别:混合是把样式复制站别到类中,继承是把相同样式的选择器变成并集选择器;继承性能比混合高,灵活性比混合低;

    • 避免编译:在less中,有部分值不想让它编译时编译出来,想保持原样,这时候可以使用特殊的格式来避免:
      1 background-color:~“red”;
    • 外部引用:在less文件中可以在任意位置导入想导入的文件;
      1 @import url(文件位置/文件名);
  • 相关阅读:
    Javascript基础三(函数)
    Javascript基础二(程序的三大结构)
    Javascript基础一(介绍)
    HTML + CSS (下)【更新中】
    HTML + CSS (上)
    sql防注入式
    sqlserver根据id集合,批量插入。(巧用sqlserver内置函数)
    三层架构的理解(转)
    基于asp.net的ajax分页
    2013年7月28日web前端学习笔记-------head相关标签应用
  • 原文地址:https://www.cnblogs.com/miao91/p/13229643.html
Copyright © 2011-2022 走看看