LESS初体验
- 将一个变量赋值给另一个变量,用引号:
@white: 'color-white';
,使用另一个变量,需要双@@
符号:p {color: @@white;}
。
而以这样进行变量的赋值:@white: @color-white;
,使用@white
时就不要两个@
,只需要一个即可。
如果对同一个变量定义两次的话,在当前作用域中最后一次定义的将被使用。
变量是“按需加载”(lazy loaded)的,因此不必强制在使用之前声明。 - 颜色加减乘除,
#fff
是最大值,不能乘加,#000
相反。 - Less 函数手册。
- 类
.[class] ([param]: [default]) { [attr]: [param]; }
- @arguments包含了所有传递进来的参数
@color-white: #fff;
/*阴影类*/
.boxShadow(@x: 0, @y: 0, @blur: 1px, @color: #000) {
-moz-box-shadow: @arguments;
-webkit-box-shadow: @arguments;
-ms-box-shadow: @arguments;
box-shadow: @arguments;
}
/*样式*/
.less-test-div {
.boxShadow(1px, 4px, 4px, darken(@color-white, 40%));
}
渲染结果
.less-test-div {
-moz-box-shadow:1px 4px 4px #999;
-webkit-box-shadow:1px 4px 4px #999;
-ms-box-shadow:1px 4px 4px #999;
box-shadow:1px 4px 4px #999;
}
如果需要在 mixin 中不限制参数的数量,可以在变量名后添加 ...,表示这里可以使用 N 个参数。
.mixin (...) { // 接受 0-N 个参数
.mixin () { // 不接受任何参数
.mixin (@a: 1) { // 接受 0-1 个参数
.mixin (@a: 1, ...) { // 接受 0-N 个参数
.mixin (@a, ...) { // 接受 1-N 个参数
此外关于@rest
.mixin (@a, @rest...) {
// @rest 表示 @a 之后的参数
// @arguments 表示所有参数
}
- 嵌套中,有&解析的是同一个元素或此元素,没有&解析是后代元素。
- Less中的Operations(操作)主要是针对任何数字、颜色、变量的操作,可以对其加、减、、乘、除或者更复杂的综合运算;而Functions(函数)主要是针对color funtions,less提供了多种变换颜色的功能。
常用颜色函数
@color: #ff5f00;
.test-ul {
list-style: none;
padding: 0;
li {
padding: 5px 20px;
color: @color-white;
small {
font-size: @font-size - 2;
color: darken(@color-white, 10%);
}
}
li:nth-child(1) {
/*20% lighter than @color*/
background-color: lighten(@color, 20%);
}
li:nth-child(2) {
/*20% darker than @color*/
background-color: darken(@color, 20%);
}
li:nth-child(3) {
/*20% more saturated(饱和) than @color*/
background-color: saturate(@color, 20%);
}
li:nth-child(4) {
/*20% less saturated(饱和) than @color*/
background-color: desaturate(@color, 20%);
}
li:nth-child(5) {
/*20% less transparent(透明) than @color*/
background-color: fadein(@color, 20%);
}
li:nth-child(6) {
/*20% more transparent(透明) than @color*/
background-color: fadeout(@color, 20%);
}
li:nth-child(7) {
/*a color with a 20 degree(级,度) larger in hue(色调) than @color*/
background-color: spin(@color, 20);
}
li:nth-child(8) {
/*a color with a 20 degree(级,度) smaller in hue(色调) than @color*/
background-color: spin(@color, -20);
}
li:nth-child(9) {
/*原色*/
background-color: @color;
}
}
渲染结果:
也可以用于提取颜色:
hue(@color); // returns the `hue` channel of @color
saturation(@color); // returns the `saturation` channel of @color
lightness(@color); // returns the 'lightness' channel of @color
- namespace概念,只有(#[variable])可以选择后代作为样式值。
#bundle {
.button {
display: block;
border: 1px solid black;
background-color: grey;
&:hover { background-color: white }
}
}
正确的使用方法是
.test-ul-b li {
#bundle .button;
}
关于类(.)样式的使用(混合):
.test-ul-b {
// 直接继承.test-ul的所有样式
// 不能选择后代
.test-ul;
}
- scope概念。Less采取就近原则(不妨说是向上),元素先找本身有没有这个变量存在,如果本身存在,就取本身中的变量,如果本身不存在,就寻找父元素,依此类推,直到寻找到相对应的变量。
@var: #00BFFF; /*DeepSkyBlue*/
.test-p-a {
@var: #6495ED; /*CornflowerBlue*/
background-color: @var; /*CornflowerBlue*/
}
.test-p-b {
background-color: @var; /*DeepSkyBlue*/
}
- 混合支持
!important
关键字
调用时在混合后面加上!important关键字表示将混合带来的所有属性标记为!important:
.mixin (@a: 0) {
border: @a;
boxer: @a;
}
.important {
.mixin(2) !important;
}
编译结果:
.important {
border: 2 !important;
boxer: 2 !important;
}
- 通过参数值控制 mixin 行为的功能
根据 @switch 的值控制 .mixin 行为:
.mixin (dark, @color) {
color: darken(@color, 10%);
}
.mixin (light, @color) {
color: lighten(@color, 10%);
}
.mixin (@_, @color) {
display: block;
}
调用方法:
@switch: light;
.class {
.mixin(@switch, #888);
}
编译结果:
.class {
color: #a2a2a2;
display: block;
}
也可以根据参数的数量进行匹配。
12. guard混合(guarded mixins)
- 关键词 when;
- 运算符包括:> >= = =< <,没有不等于;
- true关键字是唯一被判断为真的值;
- 多个Guards可以通过逗号表示分隔,如果其中任意一个结果为 true,则匹配成功;
- 如果需要根据值的类型匹配混合,可以使用 is* 函数;
检查类型函数:
iscolor
isnumber
isstring
iskeyword
isurl
- 如果需要检查一个值(数字)使用了哪个单位,可以使用下面三个函数:
ispixel
// 像素
ispercentage// 百分比
isem// em
- 你可以使用关键词 and 在 guard 中加入额外的条件;
- 使用关键词 not 否定条件。
LESS初体验的更多相关文章
- .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...
- Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验
Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...
- Spring之初体验
Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...
- Xamarin.iOS开发初体验
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0
- 【腾讯Bugly干货分享】基于 Webpack & Vue & Vue-Router 的 SPA 初体验
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57d13a57132ff21c38110186 导语 最近这几年的前端圈子,由于 ...
- 【Knockout.js 学习体验之旅】(1)ko初体验
前言 什么,你现在还在看knockout.js?这货都已经落后主流一千年了!赶紧去学Angular.React啊,再不赶紧的话,他们也要变out了哦.身旁的90后小伙伴,嘴里还塞着山东的狗不理大蒜包, ...
- 在同一个硬盘上安装多个 Linux 发行版及 Fedora 21 、Fedora 22 初体验
在同一个硬盘上安装多个 Linux 发行版 以前对多个 Linux 发行版的折腾主要是在虚拟机上完成.我的桌面电脑性能比较强大,玩玩虚拟机没啥问题,但是笔记本电脑就不行了.要在我的笔记本电脑上折腾多个 ...
- 百度EChart3初体验
由于项目需要在首页搞一个订单数量的走势图,经过多方查找,体验,感觉ECharts不错,封装的很细,我们只需要看自己需要那种类型的图表,搞定好自己的json数据就OK.至于说如何体现出来,官网的教程很详 ...
- Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验
Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出E ...
- Docker初体验
## Docker初体验 安装 因为我用的是mac,所以安装很简单,下载dmg下来之后拖拽安装即可完成. 需要注意的就是由于之前的docker是基于linux开发,不支持mac,所以就出现了docke ...
随机推荐
- Echarts图表横坐标显示不全
xAxis: { "axisLabel":{ //加上这个强制显示 interval: 0 }, type: 'category', data: self[theDataKey]. ...
- Codeforces - 600E 树上启发式合并
题意:求每一个子树存在最多颜色的颜色代号和(可重复) 本题是离线统计操作,因此可以直接合并重儿子已达到\(O(nlogn)\)的复杂度 PS.不知道什么是启发式合并的可以这样感受一下:进行树链剖分,分 ...
- Win10安装MySQL5.7.22解压缩版的方法及手动配置讲解
1.先去MYSQL官网下载安装包,解压放到C盘 2.新建一个my.ini文件放到bin文件夹下面,内容如下,路径对应自己的安装目录: [mysql] # 设置mysql客户端默认字符集 default ...
- ngin日志格式
日志格式 为了更好满足分析场景,推荐采用如下log_format配置. log_format main '$remote_addr - $remote_user [$time_local] &qu ...
- oracle基础知识(六)----spfile与pfile
一, 认识参数文件 Oracle中的参数文件是一个包含一系列参数以及参数对应值的操作系统文件.它们是在数据库实例启动时候加载的,决定了数据库的物理 结构.内存.数据库的限制及系统大量的默认值 ...
- poi生成excel报表合并列
功能任务 poi导出excel统计报表,有合并列的. 根据结构生成层级. 目标 1输入一个linkshashmap LinkedHashMap<String, Object> fieldM ...
- jQuery.Flot开发手记
目录 介绍 使用 自定义参数 自定义图例 自定义坐标 自定义数据序列 自定义网格 其他 鼠标停留在图表节点时显示tooltip 介绍 项目地址:http://www.flotcharts.org/ A ...
- PV和UV代表什么(转)
PV(page view),即页面浏览量,或点击量;通常是衡量一个网络新闻频道或网站甚至一条网络新闻的主要指标. 高手对pv的解释是,一个访问者在24小时(0点到24点)内到底看了你网站几个页面.这 ...
- [linux] uptime 命令中关于平均负载的解释
1.当前时间 00:13:25 2.系统已运行的时间 9小时19分 3.当前在线用户 2 user 4.平均负载:0.17, 0.12, 0.07 最近1分钟.5分钟.15分钟系统的负载 为了更好地理 ...
- hibernate注解JPA
1.JPA与hibernate 什么是JPA ? java persistence api :java持久化api,同一的ORM规范,是由sun公司指定的规范接口,hibernate实现了JPA规范. ...