动态css语言less,less让css具有动态语言的特性

Less 是一种样式语言,它将 css 赋予了动态语言的特性,如变量、 继承、 运算、 函数。less 既可以在客户端上运行(支持IE 6+, Webkit, Firefox),也可以借助 Node.js 或者 Rhino 在服务端运行。

Less 做为 css 的一种形式的扩展,它并没有阉割 css 的功能,而是在现有的 css 语法上,添加了很多额外的功能,所以对于前端开发人员来所,学习 less 是一件轻而易举的事情。我们先看下用 less 写的一段 css:

复制代码代码如下:

@base: #f938ab;

.box-shadow(@style, @c) when (iscolor(@c)) {

box-shadow: @style @c;

-webkit-box-shadow: @style @c;

-moz-box-shadow: @style @c;

}

.box-shadow(@style, @alpha: 50%) when (isnumber(@alpha)) {

.box-shadow(@style, rgba(0, 0, 0, @alpha));

}

.box {

color: saturate(@base, 5%);

border-color: lighten(@base, 30%);

div { .box-shadow(0 0 5px, 30%) }

}

在没有学过 less 的情况下,我们并不知道这些代码是做啥用的,怎么生成我们所熟悉的 css 代码,以上代码经过 less 编译后:

复制代码代码如下:

.box {

color: #fe33ac;

border-color: #fdcdea;

}

.box div {

box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);

-webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);

-moz-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);

}

下面我们就一起来学习 less 吧。

我们知道如果要使用 jquery 就必须在页面上引进 jquery 库,同样的在使用 less 编写 css 代码时,也要引进 less 库——less.js。点击这里下载 less 库。

下载好后只要在页面中引入就可以了。

复制代码代码如下:

要注意外部引进样式的方法有所改变,rel 属性值为 stylesheet/less,样式的后缀变为 .less 同时 less 样式文件一定要在 less.js 前先引入。

引入了 less 之后,正式开始学习 less。

LESS 语法

1、变量

Less 的变量充许你在样式中对常用的属性值进行定义,然后应用到样式中,这样只要改变变量的值就可以改变全局的效果。和 javascript 中的全局变量有点类似。

甚至可以用变量名定义为变量。

复制代码代码如下:

@color: red;

@foot: 'color';

.head{

color: @color;

}

.foot{

color: @@foot;

}

输出:

复制代码代码如下:

.head {

color: red;

}

.foot {

color: red;

}

注意 less 中的变量为完全的“常量”,所以只能定义一次。

2、混合

混合就是定义一个 class,然后在其他 class 中调用这个 class。

复制代码代码如下:

.common{

color: red;

}

.nav{

background: #ccc;

.common;

}

输出:

复制代码代码如下:

.common {

color: red;

}

.nav {

background: #ccc;

color: red;

}

Css 中的 class, id 或者元素属性集都可以用同样的方式引入。

3、带参数混合

在 less 中,你可以把 class 当做是函数,而函数是可以带参数的。

复制代码代码如下:

.border-radius (@radius) {

border-radius: @radius;

-moz-border-radius: @radius;

-webkit-border-radius: @radius;

}

#header {

.border-radius(4px);

}

.button {

.border-radius(6px);

}

最后输出:

复制代码代码如下:

#header {

border-radius: 4px;

-moz-border-radius: 4px;

-webkit-border-radius: 4px;

}

.button {

border-radius: 6px;

-moz-border-radius: 6px;

-webkit-border-radius: 6px;

}

我们还可以给参数设置默认值:

复制代码代码如下:

.border-radius (@radius: 5px) {

border-radius: @radius;

-moz-border-radius: @radius;

-webkit-border-radius: @radius;

}

#header {

.border-radius;

}

最后输出:

复制代码代码如下:

#header {

border-radius: 5px;

-moz-border-radius: 5px;

-webkit-border-radius: 5px;

}

