less的基本用法

摘要:
@参数类似于JS中引用所有参数的参数。,如果不满足条件,。backgroundwhennot{background:@color;}//,逗号分隔符:等同于OR运算||,只要满足其中一个条件,。fontwhen将被执行时,{font-size:@size;}#main{#card˃.bborder;#card.background;#card˃.font;}/*生成的CSS*/#main{border:solid#999200px;background:#111;font-size:40px;}nested less支持嵌套写入1。基本级嵌套#header{color:black;.navigation{font-size:12px;}。徽标{300px;}2。父选择&符号a{color:blue;&:ho ver{color:green;}}3。嵌套指令气泡//less.screen-color{@mediascreen{color:green;@media{color:red;}}}/*Css*/@media screen{.screen color:green;}}@media screen和{.scren color{color:red;}}运算符@base:5%@filler:@base*2;//结果为10%@其他:@base+@filler;//Result15%继承extend,这是Less的伪类。“;}导入1。导入较少文件时,可以省略后缀import“main”//相当于导入“main.less”;2.@import#main{font-size:15px;}@import“style”;3.引用使用@import导入外部文件,但不添加要编译到最终输出中的文件,仅引用

Less也是一种动态样式语言. 对CSS赋予了动态语言的特性,如变量,继承,运算, 函数. Less 既可以在客户端上运行 (支持IE 6+, Webkit, Firefox),也可在服务端运行 (借助 Node.js)。

使用方式

两种使用方式:第一种全局安装less,利用命令编译less;第二种直接引入less.js.

npm安装

npm install -g less 
npm install -g less-plugin-clean-css 

命令行

lessc styles.less styles.css  // 编译成css
lessc --clean-css styles.less styles.min.css  // 编译压缩css

引入less.js

这里注意要在less.js引入前引入.less样式文件

<link rel="stylesheet/less" href="http://t.zoukankan.com/style.less">
<script src="http://t.zoukankan.com/less.min.js"></script>

使用

变量

1. 值变量

less 的变量声明是以@开头

/* less */
@nice-blue: #5B83AD;
@light-blue: @nice-blue + #111;

#header {
  color: @light-blue;
}

2. 选择器变量

选择器也可使用变量,变量需要用@{}包括

@mySelector: .wrap;
@{mySelector}{ //变量名 必须使用大括号包裹
  color: #999;
   50%;
}

3. 属性变量

属性名称使用变量

@borderStyle: border-style;
@Soild:solid;
#wrap{
  @{borderStyle}: @Soild;//变量名 必须使用大括号包裹
}

4. url变量

@images: "../img";//需要加引号
body {
  background: url("@{images}/dog.png");//变量名 必须使用大括号包裹
}

5. 声明变量

类似于mixins,用于引入公共代码块

  • 结构: @name: { 属性: 值 ;};
  • 使用:@name();
// less
@background: {background:red;};
#main{
    @background();
}

// css
#main{
  background:red;
}

6. 变量作用域

less 中变量的作用域是采用就近原则

/* Less */
@var: @a;
@a: 100%;
#wrap {
   @var;
  @a: 9%;
}
@a: 8%;

/* 生成的 CSS */
#wrap {
   9%;
}

Mixins

可以直接引入定义好的类的样式直接混入到当前

1. 无参混入

.bordered {
  border-top: dotted 1px black;
  border-bottom: solid 2px black;
}
#menu a {
  color: #111;
  .bordered;  // 等价于.bordered()
}

2. 默认参数方法

  • Less 可以使用默认参数,如果 没有传参数,那么将使用默认参数。
  • @arguments 犹如 JS 中的 arguments 指代的是 全部参数。
  • 传的参数中 必须带着单位。
.border(@a:10px,@b:50px,@c:30px,@color:#000){
    border:solid 1px @color;
    box-shadow: @arguments;//指代的是 全部参数
}
#main{
    .border(0px,5px,30px,red);//必须带着单位
}

条件语句when

Less 没有 if else,它有 when用于做条件判断

