LESS的作用

CSS层叠样式表,它是标记语言,不是编程语言;所有的预编译CSS语言(less/sass…)都是赋予了CSS的面向对象思想

LESS的编译

LESS叫做预编译CSS:写好的LESS代码浏览器是不能渲染的,需要我们把它编译成为能渲染的CSS才可以

开发环境

在本地开发中这是开发环境 
生产环境 
本地开发完成了,我们需要把代码上传到服务器上,服务器上的环境叫做生产环境

在开发环境下,我们一般都通过导入LESS插件(less-2.5.3.min.js)来随时编译LESS代码

<!--rel的值变为了stylesheet/less-->
<linL rel='stylesheet/less' href='css/1.less'>
<script src='js/less-2.5.3.min.js'></script> <!--由于每一次加载页面,都需要导入less.js,并且把less文件重新编译为css(很消耗性能,页面打开速度肯定会变慢),
所以真实项目中,只有开发环境下我们使用这种模式,生产环境下,我们肯定需要事先把写好的less编译为正常的css后,
在上线,以后用户访问的都是编译好的css,而不是拿less现编译-->

生产环境中,我们需要事先把less编译成为css:
1、使用node编译

  1、下载安装node
  2、在node全局环境下使用npm包管理器,安装一个less模块

    npm install less -g 安装命令行

  3、在执行的目录中执行

    lessc xxx.less xxx.css 把less编译为css

    lessc xxx.less xxx.min.css -x 不仅编译成css,而且还把css压缩了

2、使用编译工具

LESS中的基础语法

变量

/*
* 设置变量使用@[变量名]:变量值(传统css支持的值都可以作为变量值)
* 1、变量名中可以出-
* 在部分减法数学运算的时候,我们需要明确是运算符还是名字中的-
* (@shadow-px)-20
* 2、不是所有的情况下都要使用变量,只有:很多样式都是使用相同的值,而且以后如果改变的话,所有元素的样式都要跟着改变,此时我们才用变量存储起来
*
* LESS中可以支持数学运算
*/
@a:1;
@b:30%;
@c:1000px;
@d:#000;
@shadow-px:100;
.box{
opacity:@a;
filter: alpha(opacity=(@a*100));
}

函数封装

/*
* 在LESS中只要设置了一个样式类,我们就可以把它称之为一个方法,其它地方需要用到这些样式,直接“.[类名]”调用即可(原理:把当前样式类中的代码原封不动的copy一份过去)
* 不加括号即是普通样式类,也是封装的一个函数,编译的时候,这个样式类中的代码依然跟着编译
* 加括号仅仅是封装的函数,编译的时候是不编译函数的
*
* 函数
* .xxx(@xxx:xxx,@xxx){
@arguments
}
*/ /*1、*/
.pub(){
width: 100px;
height: 100px;
background: green;
} .box {
.pub();
background: red;
} /*2、*/
.transition(@property:all,@duration,@timing:linear,@delay:0s){
transition:@arguments;
/*transition:@property @duration @timing @delay; */
}
.box{
.transition(all,1s,linear,0s);
transition(@timing:ease,@duration:1s);
} /*3、*/
.sum(@n,@m;0){
@result:@n+@m;
}
.box{
.sum(10,20);
width:unit(@result,px);
/*unit是less提供的方法
* unit([value],'px') 给value值设置单位(但是如果之前已经有单位了,此处是把原有单位去掉)
*/
}

命名空间和作用域

@a:10;
.box{
width:unit(@a,px);
@a:;
.mark{ //=>相当于.box .mark{}
width:unit(@a,px);
}
}
//结果:
.box{
width:20px;
}
.box .mark{
width: 20px;
}
/*less中也有变量提升,而且less把声明和定义在私有作用域中事先完成了*/

LESS中的extend继承

.pub{
width: 100px;
height: 100px;
background: red;
}
/*
* LESS中的extend继承并不是copy代码,而是让当前的样式类和继承的样式类公用一套样式(编译为群组选择器的方式)
*/
.box:extend(.pub){
background: green;
}
//或者
.box{
&:extend(.pub);//=>原理是一样的,也是把它放在.box的末尾
background: green;
}
//结果
.box
.pub{
width: 100px;
height: 100px;
background: red;
} /*真实项目中,如果想使用extend实现继承,我们一定都把需要继承的样式类写在最外层(而不是里层私有作用域),如果想继承当前私有作用域的某个样式类,需要把前缀都准备好*/

LESS中的条件和递归

条件

常用的条件运算符:>、>=、<、<=、=; 
设定的条件还可以使用IS函数: 
iscolor、isnumber、isstring、iskeyword、isurl、ispixel、ispercentage…

.pub(@x) when(@x<=10){
width: 100px;
height: 200px;
}
.pub(@x) when(@X>10){
width: 200px;
height: 400px;
}
.box{
.pub(20);
background: green;
}
//结果:
.box{
width: 200px;
height: 400px;
background: green;
}
 

递归

.columns(@i) when(@i<=4){
.box@{i}{
width:unit(@i*10,%);
}
.columns(@i+1);
}
.columns(1);
//结果:
.box1{
width:10%;
}
.box2{
width:20%;
}
.box3{
width:30%;
}
.box4{
width:40%;
}

LESS中的连接符和import

@import "reset.min.css";
//=>在自己的less中把reset导入进来
@import (reference) "public";
//=>加了reference导入进来使用,但是不编译里面的代码 .box {
  .mark { //=> .box .mark   }
  //&:在.box后面紧跟着谁
  &.pp { //=>.box.pp
    background: red;
  }
  & > .mm {
    background: green;
  }
  &:hover {
    background: orange;
  }
}

让你快速进行web前端开发的途径-LESS学习:了解LESS和编译LESS