也可以定义不带参数属性集合,如果想要隐藏这个属性集合,不让它暴露到CSS中去,但是还想在其他的属性集合中引用,就会发现这个方法非常的好用:

复制代码代码如下:

.wrap () {

text-wrap: wrap;

white-space: pre-wrap;

white-space: -moz-pre-wrap;

word-wrap: break-word;

}

pre {

.wrap

}

输出:

复制代码代码如下:

pre {

text-wrap: wrap;

white-space: pre-wrap;

white-space: -moz-pre-wrap;

word-wrap: break-word;

}

混合还有个重要的变量@arguments。

@arguments 包含了所有传递进来的参数,当你不想处理个别的参数时,这个将很有用。

复制代码代码如下:

.border(@width:0,@style:solid,@color:red){

border:@arguments;

}

.demo{

.border(2px);

}

输出:

复制代码代码如下:

.demo {

border: 2px solid #ff0000;

}

混合还有许多高级的应用,如模式匹配等。在这里就不介绍了,只讲些基础的东西。

4、嵌套规则

Less 可以让我们用嵌套的方式来写 css。下面是我们平时写的 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;

}

用 less 我们就可以这样写:

复制代码代码如下:

#header {

h1 {

font-size: 26px;

font-weight: bold;

}

p {

font-size: 12px;

a {

text-decoration: none;

&:hover { border-width: 1px }

}

}

}

注意 & 符号的使用—如果你想写串联选择器,而不是写后代选择器,就可以用到 & 了。这点对伪类尤其有用如 :hover。

5、运算

任何数字、颜色或者变量都可以参与运算。

复制代码代码如下:

.demo{

color: #888 / 4;

}

输出:

复制代码代码如下:

.demo {

color: #222222;

}

Less 完全可以进行复杂四则运算,同样的复合运算也没有问题。

6、Color 函数

Less 提供了一系列的颜色运算函数。颜色会先被转化成 HSL 色彩空间,然后在通道级别操作。

复制代码代码如下:

lighten(@color, 10%); // return a color which is 10% *lighter* than @color

darken(@color, 10%); // return a color which is 10% *darker* than @color

saturate(@color, 10%); // return a color 10% *more* saturated than @color

desaturate(@color, 10%); // return a color 10% *less* saturated than @color

fadein(@color, 10%); // return a color 10% *less* transparent than @color

fadeout(@color, 10%); // return a color 10% *more* transparent than @color

fade(@color, 50%); // return @color with 50% transparency

spin(@color, 10); // return a color with a 10 degree larger in hue than @color

spin(@color, -10); // return a color with a 10 degree smaller hue than @color

mix(@color1, @color2); // return a mix of @color1 and @color2

使用起来相当简单:

复制代码代码如下:

@base: #f04615;

.class {

color: saturate(@base, 5%);

background-color: lighten(spin(@base, 8), 25%);

}

还可以提取颜色信息:

复制代码代码如下:

hue(@color); // returns the `hue` channel of @color

saturation(@color); // returns the `saturation` channel of @color

lightness(@color); // returns the 'lightness' channel of @color

例如:

复制代码代码如下:

@color: #f36;

#header {

background-color: hsl(hue(@color),45%,90%);

}

输出:

复制代码代码如下:

#header {

background-color: #f1dae0;

}

7、Math 函数

Less 提供了一组方便的数学函数,你可以使用它们处理一些数字类型的值。

复制代码代码如下:

round(1.67); // returns 2

ceil(2.4); // returns 3

floor(2.6); // returns 2

如果你想将一个值转化为百分比,你可以使用 percentage 函数:

复制代码代码如下:

percentage(0.5); // returns 50%

8、命名空间

有时候,你可能为了更好组织 css 或者单纯是为了更好的封装,将一些变量或者混合模块打包起来,你可以像下面这样在 #form 中定义一些属性集之后可以重复使用:

复制代码代码如下:

#form {

.submit () {

display: block;

border: 1px solid black;

background: gray;

&:hover { background: green }

}