/* Less */
#card{
    
    // and 运算符 ,相当于 与运算 &&,必须条件全部符合才会执行
    .border(@width,@color,@style) when (@width>100px) and(@color=#999){
        border:@style @color @width;
    }

    // not 运算符,相当于 非运算 !,条件为 不符合才会执行
    .background(@color) when not (@color>=#222){
        background:@color;
    }

    // , 逗号分隔符:相当于 或运算 ||,只要有一个符合条件就会执行
    .font(@size:20px) when (@size>50px) , (@size<100px){
        font-size: @size;
    }
}
#main{
    #card>.border(200px,#999,solid);
    #card .background(#111);
    #card > .font(40px);
}
/* 生成后的 CSS */
#main{
  border:solid #999 200px;
  background:#111;
  font-size:40px;
}

嵌套

less 支持嵌套写法

1. 基本层级嵌套

#header {
  color: black;
  .navigation {
    font-size: 12px;
  }
  .logo {
     300px;
  }
}

2. 父选择&符

a {
  color: blue;
  &:hover {
    color: green;
  }
}

3. 嵌套指令冒泡

// less
.screen-color {
  @media screen {
    color: green;
    @media (min- 768px) {
      color: red;
    }
  }
}

/* css */
@media screen {
  .screen-color {
    color: green;
  }
}
@media screen and (min- 768px) {
  .screen-color {
    color: red;
  }
}

运算符

@base: 5%;
@filler: @base * 2; // result is 10%
@other: @base + @filler; // result is 15%

继承

extend 是 Less 的一个伪类。它可继承 所匹配声明中的全部样式

1. extend 关键字的使用

/* Less */
.animation{
    transition: all .3s ease-out;
    .hide{
      transform:scale(0);
    }
}
#main{
    &:extend(.animation);
}
#con{
    &:extend(.animation .hide);
}

/*  CSS */
.animation,#main{
  transition: all .3s ease-out;
}
.animation .hide , #con{
    transform:scale(0);
}

2. all 全局搜索替换

使用选择器匹配到的 全部声明

/* Less */
#main{
   200px;
}
#main {
  &:after {
    content:"Less is good!";
  }
}
#wrap:extend(#main all) {}

/*  CSS */
#main,#wrap{
   200px;
}
#main:after, #wrap:after {
    content: "Less is good!";
}

导入

1. 导入 less 文件 可省略后缀

import "main"; 
//等价于
import "main.less";

2. @import 的位置可随意放置

#main{
  font-size:15px;
}
@import "style";

3. reference

使用@import (reference)导入外部文件,但不会添加 把导入的文件 编译到最终输出中,只引用。

/* Less */
@import (reference) "bootstrap.less"; 

#wrap:extend(.navbar all){}

函数

less 提供多种函数可以使用

1. 判断类型

isnumber(#ff0);     // 判断给定的值 是否 是一个数字
iscolor(#ccc)      //判断给定的值 是否 是一个颜色
isurl("")         // 判断给定的值 是否 是一个 url

2. 颜色操作

rgb(90, 129, 32)   //  #5a8120
mix(#ff0000, #0000ff, 50%)   // #800080
hsl(90, 100%, 50%)   // #80ff00 
argb(rgba(90, 23, 148, 0.5)) // #805a1794
darken(hsl(90, 80%, 50%), 20%)  // #4d8a0f

3. 数学函数

ceil(2.4)  // 3  
floor(2.6)  // 2
percentage(0.5) // 50%
round(1.67, 1) // 1.7
sqrt(25cm)   // 5cm
abs(-18.6%)  // 18.6%

其他

注释

/* */ CSS原生注释,会被编译在 CSS 文件中。
/   / Less提供的一种注释,不会被编译在 CSS 文件中

避免编译

使用 ~' 值 ' 结构可以避免被编译

  • 结构: ~' 值 '
/* Less */
#main{
  ~'calc(300px-30px)';
}

/*  CSS */
#main{
  calc(300px-30px);
}

变量拼串

在平时工作中,这种需求 太常见了。 在下面例子中, 实现了不同的 transtion-delay、animation、@keyframes

  • 结构: ~"字符@{变量}字符";
.judge(@i) when(@i=1){
  @size:15px;
}
.judge(@i) when(@i>1){
  @size:16px;
}
.loopAnimation(@i) when (@i<16) {
  
  .circle:nth-child(@{i}){
      .judeg(@i);
      border-radius:@size @size 0 0;
      animation: ~"circle-@{i}" @duration infinite @ease;
      transition-delay:~"@{i}ms";
  }
  @keyframes ~"circle-@{i}" {
      // do something...
  }
  .loopAnimation(@i + 1);
}

使用 JS

因为 Less 是由 JS 编写,所以 Less 有一得天独厚的特性:代码中使用 Javascript

/* Less */
@content:`"aaa".toUpperCase()`;
#randomColor{
  @randomColor: ~"rgb(`Math.round(Math.random() * 256)`,`Math.round(Math.random() * 256)`,`Math.round(Math.random() * 256)`)";
}
#wrap{
   ~"`Math.round(Math.random() * 100)`px";
  &:after{
      content:@content;
  }
  height: ~"`window.innerHeight`px";
  alert:~"`alert(1)`";
  #randomColor();
  background-color: @randomColor;
}
/* 生成后的 CSS */

