less css框架的学习
什么是LESSCSS
LESSCSS是一种动态样式语言,属于CSS预处理语言的一种,它使用类似CSS的语法,为CSS的赋予了动态语言的特性,如变量、继承、运算、函数等,更方便CSS的编写和维护。
LESSCSS可以在多种语言、环境中使用,包括浏览器端、桌面客户端、服务端。
语言特性快速预览:
变量:
变量允许我们单独定义一系列通用的样式,然后在需要的时候去调用。所以在做全局样式调整的时候我们可能只需要修改几行代码就可以了。
LESS源码:
@color: #4D926F;
#header {
color: @color;
}
h2 {
color: @color;
}
编译后的CSS:
#header {
color: #4D926F;
}
h2 {
color: #4D926F;
}
混合(Mixins)
混合可以将一个定义好的class A轻松的引入到另一个class B中,从而简单实现class B继承class A中的所有属性。我们还可以带参数地调用,就像使用函数一样。
LESS源码:
.rounded-corners (@radius: 5px) {
-webkit-border-radius: @radius;
-moz-border-radius: @radius;
-ms-border-radius: @radius;
-o-border-radius: @radius;
border-radius: @radius;
}
#header {
.rounded-corners;
}
#footer {
.rounded-corners(10px);
}
编译后的CSS:
#header {
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
-ms-border-radius: 5px;
-o-border-radius: 5px;
border-radius: 5px;
}
#footer {
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
-ms-border-radius: 10px;
-o-border-radius: 10px;
border-radius: 10px;
}
嵌套
我们可以在一个选择器中嵌套另一个选择器来实现继承,这样很大程度减少了代码量,并且代码看起来更加的清晰。
LESS源码:
#header {
h1 {
font-size: 26px;
font-weight: bold;
}
p {
font-size: 12px;
a {
text-decoration: none;
&:hover {
border-width: 1px
}
}
}
}
编译后的CSS:
#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;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>less</title>
<meta name="description" content="LESSCSS������">
<meta name="keywords" content="LESS,LESSCSS,CSS">
<link rel="shortcut icon" href="/favicon.ico">
<link rel="stylesheet/less" href="main.less">
<script src="less-1.5.0.min.js"></script>
</head>
<body>
<div id="header"></div>
<div class="header"><h1>标题</h1><p><a href="###">less嵌套</a></p></div>
<div id="desaturate">运算</div>
<div id="desaturatefoot">函数</div>
<div id="box-shadow"></div>
<div id="footer"></div>
</body>
</html>
main.less:
.rounded-corners (@radius: 5px) { -webkit-border-radius: @radius; -moz-border-radius: @radius; -ms-border-radius: @radius; -o-border-radius: @radius; border-radius: @radius; }
#header { .rounded-corners; width:100px; height:100px; background:red; } #footer { .rounded-corners(10px); width:100px; height:100px; background:red; margin-top:100px; }
.header { h1 { font-size: 26px; font-weight: bold; } p { font-size: 12px; a { text-decoration: none; &:hover { border: 1px solid red; } } } }
@the-border: 1px; @base-color: #111; @red: #842210;
#desaturate { color: (@base-color * 3); border-left: @the-border solid red; border-right: (@the-border * 2) solid red; width:50%; height:100px; background:green; } #desaturatefoot { color: (@base-color + #003300); border: 3px solid desaturate(@red, 10%);//饱和度比@red少10% width:50%; height:100px; background:gray; }
//@arguments 包含所有传递进来的参数 .box-shadow (@x: 0, @y: 0, @blur: 1px, @color: #000) { box-shadow: @arguments; -moz-box-shadow: @arguments; -webkit-box-shadow: @arguments; width:50%; height:100px; background:green; }
#box-shadow{ .box-shadow(2px, 5px); }
函数和运算
运算提供了加,减,乘,除操作;我们可以做属性值和颜色的运算,这样就可以实现属性值之间的复杂关系。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: #333;
border-left: 1px;
border-right: 2px;
}
#footer {
color: #114411;
border-color: #7d2717;
}
更多说明
更多更详细的语法特性请参见语言文档
快速上手
LESSCSS的使用是很容易的,首先,使用你最常使用的代码编辑器,按LESSCSS的语法规则写好.less文件,接下来,使用编译工具它编译成.css,最后再引入页面即可。
GUI编译工具
为方便起见,建议初学者使用GUI编译工具来编译.less文件,以下是一些可选GUI编译工具:
koala(Win/Mac/Linux)
国人开发的LESSCSS/SASS编译工具。下载地址:http://koala-app.com/index-zh.html
Codekit(Mac)
一款自动编译Less/Sass/Stylus/CoffeeScript/Jade/Haml的工具,含语法检查、图片优化、自动刷新等附加功能。下载地址http://incident57.com/codekit/
WinLess(Win)
一款LESS编译软件。下载地址http://winless.org/
SimpleLess(Win/Mac/Linux)
一款LESS编译软件。下载地址http://wearekiss.com/simpless
Node.js库
LESSCSS官方有一款基于Node.js的库,用于编译.less文件。
使用时,首先全局安装less(部分系统下可能需要在前面加上sudo切换为超级管理员权限):
npm install -g less
接下来就可以使用lessc来编译.less文件了:
lessc example/example.less example/example.css
更多选项可以直接运行lessc查看说明。
浏览器端使用
LESSCSS也可以不经编译,直接在浏览器端使用。
使用方法:
- 下载LESSCSS的.js文件,例如lesscss-1.4.0.min.js。
在页面中引入.less文件
<link rel="stylesheet/less" href="example.less" />
需要注意
rel属性的值是stylesheet/less,而不是stylesheet。引入第1步下载的.js文件
<script src="lesscss-1.4.0.min.js"></script>
需要特别注意的是,由于浏览器端使用时是使用ajax来拉取.less文件,因此直接在本机文件系统打开(即地址是file://开头)或者是有跨域的情况下会拉取不到.less文件,导致样式无法生效。
还有一种情况容易导致样式无法生效,就是部分服务器(以IIS居多)会对未知后缀的文件返回404,导致无法正常读取.less文件。解决方案是在服务器中为.less文件配置MIME值为text/css(具体方法请搜索)。或者还有一种更简单的方法,即是直接将.less文件改名为.css文件即可。
更多说明
更多使用上的说明请参见使用说明。
更新说明
1.4.0
1.4.0已经正式发布,这个版本引入了一些新特性,如派生(extends)、data-uri函数以及更多的数学函数。详细的变更情况请查看更新日志。
在这个版本中,有一些不兼容的变化。
@import-once被移除,现在@import的默认行为就是只引入一次(和旧版本@import-once功能一样)。- 像
(~".myclass_@{index}") {...}这样在选择器中插入变量的语法不再被支持,请使用.myclass_@{index} {...}来代替,这种新语法在1.3.1以上版本中都支持。 - 用于浏览器的less.js不再包含es5-shim.js。因为我们之前用的es5-shim.js版本中有一些错误,而新版本的体积又明显变大了。使用时请根据需要选用es5-shim或者是只在现代浏览器中使用。
引入了一种“严格运算模式”(可选),在严格运算模式中,数学运算必须被括号包裹,如:
(1 + 1) // 2
1 + 1 // 1+1
在1.4.0中,这个选项默认被关闭,但我们希望在未来的某个时间将它默认设置为开启。我们建议你升级代码的写法,并打开严格运算模式。(在命令行中加上
-strict-math=on或者是在JavaScript代码中加入strictMath:true。)带括号的写法与旧版的less编译器兼容。- 引入了一种“严格单位模式”(
strictUnits:true或者strict-units=on),这将强制让lessc验证单位的合法性。例如4px/2px结果为2,而不是2px,而4em/2px将报错。目前没有将这个选项默认打开的计划,但它可能在排查bug的时候有用。 - 单位的运算功能已完成,所以
(4px * 3em) / 4px以前结果是3px,但现在是3em。但是,我们没有取消有单位数字向无单位数字转换的功能,除非“严格单位模式”被开启。
你可以现在就将选择器中插入变量、运算、单位的涉及到的变化应用到代码中去,这些变化能很好地与less 1.3.3兼容。
html:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>less</title>
<meta name="description" content="LESS CSS框架简单实例">
<meta name="keywords" content="LESS,LESSCSS,CSS">
<link rel="shortcut icon" href="/favicon.ico">
<link rel="stylesheet/less" href="main.less">
<script src="less-1.5.0.min.js"></script>
</head>
<body>
<div id="header"></div>
<div class="header"><h1>标题</h1><p><a href="###">less嵌套</a></p></div>
<div id="desaturate">运算</div>
<div id="desaturatefoot">函数</div>
<div id="box-shadow"></div>
<div id="footer"></div>
</body>
</html>
main.less文件类似于css文件
.rounded-corners (@radius: 5px) {
-webkit-border-radius: @radius;
-moz-border-radius: @radius;
-ms-border-radius: @radius;
-o-border-radius: @radius;
border-radius: @radius;
}
#header {
.rounded-corners;
width:100px;
height:100px;
background:red;
}
#footer {
.rounded-corners(10px);
width:100px;
height:100px;
background:red;
margin-top:100px;
}
.header {
h1 {
font-size: 26px;
font-weight: bold;
}
p {
font-size: 12px;
a {
text-decoration: none;
&:hover {
border: 1px solid red;
}
}
}
}
@the-border: 1px;
@base-color: #111;
@red: #842210;
#desaturate {
color: (@base-color * 3);
border-left: @the-border solid red;
border-right: (@the-border * 2) solid red;
width:50%;
height:100px;
background:green;
}
#desaturatefoot {
color: (@base-color + #003300);
border: 3px solid desaturate(@red, 10%);//饱和度比@red少10%
width:50%;
height:100px;
background:gray;
}
//@arguments 包含所有传递进来的参数
.box-shadow (@x: 0, @y: 0, @blur: 1px, @color: #000) {
box-shadow: @arguments;
-moz-box-shadow: @arguments;
-webkit-box-shadow: @arguments;
width:50%;
height:100px;
background:green;
}
#box-shadow{
.box-shadow(2px, 5px);
}
GUI编译工具koala(Win/Mac/Linux)就是讲。less文件转换成css文件
less css框架的学习的更多相关文章
- 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.1.CSS框架和其他功能
jquery.ui.all.css 1.所有主题必须的文件都包含在这个文件中.它由ui.base.css和ui.them.css两个文件中拉入的@import执行构成. jquery.ui.base. ...
- 原生 CSS 网格布局学习笔记
下是来自Oliver Williams的帖子. Oliver已经学习了相当长时间的原生CSS网格,可以说是在CSS网格方面有一定的发言权.在这篇文章中,他将以非同寻常的思路分析自己的CSS网格布局学习 ...
- 使用自己的CSS框架(转)
[经典推介]CSS框架选择向导 不少CSS框架已经存在了一段时间,但大多数Web开发人员避免使用它们. 相反最有经验的开发者希望创建自己的CSS框架,提供个性化解决方案的优势,并减少对第三方的解决方案 ...
- CSS框架分析与网站的CSS架构
框架(framework)是一个基本概念上的结构,用于去解决或者处理复杂的问题,是一种可复用的构架. 我们对CSS框架这个词比较陌生,但对于JavaScript框架就比较熟悉了,比如jQuery 但为 ...
- 你应该知道的9个优秀的CSS框架
前端开发是一项非常繁琐的工作,你不仅需要拥有和别人不一样的审美观和设计观,而且需要了解诸如HTML.CSS.JavaScript等错综复杂的技术,因此选择一些优秀的CSS框架或许可以帮助你大大提高工作 ...
- 一些 CSS 框架
利用 CSS 框架,可以简化你的工作,提高工作效率.CSS 框架是一系列 CSS 文件的集合体,包含了基本的元素重置,页面排版.网格布局.表单样式.通用规则等代码块.下面给你推荐了27款优秀的CSS框 ...
- 使用css框架的优缺点
使用css框架的优点 1.加速开发 CSS框架提供通用的代码(如reset,和移动端开发的一些常用设置)和许多丰富的UI组件样式——因此我们不需要从头开始写. 2.无兼容性烦恼 CSS框架解决了各个浏 ...
- 如何编写轻量级 CSS 框架
Github 地址: https://github.com/nzbin/snack Demo 演示: https://nzbin.github.io/snack/ 前言 这篇文章我已经酝酿了半年之久, ...
- 常用的CSS框架
常用的CSS框架 之前在写自己的个人网站的时候,由于自己Web前端不是特别好,于是就去找相关的CSS框架来搭建页面了. 找到以下这么一篇文章(列出了很多常用的CSS框架): http://w3scho ...
随机推荐
- spring的applicationContext.xml中的DBCP配置如下:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy ...
- 【安卓】给gallery内"控件"挂载事件,滑动后抬起手指时也触发事件(滑动时不应触发)的解决、!
思路: 1.gallery内控件挂载事件(如:onClickListener)的方法类似listview,可直接在baseAdapter.getView内给控件挂载(详细方法百度). 2.貌似没问题, ...
- MySQL优化之——权限管理
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46763767 在mysql数据库中,有mysql_install_db脚本初始化权 ...
- oracle 批量更新表字段
(一) 将数字替换成汉字 第一步,去重查询 使用distinct关键字先对该字段值进行去重查询,看共有几种情况 --查询指定区间内表停诊字段的值 SELECT DISTINCT T.CLOSE_T ...
- 对opencv MeanShift 融合矩形框的改进
OPENCV 中的代码改进.当然要依据自己的实际情况来,OPENCV 中行人检測有两种矩形框的融合算法.这里仅仅对meanshift 方法做改进 假设有更好的方法.希望能够跟我讲下. 对于去除重合部分 ...
- 【Oracle】查询字段的长度、类型、精度、注释等信息
查询数据字典中字段的相关信息 SELECT T .column_name AS column_name, --列名 T .column_type AS column_type, ---字段类型 T . ...
- CAS连接微软活动目录的配置方法
原文地址:http://blog.csdn.net/baozhengw/article/details/3857669在微软活动目录中建立一个用户节点,帐号为wangzhenyu,cn为zhenyu ...
- Android网络开发之HttpURLConnection
http是一个可靠的传输,建立在TCP/IP连接之上,缺省端口是80,其他端口号也可以用.Android可以用HttpURLConnection或HttpClient接口来开发http程序. http ...
- 通过配置CPU参数 worker_cpu_affinity 提升nginx性能
简介 Nginx默认没有开启利用多核cpu,我们可以通过增加worker_cpu_affinity配置参数来充分利用多核cpu的性能.cpu是任务处理,计算最关键的资源,cpu核越多,性能就越好. 规 ...
- ios block常见的错误(二)——循环引用
这篇博文继续block的常见错误——循环引用. 循环引用是很多初学者不能察觉的,其产生的原因,是block中的代码会对对象进行强引用. 读者请阅读示例代码1,并思考示例代码1所创建的对象能否被正常销毁 ...