.register { ... }

.login { ... }

}

你只需要在 #myform 中像这样引入 .submit:

复制代码代码如下:

#myform {

color: orange;

#form > .submit;

}

9、作用域

和其他编程语言类似,less 变量也有作用域。首先会从本地查找变量或者混合模块,如果没找到的话会去父级作用域中查找,直到找到为止。

复制代码代码如下:

@var: red;

#page {

@var: white;

#header {

color: @var; // white

}

}

#footer {

color: @var; // red

}

10、注释

Css 形式的注释在 less 中是依然保留的,同时 less 也支持双斜线的注释,但是编译成 css 的时候自动过滤掉。

最后 less 还有一些其他的特性就不介绍了,大家可以去LESS官网看下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/549801.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

硬件_LED

LED 平台&#xff1a;全志A64 源码&#xff1a;Android 7.1 Linux 3.1 led.c 1 //没有使用平台总线2 3 #include <linux/init.h>4 #include <linux/module.h>5 #include <linux/fs.h>6 #include <linux/device.h>7 #include <linux/slab.h>8 #i…

思科考试报名流程

有考生经常来信来电咨询&#xff0c;关于认证注册和考试报名流程的相关内容&#xff0c;针对这点中国思科注册网就为大家整理了以下详细的解释。 1、报名地点及联系方式&#xff1a;思科考试报名地点&#xff1a;a.选择您所在城市报名点报名&#xff1b;b.选择中国思科注册网报…

水星路由器DNS服务器未响应,水星路由器进不去设置怎么办

摘 要水星路由器进不去设置怎么办&#xff1f;这里要分两种情况&#xff0c;旧版水星路由器与新版水星路由器一、旧版水星路由器 1、当打开水星路由器设置页面&#xff0c;如果提示你输入用户名和密码&#xff0c;如下图所示。说明这是一台旧版本的水星路由器水星路由器进不去设…

DotNet程序员是不是最不幸福?

自我学C#和ASp.net时就来逛DotNet区&#xff0c;总是时不时有人问“学.net是不是没有前途&#xff1f;”&#xff0c;总是有人“报怨.net程序人收入比某某要低”。还有人说“在中国&#xff0c;程序人干不到老。”我也曾心动过&#xff0c;想过放弃。 但是&#xff0c;冷静下来…

zookeeper 简介

什么是ZookeeperZookeeper是一个分布式开源框架&#xff0c;提供了协调分布式应用的基本服务&#xff0c;它向外部应用暴露一组通用服务——分布式同步&#xff08;Distributed Synchronization&#xff09;、命名服务&#xff08;Naming Service&#xff09;、集群维护&#x…

discuz的ajax,discuz分页函数改成基于jqueryd的ajax分页函数

