博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CSS预编译语言-LESS
阅读量:5234 次
发布时间:2019-06-14

本文共 3188 字,大约阅读时间需要 10 分钟。

LESS的作用

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

LESS的编译

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

开发环境

在本地开发中这是开发环境 

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

在开发环境下,我们一般都通过导入LESS插件(less-2.5.3.min.js)来随时编译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:20;.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;  }}

 

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

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

转载于:https://www.cnblogs.com/CCxi/p/9457891.html

你可能感兴趣的文章
软引用与弱引用不推荐使用原因
查看>>
Ubuntu 15.04 安装 Nvidia Quadro系列显卡驱动
查看>>
hdoj--1257--最少拦截系统(动态规划)
查看>>
UESTC--1263--The Desire of Asuna(贪心)
查看>>
Windows 服务程序(一)
查看>>
http://www.hulian.top/zixun/post/4771.html
查看>>
Populating Next Right Pointers in Each Node
查看>>
Vue指令3:v-for
查看>>
开发者中心没有勾选 ipad却需要传宣传图片的解决方法
查看>>
Spring学习笔记13--Autowire(自动装配)
查看>>
Linux基础
查看>>
10 个迅速提升你 Git 水平的提示
查看>>
not only...but also的用法
查看>>
[NOIP模拟25]题解
查看>>
网络编程(七层模型)
查看>>
[Python Cookbook] Pandas: Indexing of DataFrame
查看>>
自定义标签开发库
查看>>
一文搞明白位运算、补码、反码、原码
查看>>
【译】如何使用webpack减少vuejs打包的大小
查看>>
python(windows版本安装,Geanypython编辑器安装)
查看>>