LESS从入门到精通
LESS从入门到精通
一、LESS是什么
LESS 是 CSS预处理语言,是 CSS 的扩展。
然后说说比较流行的几款预编译器:SASS/SCSS、LESS、Stylus。
SASS 学习网站:
LESS 学习网站:
- http://lesscss.cn/
- https://less.bootcss.com/
- https://www.w3cschool.cn/less/
- https://github.com/less/less.js
Stylus 学习网站:
二、为什么用LESS
SASS/SCSS和Stylus都很强,但是我还是选择了LESS,个人喜欢NodeJS,然后stylus空格我又不喜欢,就用了LESS,现在用的也习惯了,下面就给大家介绍一下LESS的一些用法吧。
LESS——像写javascript一样书写css
特点:
- 1、写样式更简单:嵌套
- 2、使用方便:变量、运算、函数
- 3、学习成本低:语法
三、怎么用LESS
1、安装使用
(1)浏览器中使用
引用
<link rel="stylesheet/less" type="text/css" href="index.less" />
<!-- 必须加上/less -->
<script src="less-1.3.3.min.js"></script>
<!-- js必须在less后引用 -->
通过以上配置,在访问页面时,js会自动编译less为css
CDN:
https://cdnjs.cloudflare.com/ajax/libs/less.js/3.9.0/less.min.js
https://cdn.bootcss.com/less.js/3.9.0/less.js
观察模式
在每次保存文件后,调试时,总要进行手动刷新,于是有了观察模式
基本设置
<link rel="stylesheet/less" href="index.less">
<script>less = { env: 'development'};</script>//声明开发模式
<script src="less-1.3.3.min.js"></script>
<script>less.watch();</script>//调用观察模式
调用了观察模式后,就可以实现在每次保存时自动编译
观察模式的原理是每隔一段时间进行编译
扩展配置
在基础设置的后面添加script标签,内容如下
less = {
// 开发环境development,生产模式production
env: "development",
// 异步加载
async: false,
// 在页面下异步读取导入
fileAsync: false,
// 观察模式间隔
poll: 1000,
// 使用函数
functions: {},
// 行信息输出comment、mediaQuery、all
dumpLineNumbers: "all",
// 是否调整url为相对
relativeUrls: false,
// 根路径
rootpath: ":/"
};
(2)使用node编译
使用此方法需要先安装node
node下载链接:http://nodejs.cn/download/
安装了node之后,就可以正式安装 less
了
npm install -g less
当less文件写好后,就可以使用一下命令进行编译
lessc index.less index.css
(3)gulp打包工具
使用此方法需要分别在 全局 与 项目 安装gulp
//全局
npm install -g gulp
//当前项目
npm install --save-dev gulp
然后在安装gulp的插件 gulp-less
npm install -save-dev gulp-less
安装完之后,创建入口文件 gulpfile.js,并写入:
var origin = './index.less'; //填写你需要转化的less文件的路径
var result = './'; //填写你转化后文件存在的目录路径
var gulp = require('gulp');
gulp.task('less2css', function(){
gulp.src(origin)
.pipe(less())
.pipe(result);
})
至此,就可以通过输入 gulp less2css
命令进行编译了
但是,每次保存后都要去编译很麻烦,于是,补充以下代码
gulp.task('lessc', function(){
gulp.watch('origin', ['less2css']);
})
现在只需要输入 gulp lessc
就可以实现less的观察者模式了
2、语法
保留CSS的基础语法,并进行了扩展
@import "reset.css" //less在编译时不会变动css文件
@import "base" //less导入其他less文件时可以省略文件格式
@import url("base.less") //less也可以使用url形式导入,但是必须有后缀
3、运算
在less
中,可以在书写属性时直接进行加减乘除
例子:header
插入了一个padding
@fullWidth: 1200px;
.header{
width: @fullWidth – 20px * 2;
padding: 0px 20px*2;
}
4、变量
(1)格式:以@开头
@headergray: #c0c0c0;
@fullWidth: 1200px;
@logoWidth: 35%;
(2)字符串插值
@name: banner;
background: url("images/@{name}.png") no-repeat;
编译:
background: url("images/banner.png") no-repeat;
(3)避免编译
background: ~"red";
编译:
background: red;
(4)移动端rem布局中的使用
@fullWidth: 750;
@toRem: unit(@fullWidth/10,rem);
header{
height: 150/@toRem;
}
编译:
header{
height: 2rem;
}
5、混合
(1)在一个类中继承另一个类
.class1{
color: red;
}
.class2{
background: green;
.class1;
}
编译后:
.class1{
color: red;
}
.class2{
background: green;
color: red;
}
(2)用&替换当前选择器
a{
color: #000;
&:hover{
color: #f00;
}
}
编译后:
a{
color: #000;
}
a:hover{
color: #f00;
}
(3)在父类中嵌套子类
.class1{
p{
span{
a{ }
}
&:hover{ }
}
div{ }
}
编译后:
.class1{ }
.class1 p{ }
.class1 p span{
.class1 p span a{ }
.class1 p:hover{ }
.class1 div{ }
(4)带参混合
.color(@color=red){
color: @color;
}
.class1{
.color(#0f0);
}
.class2{
.color();
}
编译后:
.class1{
color: #0f0;
}
.class2{
color: red;
}
(5)块定义
@demo: {
color: #f00;
}
body {
@demo()
}
编译后:
body {
color: #f00;
}
该方式和类继承的区别在于该块不会出现在编译的CSS中。
6、函数
(1)逻辑控制
格式:statement when(conditons)、prop: if((conditions),value);
例子1:在less中使用一个带参类名展示上下左右四个方向的纯CSS三角形
index.less
.base(){
width: 0;
height: 0;
}
@normal: 20px solid transparent;
@anger: 20px solid #f00;
.triangle(@val) when(@val=left){
.base();
border-left: none;
border-right: @anger;
border-top: @normal;
border-bottom: @normal;
}
.triangle(@val) when(@val=right){
.base();
border-right: none;
border-left: @anger;
border-top: @normal;
border-bottom: @normal;
}
.triangle(@val) when(@val=top){
.base();
border-left: @normal;
border-right: @normal;
border-top: none;
border-bottom: @anger;
}
.triangle(@val) when(@val=bottom){
.base();
border-left: @normal;
border-right: @normal;
border-top: @anger;
border-bottom: none;
}
.div1{
.triangle(left);
}
.div2{
.triangle(right);
}
.div3{
.triangle(top);
}
.div4{
.triangle(bottom);
}
index.html
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet/less" href="index.less">
<script src="../less-1.3.3.min.js"></script>
</head>
<body>
<div class="div1"></div>
<div class="div2"></div>
<div class="div3"></div>
<div class="div4"></div>
</body
</html>
- 例子2:
background: if( (true), #f00 );
(2)循环
例子:将8个td的背景依次更换为bg_1.png、bg_2.png、…、bg_8.png
table td{
width: 200px;
height: 200px;
.loop(@i) when(@i<9){
&:nth-child(@{i}){
background: url(~"../images/partner_@{i}.png") no-repeat;
}
.loop(@i+1);
}
.loop(1);
}
(3)列表
@backgroundlist: apple, pear, coconut, orange;
(4)less函数库
image-size(“bg.png”) //获取图片的Width和Height
image-width() //获取图片的Width和Height
image-height() //获取图片的Width和Height
convert(9s, ms) //转换9秒为毫秒
convert(14cm, mm) //转换14厘米为毫米
更多函数参考官方函数库,包括混合函数、数学函数、字符串函数、列表函数等等
7、使用JS表达式
less中还可以引用js表达式,不过一般都不推荐使用,此种方式在使用nodejs将less编译css时可能会报错。
格式:`javascript`
例子:将高度设置为当前获取到的浏览器的高度
@fullHeight: unit(` window.screen.height `, px);
div{
height: @fullHeight;
}
- 尝试将 @width: unit(` window.screen.width `, px) 引进 vw布局 ?
不推荐,不建议less在正式环境中使用,使用LESS时需要在头部引入js,而在js执行时的时候,会消耗时间,而less编译需要在js执行后,会在一定程度上影响到性能。
LESS从入门到精通的更多相关文章
- <程序员从入门到精通> -- How
定位 自己才是职业生涯的管理者,想清楚自己的发展路径: 远期的理想是什么?近期的规划是什么?今日的任务和功课又是什么? 今日之任务或功课哪些有助于近期之规划的实现,而近期之规划是否有利于远期之理想? ...
- 【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目 目录索引
索引 [无私分享:从入门到精通ASP.NET MVC]从0开始,一起搭框架.做项目(1)搭建MVC环境 注册区域 [无私分享:从入门到精通ASP.NET MVC]从0开始,一起搭框架.做项目(2)创建 ...
- ASP.NET MVC4入门到精通系列目录汇总
序言 最近公司在招.NET程序员,我发现好多来公司面试的.NET程序员居然都没有 ASP.NET MVC项目经验,其中包括一些工作4.5年了,甚至8年10年的,许多人给我的感觉是:工作了4.5年,We ...
- Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引
因为内容比较多,所以每篇讲解一些内容,最后会放出全部代码,可以参考.操作中总会遇到各式各样的问题,个人对部分问题的研究在最后一篇 问题研究 里.欢迎大家探讨学习. 代码都经过个人测试,但仍可能有各种未 ...
- 1、ASP.NET MVC入门到精通——新语法
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 在学习ASP.NET MVC之前,有必要先了解一下C#3.0所带来的新的语法特性,这一点尤为重要,因为在MVC项目中我们利用C#3.0的新特 ...
- 5、ASP.NET MVC入门到精通——NHibernate代码映射
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 上一篇NHibernate学习笔记—使用 NHibernate构建一个ASP.NET MVC应用程序 使用的是xml进行orm映射,那么这一 ...
- 6、ASP.NET MVC入门到精通——ASP.Net的两种开发方式
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 目前,ASP.NET中两种主流的开发方式是:ASP.NET Webform和ASP.NET MVC.从下图可以看到ASP.NET WebFo ...
- 7、ASP.NET MVC入门到精通——第一个ASP.NET MVC程序
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 开发流程 新建Controller 创建Action 根据Action创建View 在Action获取数据并生产ActionResult传递 ...
- 8、ASP.NET MVC入门到精通——View(视图)
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 View视图职责是向用户提供界面.负责根据提供的模型数据,生成准备提供给用户的格式界面. 支持多种视图引擎(Razor和ASPX视图引擎是官 ...
- 9、ASP.NET MVC入门到精通——Controller(控制器)
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 Controller主要负责响应用户的输入.主要关注的是应用程序流,输入数据的处理,以及对相关视图(View)输出数据的提供. 继承自:Sy ...
随机推荐
- SpringMVC 细节学习
使用Spring MVC,配置DispatcherServlet是第一步 DispatcherServlet是前置控制器,配置在web.xml文件中的 .拦截匹配的请求,Servlet拦截匹配规则要 ...
- springMVC框架集成tiles模板
将tiles模板集成到springMVC框架下,大概流程如下: 1.在配置文件中加入tiles支持 我的servlet配置文件名为spring-mvc.xml.具体配置如下: <?xml ver ...
- Thrift辅助类,用于简化Thrift编程
CThriftServerHelper用于服务端,CThriftClientHelper用于客户端. IDL定义: service PackageManagerService { } 服务端使用示例: ...
- Python Selenium 之常用API
Selenium WebDriver下提供许多用来与浏览器.元素.鼠标.键盘.弹框.下拉菜单和列表的交互和设置方法.这些是计算机模拟人工进行自动化测试所必要依赖的方法.下面将用列表的方式总结出常用的A ...
- Linux Crontab 任务管理工具命令以及示例
Crontab 是 Linux 平台下的一款用于循环执行例行任务的工具,Linux 系统由 cron (crond) 这个系统服务来控制任务 , Linux系统本来就有很多的计划任务需要启动 , 所以 ...
- Xshell 连接Linux虚拟机失败解决办法
当我们在VMWare上安装好Ubuntu虚拟机后,有时候会需要使用多个terminal窗口,但是在虚拟机中多个窗口互相切换查看不方便,这时候用物理机的xshell工具连接到虚拟机中去就显得很方便.直接 ...
- CodeForces 122G Lucky Array(一脸懵逼的树状数组)
Petya loves lucky numbers. Everybody knows that lucky numbers are positive integers whose decimal re ...
- Struts2的多方法动态Action
原创 一个简单的Action里面的核心方法只有一个execute(); 定义多个核心方法的Action,有如下3种方式: 为Action配置method属性 动态方法调用 使用通配符映射方式 动态方法 ...
- 记一次艰苦卓绝的Discuz x3 论坛升级过程
首先吐槽一下discuz 的官方论坛. 你要想下载到正确版本的discuz实在不容易找到. 有兴趣自己去看吧. 就是因为这个原因, 我本来想要安装x2.5版本(那时x3 还是Beta版本), 结果不小 ...
- 理解ASP.NET MVC引擎处理模型字符串的默认行为,涉及Html.Raw()和HttpUtility.HtmlDecode()
MVC引擎默认会将Model属性值中包含的html字符串做encode,所以如属性中包含类似 <br> 这样的标记,MVC引擎会将它们转换成html实体码 %3Cbr%3E 所以1:在编辑 ...