/***AJAX分页*$num 为总共的条数 比如说这个分类下共有15篇文章*$perpage为每页要显示的条数*$curpage为当前的页数*$url为请求路径&#xff0c;*$obj为html对象&#xff0c;返回给jqery处理*$page为$multipage这个字符串中要显示的表示页数的变量个数*$maxpages为最大的页数…

北大青鸟:比尔盖茨:我在微软的10大失误

北大青鸟&#xff1a;比尔盖茨&#xff1a;我在微软的10大失误来源&#xff1a;[url]http://www.accp-teem.com.cn/ArticleView/2007-7-11/Article_View_1172.Htm[/url] 微软上周四宣布&#xff0c;从2008年7月开始&#xff0c;董事会主席比尔盖茨将不再负责公司的日常管理&…

网格 优化光顺

简介 网格光滑在计算机图形学中广泛应用。因为从自然界采集的雕像带有很多的噪声。本文对 论文 Laplacian Mesh Optimization 当然错误难以避免&#xff0c;本人水平不足造成错误&#xff0c;希望读者能给予我及时的反馈&#xff0c;本人感激不尽 使用简介 Laplacian Mesh Opti…

2进制、8进制、10进制、16进制...各种进制间的轻松转换(c#)

在.NET Framework中&#xff0c;System.Convert类中提供了较为全面的各种类型、数值之间的转换功能。其中的两个方法可以轻松的实现各种进制的数值间的转换&#xff1a; Convert.ToInt32(string value, int fromBase)&#xff1a; 可以把不同进制数值的字符串转换为数字&#x…

小程序的服务器怎么与数据库连接,小程序怎么连接服务器数据库

小程序怎么连接服务器数据库 内容精选换一换“数据导出”章节适用于MRS 3.x及后续版本。Loader是实现MRS与关系型数据库、文件系统之间交换数据和文件的ETL工具&#xff0c;支持将数据或者文件从MRS系统中导出到关系型数据库或文件系统中。Loader支持如下数据导出方式&#xff…

iPad软件提交注意事项

这是CocoaChina会员 "stlau"根据自己的iPad软件提交经验总结的注意事项&#xff0c;希望大家留意一下&#xff0c;避免软件被苹果审核人员拒绝放行。帖 子地址 http://www.cocoachina.com/bbs/read.php?tid-17119.html肯 定会被拒的情况&#xff1a;1. app命名&…

SQL Assistant v2.5.12 序列号

715253-4G50IRL-1L44-5055 715253-4G50IRL-SL44-5055 715253-4G50IRL-EL44-5055转载于:https://www.cnblogs.com/hzuIT/articles/830208.html

啪啪三国2获取服务器信息,啪啪三国2怎么快速的获得资源?

啪啪三国2&#xff1a;在啪啪三国2手游中有很多特色的玩法&#xff0c;还有很多资源&#xff0c;游戏中有很多地方需要用到&#xff0c;有点供不应求的感觉&#xff0c;很多玩加都想要快速的获得各种资源。小伙伴们知道该怎么快速获得吗&#xff1f;这里小编就给大家来详细的介…

git上传文件过大如何删除

参考链接 https://my.oschina.net/jfinal/blog/215624?fromerrZTZ6c38X 转载于:https://www.cnblogs.com/eat-too-much/p/11318085.html

向Window窗体发送消息,控制程序的运行.

下面是对Windows Media Player进行控制的操作示例.1.运行Windows Media Player;2.运行spyxx.exe,点击"日志消息"图标,在弹出的"消息选项" 窗体中,将"查找程序 工具"图标拖至 Windows Media Player 窗体上;3.点击" 消息"选项卡,选取W…

更新MySQL复制 自动监控脚本

具体代码请见&#xff1a; MySQL复制 自动监控脚本增加了判断slave落后于master多少秒的机制。本文出自 “MySQL中文网”博客 http://www.imysql.cn/转载于:https://blog.51cto.com/imysql/308256

网格参数化和网格的形变,同实验室的人实现。

简介 网格参数化和网格的形变&#xff0c;同实验室的人实现。 参考链接 gitee 转载于:https://www.cnblogs.com/eat-too-much/p/11319920.html

Prototype1.5.1源代码解读分析-3

< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd> BrowserFeatures BrowserFeatures&#xff08;浏览器特征&#xff09;的值也是一个对象。内容如下&#xff1a; { XPath: !!document.evaluate, ElementExtensions: !!window.HTMLEl…

OCP-052考试题库汇总(24)-CUUG内部解答版

Which structure can span multiple data files? A)a bigfile tablespace B)a permanent tablespace C)a segment D)a temporary tablespace E)an extent Answer: C 转载于:https://www.cnblogs.com/cnblogs5359/p/11320250.html

C#常用的文件操作 (转)

C#常用的文件操作 C#常用的文件操作&#xff08;网上收集&#xff09; C#写入/读出文本文件&#xff0c;包括创建文件&#xff0c;追加文件&#xff0c;修改文件&#xff0c;等等操作&#xff0c;个人觉得很适用&#xff0c;所以收藏了&#xff0c;和大家分享 publicvoidPage…