// 弹出 1
#wrap{
   随机值(0~100)px;
  height: 743px;//由电脑而异
  background: 随机颜色;
}
#wrap::after{
  content:"AAA";
}

参考:学习Less-看这篇就够了

免责声明:文章转载自《less的基本用法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇BAT教程 :第一节(批处理基础)Jquery-获取同级标签prev,prevAll,next,nextAll下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

竞态与线程安全

竞态 对于同样的输入,程序的输出有时候正确而有时候却是错误的。这种一个计算结果的正确性与时间有关的现象就被称为竞态(RaceCondition) 导致竞态的常见原因是多个线程在没有采取任何措施的情况下并发更新、读取同一个共享变量。 竞态往往伴随着数据的脏读问题,即线程读取到一个过时的数据;丢失更新问题,即一个线程丢失数据所做的更新没有体现在后续其他线程对该...

读懂IL代码(一)

以前刚开始学C#的时候,总有高手跟我说,去了解一下IL代码吧,看懂了你能更加清楚的知道你写出来的代码是如何运行互相调用的,可是那时候没去看,后来补的,其实感觉也不晚。刚开始看IL代码的时候,感觉非常吃力,一大堆不懂,后来,慢慢看,最后也能看得懂一丁点啦。 闲话不多说了,下面就开始讲讲IL代码 1、什么是IL代码 IL,也称为CIL,MSIL,是.NET框架...

【转载】51单片机data,bdata,idata,xdata使用注意事项

"51单片机编程在不同内存空间data xdata bdata定义变量的注意事项": 关键词:51 单片机 编程 不同 内存空间 data xdatabdata 定义 变量 注意事项 1、data区空间小,所以只有频繁用到或对运算速度要求很高的变量才放到data区内,比如for循环中的计数值。 2、data区内最好放局部变量。 因为局部变量的空间是可以...

jmeter 中的 Beanshell 使用

一、操作变量:通过使内置对象vars可以对变量进行存取操作     a) vars.get("name"):从jmeter中获得变量值     b) vars.put("key","value"):数据存到jmeter变量中 二、操作属性:通过使用Bean shell内置对象props 可以对属性进行存取操作     a) props.get("STAR...

Web项目的WEB-INF目录使用说明以及重定向与转发

写这篇文章的原因是看到了Tomcat下面的Webapps下面的,就想看一下。 总结一下这篇文章的内容: WEB-INF下面的内容都是只能由服务器级别才能访问,客户端并不能访问。什么是客户端级别?什么是服务器级别呢? 转发就是服务器级别,浏览器的地址不会变,因为,客户端发送一个请求,服务器受理之后,发现要请求内容还要再去别的请求,那么转发就是服务器自己去处理...

Android开发入门(2)Java 基础

JAva变量 类的外面不能有变量的声明 变量必须先声明,后赋值,然后才能使用 基本数据类型 逻辑型:boolean(true,false) 文本型:char 整数型:btye,short,int,long 浮点型:float,double 引用数据类型: 类,接口,数组 Java各整数类型有固定的表数据范围和字段长度,不受具体操作系统蚊帐呼 Java语言的...