[Tunny]CSS LESS框架基础
Less 是一个Css 预编译器,意思指的是它可以扩展Css语言,添加功能如允许变量(variables),混合(mixins),函数(functions) 和许多其他的技术,可让Css更具维护性,主题性,扩展性。
本文为Less入门与语法梳理,包括一些入门级例子,适合对Less有入门级了解的开发者查阅。
LESS 源文件的引入方式与标准 CSS 文件引入方式一样:
<link rel="stylesheet/less" type="text/css" href="styles.less">
在我们需要引入 LESS 源文件的 HTML 中加入如下代码:
<script src="less.js" type="text/javascript"></script>
导入文件:
@import “variables.less”;
@import “variables.css”;
/*也可以将标准的 CSS 文件直接改成 .less 格式*/
变量与作用域
/*用变量管理值*/
@width : 20px; //全局变量
#homeDiv {
#centerDiv{
width : @width; // 此处应该取最近定义的变量 width 的值 30px
}
@width : 30px; //局部变量,变量和混合是延迟加载的,不一定要在使用前声明
} #leftDiv {
width : @width; // 此处应该取最上面定义的变量 width 的值 20px
} /*用变量管理选择器名称、URLs、属性*/
@mySelector: banner; // 定义一个变量用于选择器名称
@images: "../img"; // 变量可以是字符串
@property: color; // 定义一个变量用于属性名称
.@{mySelector} { //选择器名称使用变量的用法
background: url("@{images}/white-sand.png"); //URLs使用变量的用法
@{property}: #0ee;
…… //其它常规属性等
} /*编译生成的CSS文件*/
.banner {
background: url("../img/white-sand.png");
color: #0ee;
……
}
变量可以嵌套定义与使用
@fnord: "I am fnord.";
@var: "fnord";
content: @@var;//嵌套使用
content: "I am fnord."; //编译后结果
/*当一个变量定义两次时,只会使用最后定义的变量,Less会从当前作用域中向上搜索。*/
数值,颜色和变量可运算
@init: #111111;
@transition: @init*2;
@var: 1px + 5 // Less能够判断颜色和单位之间的区别
.switchColor {
color: @transition;
}
/*编译生成的CSS文件*/
.switchColor {
color: #222222;
}
混合(Mixins)与函数
.roundedCorners(@radius:5px) { //定义参数并且给予默认值
-moz-border-radius: @radius;
-webkit-border-radius: @radius;
border-radius: @radius;
}
// 在另外的样式选择器中使用
#header {
.roundedCorners; //使用类并且参数为默认值
}
#footer {
.roundedCorners(10px); //自定义参数值
}
.bordered {
border-top: dotted 1px black;
border-bottom: solid 2px black;
}
#menu a {
color: #111;
.bordered;
/*在另一个规则集内部使用上面类的属性,则直接访问属性所在类名(或Id名)即可*/
}
@arguments变量:当 Mixins 引用这个参数时,该参数表示所有的变量(多参数)。
.boxShadow(@x:0,@y:0,@blur:1px,@color:#000){
-moz-box-shadow: @arguments;
-webkit-box-shadow: @arguments;
box-shadow: @arguments;
}
#header {
.boxShadow(2px,2px,3px,#f36);
}
命名空间
#mynamespace {
.home {...}
.user {...}
}
//如果我们要复用 user 这个选择器的时候,我们只需要在需要混入这个选择器的地方这样使用就可以了。#mynamespace > .user
嵌套规则
<!-- HTML片段-->
<div id="home">
<div id="top">top</div>
</div>
/*使用嵌套规则的LESS 文件*/
#home{
color : blue;
width : 600px;
height : 500px;
border:outset;
#top{
border:outset;
width : 90%;
}
}
/*编译生成的CSS文件*/
#home {
color: blue;
width: 600px;
height: 500px;
border: outset;
}
#home #top {
border: outset;
width: 90%;
}
a {
color: red;
text-decoration: none;
&:hover {
/*有 & 时解析的是同一个元素或此元素的伪类,没有 & 解析是后代元素,&表示当前选择器的父选择器*/
color: black;
text-decoration: underline;
}
}
/*编译生成的CSS文件*/
a {
color: red;
text-decoration: none;
}
a:hover {
color: black;
text-decoration: underline;
}
Extend
extend是一个Less伪类,为扩展选择器;扩展选择器必须在所有伪类的最后
nav ul:extend(.inline)
background: blue;
}
.inline {
color: red;
} /*编译生成的CSS文件*/
nav ul { // 声明块保持原样
background: blue;
} .inline,nav ul {
color: red;
} pre:hover , .some-class {
&:extend(div pre);
} /*以上与给每个选择器添加一个extend完全相同*/
pre:hover:extend(div pre),
.some-class:extend(div pre) {}
从本质上讲extend会查找编译后的CSS,而不是原始的less
.bucket {
tr & { // 目标选择器中的嵌套,&代表最近父元素
color: blue;
}
}
.some-class:extend(tr .bucket) {} // 识别嵌套规则
/*编译生成的CSS文件*/
tr .bucket , .some-class {
color: blue;
}
extend必须是精确匹配(包括通配符*、伪类顺序、nth表达式,唯一例外的是属性选择器中的引号,less会知道它们是相同的,然后匹配它)
.a.class,
.class.a,
.class > .a {
color: blue;
}
.test:extend(.class) {} // 不会匹配上面的任何选择器的值
*.class {
color: blue;
}
.noStar:extend(.class) {} //不会匹配*.class选择器
link:hover:visited {
color: blue;
}
.selector:extend(link:visited:hover) {} //不会匹配,伪类顺序不同
:nth-child(1n+3) {
color: blue;
}
.child:extend(n+3) {} //不会匹配,尽管逻辑上1n+3与n+3是相同的
[Tunny]CSS LESS框架基础的更多相关文章
- Struts2框架基础
Struts2框架基础 1.Java的框架 1.1.框架简介 在大型项目开发过程中,经常会使用到一些框架,这样做好的好处是能够提高工作效率,在java中最常用的的框架就是SSH,这其实是三个框架的简称 ...
- css+js+html基础知识总结
css+js+html基础知识总结 一.CSS相关 1.css的盒子模型:IE盒子模型.标准W3C盒子模型: 2.CSS优先级机制: 选择器的优先权:!important>style(内联样式) ...
- (1) css的核心基础
css的核心基础 1.css的基本语法在具体使用css之前,请各位兄弟姐妹先思考一个生活中的问题,一般情况下我们是如何描述一个人的呢? 小明{ 民族:汉族: 性格:温柔: 性别:男: 体重:68kg ...
- Python云端系统开发入门——框架基础
Django框架基础 这是我学习北京理工大学嵩天老师的<Python云端系统开发入门>课程的笔记,在此我特别感谢老师的精彩讲解和对我的引导. 1.Django简介与安装 Django是一个 ...
- HTML+DIV+CSS+JSweb前端基础
HTML+DIV+CSS+JSweb前端基础 1.<html>和</html> 标签限定了文档的开始和结束点. 属性: (1) dir: 文本的显示方向,默认是从左向右 (2 ...
- PHP面试(二):程序设计、框架基础知识、算法与数据结构、高并发解决方案类
一.程序设计 1.设计功能系统——数据表设计.数据表创建语句.连接数据库的方式.编码能力 二.框架基础知识 1.MVC框架基本原理——原理.常见框架.单一入口的工作原理.模板引擎的理解 2.常见框架的 ...
- LayoutSimple简易响应式CSS布局框架
开发这个css布局的目的是为了少做一些重复的工作,一是前端或多或少会开发一些很小的响应式项目, 二是UI设计的出来的界面总是各种布局各种样式,这个时候如果前端去使用Bootstrap或者Foundat ...
- laravel5.1框架基础之Blade模板继承简单使用方法分析
本文实例讲述了laravel5.1框架基础之Blade模板继承简单使用方法.分享给大家供大家参考,具体如下: 模板继承什么用? 自然是增强基础页面的复用,有利于页面文档的条理,也便于更改多处使用的内容 ...
- CSS网站框架及样式命名规范
CSS网站框架 复位:reset.css 基础:base.css 或 basic.css (字体大小.颜色.背景.行高.列表样式.按钮样式.表格样式等等) 布局:layout.css (非结构的布局) ...
随机推荐
- Eclipse项目遇到问题汇总
1:gc overhead limit exceeded 原因:这是由于项目中eclipse内存分配不足导致 修改:修改eclipse.ini文件 修改如下: ...
- XMU C语言程序设计实践(2)
任务一:颠倒的世界 小明最近突然喜欢倒着写字,写出来的句子全是颠倒的,也就是把一句话里的字符全都逆序写,譬如“I Love This Game!”,他就偏偏要写成“!emaG sihT evoL I” ...
- bat文件中调用传参的问题
https://blogs.msdn.microsoft.com/twistylittlepassagesallalike/2011/04/23/everyone-quotes-command-lin ...
- YTU 1020: I think it
1020: I think it 时间限制: 1 Sec 内存限制: 32 MB 提交: 501 解决: 63 题目描述 Xiao Ming is only seven years old, No ...
- 使用C#开发HTTP服务器系列之实现Get和Post
各位朋友大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是http://qinyuanpei.com.在我们这个Web服务器有了一个基本的门面以后,我们是时候来用它做点实际的事情了.还记得我们 ...
- 洛谷P4141 消失之物——背包
题目:https://www.luogu.org/problemnew/show/P4141 竟然是容斥:不选 i 物品只需减去选了 i 物品的方案: 范围原来是2*10^3而不是2*103啊... ...
- 关于ArcGis for javascrept之FeatureLayer类与GraphicsLayer类
FeatureLayer: ArcGIS for Server发布的要素服务或者地图服务中的图层 构造方法: myFeatureLayer = new esri.layers.FeatureLayer ...
- package-lock.json到底是干嘛的?(转载)
package-lock.json到底是干嘛的? https://mp.weixin.qq.com/s/NaVVljKrQAFmHMdbkaYmPg## nvm-windows https://git ...
- Gym 100962J Jimi Hendrix (树形DP)
题意:给定一棵树,然后每条边有一个字母,然后给定一行字符串,问你能不能从这棵树上找到,并输出两个端点. 析:树形DP,先进行递归到叶子结点,然后再回溯,在回溯的时候要四个值,一个是正着匹配的长度和端点 ...
- Objective-C NSString/NSMutableString
创建于完成: 2018/02/05 总览: http://www.cnblogs.com/lancgg/p/8404975.html 字符串类 简介 字符码: Unicode NSString ...