less

less

vscode生成html模板

vscode: !号 + tab键 生成html模板改为 html:5 + tab键 生成html模板

HBuilderX less编译

在less文件上单击鼠标右键--点击外部命令--点击less编译,每次修改完less代码都要重新编译一下

vscode less 编译

安装Easyless 插件,书写完less文件后,ctrl + s 保存后即可生成对应的css文件,之后如果修改less文件的代码时ctrl + s 保存后即可同步更新到css文件

注释

less中的注释
/*这是注释,这种注释在生成的css文件里是可以看见的*/
// 这也是注释,这种注释在生成的css文件里是不可以看见的

变量

@变量名:变量值

@background1:red;

表示:background1 变量的值为红色

@w:200px

表示: w变量的值为200px

@c:color

表示:c变量的值为:color 样式名

  • 用变量去定义一个属性名的时候,在用的时候,一定要给这个名字加上一对大括号

@images:"../images"(定义路径时,该路径一定要写在引号中)

表示: images变量表示 该 ../images 路径

用变量去定义一个路径的时候,在用的时候,一定要给这个路径加上一对大括号

示例less文件

@background1:#000;
@w:200px;
@c:color;
@images:'../images';
.one{
    width:@w;
    height:100px;
    background-color:@background1;
}
.two{
    width:@w;
    height:100px;
    @{c}: #000;
    background-image:url("@{images}/1.jpeg");
}
/*这是注释,这种注释在生成的css文件里是可以看见的*/
//这也是注释,这种注释在生成的css文件里是不可以看见的
示例less文件生成的css文件

.one {
  width: 200px;
  height: 100px;
  background-color: #000;
}
.two {
  width: 200px;
  height: 100px;
  color: #000;
  background-image: url("../images/1.jpeg");
}
/*这是注释,这种注释在生成的css文件里是可以看见的*/

混合(类似于js中的函数,在less中存在混合提升,声明的混合可以在less任何地方调用)

  • 写法1:把另一个选择器的名字放在这个样式里,这个样式就会具有放入的选择器的样式

    不带参数的混合代码会在对应的css文件中显示

示例的less样式
.common{
    font: size 20px;
    line-height:30px;
    background-color:red;
    color:#fff;
}

.demo{
    width:100px;
    height:30px;
    .common;
}
示例less样式对应生成的css样式

.common {
  font: size 20px;
  line-height: 30px;
  background-color: red;
  color: #fff;
}
.demo {
  width: 100px;
  height: 30px;
  font: size 20px;
  line-height: 30px;
  background-color: red;
  color: #fff;
}

  • 混合带参数(带参数的混合代码不会在对应的css文件中显示)
示例less代码
.border(@w,@style,@color){
    border:@w @style @color;
}
//带参数的混合代码不会在对应的css文件中显示

.demo1{
    background-color:#008c8c;
    .border(2px,solid,orange);
}
示例less代码对应的css代码
.demo1 {
  background-color: #008c8c;
  border: 2px solid orange;
}

  • 混合带参数,参数可以带值(混合不传值时,用的是默认参数,混合传值时,用的是传入的参数)
示例less代码

.bac(@color:blue){
// 这里@color参数的默认值为 blue
    background-color:@color
}
.demo2{
    .bac();
}

混合不传值时,用的是默认参数
示例less代码对应的css代码

.demo2 {
  background-color: blue;
}
示例less代码
.bac(@color:blue){
    background-color:@color
}
.demo2{
    .bac(orange);
}

混合传值时,用的是传入的参数,这里@color形参对应的实参为 orange
示例css代码

.demo2 {
  background-color: orange;
}

  • 混合带多个参数

    示例less代码
    
    .border(@w:2px,@style:solid,@color:red){
      border:@w @style @color;
    }
    
    .demo2{
      .border(@w:1px,@color:blue)
      //传入值时,形参就取传入的值,不传入值时,形参就取默认值
    }
    
    示例less代码对应的css代码
    
    .demo2 {
      border: 1px solid blue;
    }
    
    
    示例less代码
    
    .border(@w:2px,@style:solid,@color:red){
      border:@w @style @color;
    }
    
    .demo2{
      .border(@color:blue)
    }
    
    示例less代码对应的css代码
    
    .demo2 {
      border: 2px solid blue;
    }
    
  • 混合处理样式兼容

    示例less代码
    
    .boxShaow(@left:5px,@top:2px,@z:5px,@color:orange){
      -webkit-box-shadow:@left,@top,@z,@color;
      -moz-box-shadow:@left,@top,@z,@color;
      -ms-box-shadow:@left,@top,@z,@color;
      -o-box-shadow:@left,@top,@z,@color;
      box-shadow:@left,@top,@z,@color;
    }
    
    .demo2{
      .boxShaow();
    }
    
    示例css代码
    
    .demo2 {
      -webkit-box-shadow: 5px, 2px, 5px, orange;
      -moz-box-shadow: 5px, 2px, 5px, orange;
      -ms-box-shadow: 5px, 2px, 5px, orange;
      -o-box-shadow: 5px, 2px, 5px, orange;
      box-shadow: 5px, 2px, 5px, orange;
    }
    
    

匹配模式(if判断)