http://www.zhufengpeixun.com/qianduanjishuziliao/CSS3heHTML5zhuanti/2016-07-22/527.html

通过LESS的基础语法的学习,提高web前端开发的效果

http://www.zhufengpeixun.com/qianduanjishuziliao/CSS3heHTML5zhuanti/2016-07-22/528.html

CSS预编译语言-LESS的更多相关文章

  1. laravel 中CSS 预编译语言 Sass 快速入门教程

    CSS 预编译语言概述 CSS 作为一门样式语言,语法简单,易于上手,但是由于不具备常规编程语言提供的变量.函数.继承等机制,因此很容易写出大量没有逻辑.难以复用和扩展的代码,在日常开发使用中,如果没 ...

  2. 【前端开发】优化代码之减少引入,css预编译语言的优点,stylus的使用

    前言:我必须得承认在最最最开始的时候,我对于css的预编译是非常不以为然的,这是错误的.一般在页面编写过程中,我会将需要reset的css放在reset.css中,讲会需要重复用到的放置到public ...

  3. css预编译语言 sass scss(变量$var, css嵌套规则,@import规则,@extend,@mixin)

    什么是sass Sass 是对 CSS 的扩展,让 CSS 语言更强大.优雅. 它允许你使用变量.嵌套规则. mixins.导入等众多功能, 并且完全兼容 CSS 语法. Sass 有助于保持大型样式 ...

  4. css预编译语言sass——mixin的使用

    以根据不同屏幕吃寸动态应用背景图片为例 新建一个mixin如下: @mixin bg_img($path, $ext){ @media screen and (max-device-width: 76 ...

  5. CSS预编译器配置-------LESS Sass Stylus webstorm

    预编译器配置说明 开头语,发挥CSS预处器的作用是一种很有挑战性的事情.CSS预处器有不同的语言,就有不同的语法和功能. 语法 在使用CSS预处器之前最重要的是对语法的理解,幸运的是,这三种CSS预处 ...

  6. CSS预处理器Sass(Scss)、Less、Stylus

    CSS 预处理编译器能让我成程序化其的方式编写CSS代码,可以引入CSS中没有的变量.条件.函数等特性,从而让代码更简单易维护,但一般按预处理器语法编写的代码无法直接在浏览器中运行,需用通过工具比如g ...

  7. LESS SCSS 预编译语言

      前  言 JRedu LESS  是一门 CSS 预处理语言,它扩展了 CSS 语言,增加了变量.Mixin.函数等特性,使 CSS 更易维护和扩展. LESS 为 Web 开发者带来了福音,它在 ...

  8. 前端CSS预处理器Sass

    前面的话   "CSS预处理器"(css preprocessor)的基本思想是,用一种专门的编程语言,进行网页样式设计,然后再编译成正常的CSS文件.SASS是一种CSS的开发工 ...

  9. 在 CSS 预编译器之后:PostCSS

    提到css预编译器(css preprocessor),你可能想到Sass.Less以及Stylus.而本文要介绍的PostCSS,正是一个这样的工具:css预编译器可以做到的事,它同样可以做到. “ ...

随机推荐

  1. [物理学与PDEs]第4章习题3 一维理想反应流体力学方程组的数学结构

    证明: Euler 坐标系下的一维反应流体力学方程组 (3. 10)-(3. 13) 也是一个一阶拟线性双曲型方程组. 证明: 由 (3. 10), (3. 12), (3. 13) 知 $$\bex ...

  2. 分享一个jsonp劫持造成的新浪某社区CSRF蠕虫

    最近jsonp很火,实话说已经是被玩烂了的,只是一直没有受到大家的重视.正好在上个月,我挖过一个由于jsonp造成的新浪某社区CSRF,当时是为了准备一篇文章,之后这篇文章也会拿出来分享. 因为新浪已 ...

  3. js中escape对应的C#解码函数 UrlDecode

    js中escape对应的C#解码函数 System.Web.HttpUtility.UrlDecode(s),使用过程中有以下几点需要注意   js中escape对应的C#解码函数 System.We ...

  4. go语言学习 一

    1.变量声明 指定变量类型,声明后若不赋值,使用默认值 根据值自行判定变量类型. 省略var, 注意 :=左侧的变量不应该是已经声明过的,否则会导致编译错误 2.go语言作用域 函数内定义的变量称为局 ...

  5. MYSQL(三)

    转载自https://www.cnblogs.com/wupeiqi/articles/5716963.html 1.索引 索引是表的目录,在查找内容之前可以先在目录中查找索引位置,以此快速定位查询数 ...

  6. error: no matching function for call to 'std::exception:exception(const char[16])'

    环境:codeblocks 语言:C++ 在执行:throw new exception("queue is empty.");时 遇到问题:error: no matching ...

  7. pythonのsqlalchemy多对多关系

    现在来设计一个能描述“图书”与“作者”的关系的表结构,需求是 一本书可以有好几个作者一起出版 一个作者可以写好几本书 #!/usr/bin/env python from sqlalchemy imp ...

  8. 第五节,python基本语法

    1.类(Class) Python中的类的概念与其它语言类似,比较特殊的是protected和private在python中没有明确的限制,通常的惯例是用单下划线_表示protected,用双下划线开 ...

  9. docker容器与宿主主机之间拷贝文件

    文章链接:https://blog.csdn.net/libertine1993/article/details/80651552 https://blog.csdn.net/u011596455/a ...

  10. 【由浅入深理解java集合】(四)——集合 Queue

    今天我们来介绍下集合Queue中的几个重要的实现类.关于集合Queue中的内容就比较少了.主要是针对队列这种数据结构的使用来介绍Queue中的实现类. Queue用于模拟队列这种数据结构,队列通常是指 ...