less教程
平时在工作中,偶尔会遇到老大让你修改原来写好的样式,如果修改的多的话,修改起来是非常麻烦的.他不像js一样,定义变量、函数,需要修改某些值,直接修改方法就行了。less的出现,恰恰帮我们解决了这个问题
在这呢,我们简要说明一下less:
LESSCSS是一种动态样式语言,属于CSS预处理语言的一种,它使用类似CSS的语法,为CSS的赋予了动态语言的特性,如变量、继承、运算、函数等,更方便CSS的编写和维护。
LESS可以在多种语言、环境中使用,包括浏览器端、桌面客户端、服务端。
在学习前,我们需要做一下前期的工作:
安装sublime text3插件:
sublime text默认是不支持less语法的高亮显示的,需要安装less2css插件后才能高亮显示。
该插件的作用:
1.当保存文件的时候,会自动生成一个同名的css文件(注意点:如果保存less的父文件夹为less,那么就会在less同级的目录下生成一个css文件夹,并且把生成的同名css文件保存到该css文件夹中)
2.当保存less文件的时候提示编译错误信息
安装node.js
刚刚那只是前期的第一步,第二步是需要安装node.js,因为less需要node.js支持。下载安装到这里下载 https://nodejs.org/en/download/ 选择自己电脑的版本下载安装就可以了。下载安装好之后,只需要在环境中安装less 就好
安装方法: 打开命令语句window+r点击确定输入以下语句:
$ npm install -g less // 全局安装好之后,编译less
指定的路径:lessc less文件名 css文件名
E:\项目\blog-04-24\css> lessc style.less style.css
开始使用less
完成了以上工作之后,我们终于开始要进入主题啦,下面能我就只是讲讲基本的使用,详细的使用大家还是去看官网的吧,毕竟写起来太长了,很耗费时间呢。
变量:less中定义变量是用@变量名:值;的方式的
@bgColor:#0094ff;
@color:#fff;
.demo{
background-color:@bgColor;
color:@color;
}
生成的css代码:
.demo {
background-color: #0094ff;
color: #ffffff;
}
混合式写法:
混合可以将一个定义好的class A轻松的引入到另一个class B中,从而简单实现class B继承class A中的所有属性。我们还可以带参数地调用,就像使用函数一样。
/*less*/
@bgColor:#0094ff;
@color:#fff;
.demo{
background-color:@bgColor;
color:@color;
}
.header{
border:1px solid #ededed;
.demo;
} /*输出的css*/
.demo {
background-color: #0094ff;
color: #ffffff;
}
.header {
border: 1px solid #ededed;
background-color: #0094ff;
color: #ffffff;
}
嵌套式写法:
我们可以在一个选择器中嵌套另一个选择器来实现继承,这样很大程度减少了代码量,并且代码看起来更加的清晰。
/*less写法*/
@bgColor:#0094ff;
@color:#fff;
.demo{
background-color:@bgColor;
color:@color;
}
header{
border:1px solid #ededed;
.demo;
h1 {
font-size: 26px;
font-weight: bold;
}
p { font-size: 12px;
a { text-decoration: none;
&:hover { border-width: 1px }
}
}
} /*输出的css*/
.demo {
background-color: #0094ff;
color: #ffffff;
}
header {
border: 1px solid #ededed;
background-color: #0094ff;
color: #ffffff;
}
header h1 {
font-size: 26px;
font-weight: bold;
}
header p {
font-size: 12px;
}
header p a {
text-decoration: none;
}
header p a:hover {
border-width: 1px;
}
函数 & 运算
运算提供了加,减,乘,除操作;我们可以做属性值和颜色的运算,这样就可以实现属性值之间的复杂关系。LESS中的函数一一映射了JavaScript代码,如果你愿意的话可以操作属性值。
/*less*/
@the-border: 1px;
@base-color: #111;
@red: #842210; #header {
color: @base-color * 3;
border-left: @the-border;
border-right: @the-border * 2;
}
#footer {
color: @base-color + #003300;
border-color: desaturate(@red, 10%);
} /*css部分*/
#header {
color: #333333;
border-left: 1px;
border-right: 2px;
}
#footer {
color: #114411;
border-color: #7d2717;
}
好了,我就讲到这吧,详细的大家可以去官网上看,理解起来也是非常容易的 附上官网地址: http://less.bootcss.com/#
less教程的更多相关文章
- Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...
- Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数
上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...
- Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数
上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...
- Angular2入门系列教程4-服务
上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...
- Angular2入门系列教程1-使用Angular-cli搭建Angular2开发环境
一直在学Angular2,百忙之中抽点时间来写个简单的教程. 2016年是前端飞速发展的一年,前端越来越形成了(web component)组件化的编程模式:以前Jquery通吃一切的田园时代一去不复 ...
- wepack+sass+vue 入门教程(三)
十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...
- wepack+sass+vue 入门教程(二)
六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...
- wepack+sass+vue 入门教程(一)
一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...
- Virtual Box配置CentOS7网络(图文教程)
之前很多次安装CentOS7虚拟机,每次配置网络在网上找教程,今天总结一下,全图文配置,方便以后查看. Virtual Box可选的网络接入方式包括: NAT 网络地址转换模式(NAT,Network ...
- webpack之傻瓜式教程
接触webpack也有挺长一段时间了,公司的项目也是一直用着webpack在打包处理,但前几天在教新人的情况下,遇到了一个问题,那就是:尽管网上的webpack教程满天飞,但是却很难找到一个能让新人快 ...
随机推荐
- KMP算法再解 (看毛片算法真是人如其名,哦不,法如其名。)
KMP算法主要解决字符串匹配问题,其中失配数组next很关键: 看毛片算法真是人如其名,哦不,法如其名. 看了这篇博客,转载过来看一波: 原博客地址:https://blog.csdn.net/sta ...
- Protobuf底层存储原理
参考官网, 序列化原理 底层二进制存储 message Test1 { optional int32 a = 1; } 并设置为a=150,序列化到一个文件中,查看文件,得到下面的二进制: 08 96 ...
- rbac - 介绍
找到了上学期末压箱底的rbac组件,这里总结下. 介绍: rbac组件:一个基于角色的权限访问控制系统的组件. 目录:
- 毫秒查询9位数qq号码是否存在-BitMap算法应用
实现详情请查看博客园 https://www.cnblogs.com/caoke/p/10793885.html 随机注册10万个放入BitMap,然后查询qq号码是否已存在,算法复杂度O(1). / ...
- mono上部署web程序初体验
早就想体验一下mono,但一直琐事缠身.难得有时间,便在网上一通狂搜mono相关的资料. 如果想使用Apache服务器,只能使用mod_mono的方式,这里有详细的介绍.这种方式有点繁琐,需要安装一大 ...
- (转)Mysql数据库之Binlog日志使用总结
使用mysqlbinlog提取二进制日志 原文:http://blog.csdn.net/leshami/article/details/41962243 MySQL binlog日志记录了MySQL ...
- MD5 工具类
package com.payease.chains.risk.utils; /** * md5密码加密工具类 * Created by liuxiaoming on 2017/8/28. */ pu ...
- Unity 依赖注入
关于Ioc的框架有很多,比如astle Windsor.Unity.Spring.NET.StructureMap,我们这边使用微软提供的Unity做示例,你可以使用Nuget添加Unity,也可以引 ...
- IE8下不识别indexOf的问题
1.为Array原型添加indexOf方法(如果学过面向对象,相当于给Array类添加实例方法),方法体如下: //添加数组IndexOf方法 if (!Array.prototype.indexOf ...
- django显示SQL语句
django显示SQL语句 有时候我们使用模型查询数据,但是并不知道具体执行的SQL语句到底对不对.那么可以通过下面的方法打印出具体执行的SQL语句.这样有助于调试: queryset = MyMod ...