边框制作三角形
.angle{
    width:0;
    height:0;
    overflow:hidden;
    // 兼容IE6以下的最小高度
    border-width:10px;
    border-color:transparent transparent red transparent;
    //这里为上三角
    border-style:solid;
}
示例less代码(这里top、left、bottom、right为条件)
表示调用.triangle 时,如果传入的条件为 top,那么执行.triangle匹配模式(条件)为top的混合
表示调用.triangle 时,如果传入的条件为 left,那么执行.triangle匹配模式(条件)为left的混合
表示调用.triangle 时,如果传入的条件为 right,那么执行.triangle匹配模式(条件)为right的混合
表示调用.triangle 时,如果传入的条件为 bottom,那么执行.triangle匹配模式(条件)为bottom的混合

.triangle(top,@w,@color){
    border-width:@w;
    border-color:transparent transparent @color transparent;
    border-style:solid;
}
.triangle(bottom,@w,@color){
    border-width:@w;
    border-color:@color transparent transparent transparent;
    border-style:solid;
}
.triangle(left,@w,@color){
    border-width:@w;
    border-color:transparent @color transparent transparent;
    border-style:solid;
}
.triangle(right,@w,@color){
    border-width:@w;
    border-color:transparent transparent transparent @color;
    border-style:solid;
}
.triangle(@_,@w,@color){
//公用的样式,需要放到下面这个class里面,第一个参数是固定格式(@_),这里的@_可以填top、bottom、left、right
// 例如填left值,.triangle会将公共样式与匹配到left匹配模式中的样式都添加到使用.triangle的样式中
    width:0;
    height:0;
    overflow:hidden;
}
.demo3{
    .triangle(left,@w:10px,@color:blue);
}
表示调用.triangle 时,如果传入的条件为 top,那么执行.triangle匹配模式为top的混合
表示调用.triangle 时,如果传入的条件为 left,那么执行.triangle匹配模式为left的混合
表示调用.triangle 时,如果传入的条件为 right,那么执行.triangle匹配模式为right的混合
表示调用.triangle 时,如果传入的条件为 bottom,那么执行.triangle匹配模式为bottom的混合
示例less代码对应的css代码

.demo3 {
  border-width: 10px;
  border-color: transparent blue transparent transparent;
  border-style: solid;
  width: 0;
  height: 0;
  overflow: hidden;
}

嵌套

  • & 代表上一层的选择器,即父级选择器
示例less代码

.demo4{
    width:200px;
    height:100px;
    h1{
        color:#000;
        a{
            color:orange;
            &::before{
                content:"你好";
                display:inline-block;
                background-color:#000;
            }
        }
    }
    &:hover{
        background-color:blue;
    }
}

示例less代码对应的css代码

.demo4 {
  width: 200px;
  height: 100px;
}
.demo4 h1 {
  color: #000;
}
.demo4 h1 a {
  color: orange;
}
.demo4 h1 a::before {
  content: "你好";
  display: inline-block;
  background-color: #000;
}
.demo4:hover {
  background-color: blue;
}

写html代码时,嵌套的越浅越好,因为浏览器的蜘蛛会爬你的网页,如果嵌套的越深,会降低嵌套内容的权重

  • 写html代码时,嵌套的越浅越好,因为浏览器的蜘蛛会爬你的网页,如果嵌套的越深,会降低嵌套中内容的权重

运算(注意运算符号前后应该加上空格,否则会报错,运算规则同数学上的运算规则)

示例less代码
@v:200px;
.demo6{
    width:@v + 100
}
示例less代码对应的css代码

.demo6 {
  width: 300px;
}
示例less代码

@v:200px;
.demo6{
    width:@v - 100
}

示例less代码对应的css代码

.demo6 {
  width: 100px;
}
示例less代码

@v:200px;
.demo6{
    width:@v * 100
}

示例less代码对应的css代码

.demo6 {
  width: 20000px;
}
示例less代码

@v:200px;
.demo6{
    width:@v / 100
}

示例less代码对应的css代码

.demo6 {
  width: 2px;
}

不希望less编译

示例less代码

.demo7 {
   // IE浏览器中的透明度使用方法,表示该元素的透明度为0.5
    filter: ~'alpha(opacity:50)';
}

不希望less编译的less代码,将其放入 ~'' 中  
例如  ~'不希望less编译的代码'

示例less代码对应的css代码

.demo7 {
  filter: alpha(opacity:50);
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 变量 注意你的less样式文件一定要在引入less.js前先引入。 备注:请在服务器环境下使用!本地直接打开可能会...
    286f50208306阅读 1,076评论 0 1
  • 学习Less-看这篇就够了 前言 CSS的短板 预处理语言的诞生 其中 就我所知的有三门语言:Sass、Less ...
    DragonRat阅读 619评论 1 4
  • 预处理语言的诞生 其中 就我所知的有三门语言:Sass、Less 、Stylus 。 Sass 诞生于 2007 ...
    moly琴阅读 174评论 0 0
  • 前言 CSS的短板 预处理语言的诞生 其中 就我所知的有三门语言:Sass、Less 、Stylus 。 Sass...
    岚平果阅读 429评论 0 1
  • sass的混合指令 mixin 混合指令(Mixin)用于定义可重复使用的样式,避免了使用无语意的 class,比...
    旭先生阅读 179评论 0 0