BearRui(AK-47)
花开有时,错过了一日便错过了一季,就象人生错过了相遇,就不再找寻到美丽的相聚
随笔- 39  文章- 2  评论- 1288 
博客园  首页  新随笔  联系  管理  订阅 订阅
LESS 让css也支持变量,运算符,include,嵌套规则等等

  最近在网上看到1个很有意思的CSS扩展,这里介绍给大家。LESS 最早是1个ruby的gem,用于扩展css的语法,用了LESS后,可以在css中使用变量,运算符,include,嵌套规则等等。现在LESS出了js版本,让我们一起来看看LESS能为我们带来什么吧?

 

使用

   1. 下载js: http://lesscss.googlecode.com/ 最新版本好像是 1.0.22

   2. 使用less,css文件的后缀名需要改为.less。

   3. 在html页面中加入下面代码

     <!-- style.less文件就是样式表文件,并且style.less必须放在less-1.0.22.min.js文件前加载,原理后面介绍 -->

     <link rel="stylesheet/less" href="style.less" />  

     <script src="less-1.0.22.min.js"></script>

 

变量

   变量可以让我们声明1个常量值,并在以后多处地方进行重复使用。

 

   一般css写法:

   .class1{
      color:#ccc;
      width:100px;
   }
   
   .class2{
      color:#ccc;
      width:120px;
   }

 

   LESS写法:
   @color1: #ccc;
   
   .class1{
      color:@color1;
      width:100px;
   }
   
   .class2{
      color:@color1;
      width:120px;
   }

inlucde
    大家一定碰见过再某个规则中需要用的部分样式跟另外1个规则样式一样,但没办法,我们只能copy过来,或者为元素指定多个class。但用了LESS后,我们不再需要这么痛苦了。
    
    一般css写法:
   .red{
     color:red;border:1px solid red;
   }
   
   .class2{
      width:100px;font-size:12px;
      /*下面的样式跟red的一样,copy过来的,修改就要修改2处*/
      color:red;border:1px solid red;
   }
 
    LESS写法:
   .red{
     color:red;border:1px solid red;
   }
   
   .class2{
      width:100px;font-size:12px;
      /*直接inlcude .red的规则*/
      .red
   }

嵌套规则:
  一般css的写法:
   #header{color:red;}
  #header .logo{backgroud-image:url(logo.gif);}
  #header li{display:block;} 
      LESS写法:
   #header{
     color:red;
     .logo{
         backgroud-image:url(logo.gif);
      }
      li{
        display:block;
      } 
   }

运算符:
  LESS 写法:
    @fontSize 12px;
    .class1{
	font-size : @fontSize + 2;
    }
    .class2{
	font-size : @fontSize * 2;
    }

更多其它功能:
  请见LESS官方网站:http://lesscss.org/

原理分析:
  LESS js版本的实现方式是使用ajax获取style.less文件,然后根据该文件的规则生成最终浏览器能理解的css插入到html代码中。所以就出现前面说过的<link rel="stylesheet/less" href="style.less" />必须在js前面。

总结:
  LESS JS版本的实现原理,是每次请求都需要通过JS去动态生成原始的css,如果css比较大的话,对于客户端的性能影响比较大,所以个人觉的less的js版本实用性不强。
  不知道LESS 的ruby版本的实现原理是怎么样的,我认为如果真的觉得less方式可以提高css的开发效率,到是可以参考它的代码实现一套java或net的源代码,在程序启动的时候一次根据.less文件生成所有的css文件,而不是每次请求都用js动态生成。

 

PS:刚刚无意间搜索,竟然找到1个net版本的less,大家可以看看这个版本怎么实现的:http://www.dotlesscss.com/
[作者]:BearRui(AK-47)
[博客]: http://www.cnblogs.com/BearsTaR/
[声明]:本博所有文章版权归作者所有(除特殊说明以外),转载请注明出处.
绿色通道:好文要顶关注我收藏该文与我联系
posted on 2010-07-01 08:49 BearRui(AK-47) 阅读(2790) 评论(27) 编辑 收藏
发表评论
1889271
 回复 引用 查看   
#1楼 2010-07-01 09:04 | Vseen[ Aloner ]      
强!佩服啊!
 回复 引用 查看   
#2楼 2010-07-01 09:06 | qishidz      
用过 不错的~~
 回复 引用 查看   
#3楼 2010-07-01 09:08 | qishidz      
就是 没有代码提示!~~
希望日后 有这个功能 就完美啦

 回复 引用 查看   
#4楼[楼主] 2010-07-01 09:10 | BearRui(AK-47)      
这个功能还比较少,应该不怎么需要代码提示吧
 回复 引用 查看   
#5楼[楼主] 2010-07-01 09:11 | BearRui(AK-47)      
竟然发现了1个net版本的,打击可以看看:
http://www.dotlesscss.com/

 回复 引用 查看   
#6楼 2010-07-01 09:19 | jailu      
使用SASS技术的淡淡飘过。
 回复 引用 查看   
#7楼[楼主] 2010-07-01 09:28 | BearRui(AK-47)      
@jailu
sass好像只有ruby版本,没有其他版本,兄弟是用ruby的?

 回复 引用 查看   
#8楼 2010-07-01 09:53 | szyicol      
躺在竹床上边看世界杯边看熊的技术文章。。。。。
 回复 引用 查看   
#9楼 2010-07-01 10:13 | YoungCoder      
0.0
 回复 引用 查看   
#10楼[楼主] 2010-07-01 10:15 | BearRui(AK-47)      
引用szyicol:躺在竹床上边看世界杯边看熊的技术文章。。。。。


二当家住进深山啦,还躺竹床,很惬意啊,你支持哪个队咯

 回复 引用   
#11楼 2010-07-01 10:32 | kuaisan[未注册用户]
希望CSS后续版本能直接加入这些语法功能,都很实用
 回复 引用 查看   
#12楼 2010-07-01 11:02 | 技术,趋势      
不知道这个东西的实用性如何,理论上CSS的目的就是灵活定义样式的, 可以认为是常量,把编程模式的变量引入,会不会增加复杂性?
 回复 引用 查看   
#13楼 2010-07-01 11:07 | 踏云风      
强悍啊,收藏先了....
 回复 引用 查看   
#14楼 2010-07-01 11:09 | szyicol      
@BearRui(AK-47)

因为没有中国队,所以只好支持阿根廷(你懂的)


看你的文章,心旷神怡,胜过住进深山啊!!!!

 回复 引用 查看   
#15楼[楼主] 2010-07-01 11:13 | BearRui(AK-47)      
引用kuaisan:希望CSS后续版本能直接加入这些语法功能,都很实用


估计要CSS直接引进这样的功能还比较难,CSS3都推进的那么慢,更别说加入编程功能了。

 回复 引用 查看   
#16楼[楼主] 2010-07-01 11:15 | BearRui(AK-47)      
引用技术,趋势:不知道这个东西的实用性如何,理论上CSS的目的就是灵活定义样式的, 可以认为是常量,把编程模式的变量引入,会不会增加复杂性?


其实增加的功能不多,对于复杂性我觉的是不会增加的。实用性可能就每个人的想法都不一样吧。

 回复 引用 查看   
#17楼[楼主] 2010-07-01 11:16 | BearRui(AK-47)      
引用szyicol:
@BearRui(AK-47)

因为没有中国队,所以只好支持阿根廷(你懂的)


看你的文章,心旷神怡,胜过住进深山啊!!!!


哈哈,过奖过奖。俺也喜欢阿根廷和西班牙。

 回复 引用 查看   
#18楼 2010-07-01 13:27 | jelle      
嗯。确实很好的东西。CSS3为什么不加上这样的语法呢。收藏了。
 回复 引用 查看   
#19楼[楼主] 2010-07-01 15:18 | BearRui(AK-47)      
引用jelle:嗯。确实很好的东西。CSS3为什么不加上这样的语法呢。收藏了。


谢谢收藏,^_^

 回复 引用 查看   
#20楼 2010-07-01 16:30 | jailu      
@BearRui(AK-47)
不用Ruby的话,可以直接在SASS网站上生成CSS代码,地址是:http://sass-lang.com/try.html

 回复 引用 查看   
#21楼[楼主] 2010-07-01 16:44 | BearRui(AK-47)      
@jailu
这样如果CSS修改频繁,特别测试的时候,每次都要手动去生成的话不是很麻烦?

 回复 引用 查看   
#22楼 2010-07-01 17:19 | jailu      
@BearRui(AK-47)
是的,不过可以用Ruby写个监听程序,.sass文件一旦修改,马上把.sass翻译为.css文件,这样就不会麻烦了。

用js的方式解释.less文件生成css文件,对性能肯定有影响。

 回复 引用 查看   
#23楼[楼主] 2010-07-01 20:44 | BearRui(AK-47)      
引用jailu:
@BearRui(AK-47)
是的,不过可以用Ruby写个监听程序,.sass文件一旦修改,马上把.sass翻译为.css文件,这样就不会麻烦了。

用js的方式解释.less文件生成css文件,对性能肯定有影响。


同意,^_^

 回复 引用 查看   
#24楼 2010-07-02 16:18 | mashihua      

@BearRui

less刚出来时是用ruby写的,lessc有watch选项可以watch文件改动,上一年的lessc不支持background:url(@url)的变量,不知现在支持不?

 回复 引用 查看   
#25楼[楼主] 2010-07-02 16:56 | BearRui(AK-47)      
引用mashihua:
@BearRui

less刚出来时是用ruby写的,lessc有watch选项可以watch文件改动,上一年的lessc不支持background:url(@url)的变量,不知现在支持不?


不理解ruby,也没深入去了解less,自己也没真真使用过less,所以也不知道它的background修改好了没,^_^

 回复 引用 查看   
#26楼 2010-08-08 00:18 | xcntime      
不错的哈,不过性能上有影响,应该
 回复 引用 查看   
#27楼[楼主] 2010-08-08 00:21 | BearRui(AK-47)      
@xcntime
这么晚还没睡啊,性能上肯定是有影响的,可以改成服务器端的就比较好。

刷新评论列表  刷新页面  返回页首
发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

验证码: 验证码 看不清,换一个

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1768741 utmK4SsqThc=
首页博问闪存新闻园子招聘知识库
最新IT新闻:
· 阿里巴巴B2B股权持有人行使1.2万股购股权
· 高通与印度政府和解将获印度宽带服务牌照
· 制造一部 iPhone 的人力物力
· 中国电信即将推出年轻品牌 面向年轻3G用户市场
· 爱立信收购Wi-Fi技术公司BelAir Networks
» 更多新闻...
最新知识库文章:
· 领域模型管理与AOP
· 编程的艺术:漂亮的代码和漂亮的软件
· GIT分支管理是一门艺术
· 编程:是一门艺术
· 编程是一门艺术吗?
» 更多知识库文章...

China-pub 2011秋季教材巡展
China-Pub 计算机绝版图书按需印刷服务

抓虾
google reader
鲜果
哪吒
QQ邮箱
http://wap.feedsky.com/BearRui
昵称:BearRui(AK-47)
园龄:5年10个月
荣誉:推荐博客
粉丝:127
关注:3

搜索

 

最新随笔

  • 1. 产生唯一随机码的方法分析。
  • 2. URL中允许携带sessionid带来的安全隐患。
  • 3. JS 实现完美include
  • 4. 基于模板的excel导出
  • 5. 实现if elseif else的jsp标签。
  • 6. 记一复杂页面的前端优化(2) - 其他优化
  • 7. 记一复杂页面的前端优化(1) - 不一样的延迟加载
  • 8. 名站技术分析 — tudou网首页下列菜单的弹出效果
  • 9. LESS 让css也支持变量,运算符,include,嵌套规则等等
  • 10. CSS技巧 — 不使用图片实现圆角、阴影、渐变等功能

随笔分类(38)

  • .NET(11)
  • CSS(3)
  • JAVA(2)
  • javascript(4)
  • Life(5)
  • WEB(4)
  • 高性能WEB开发(5)
  • 浏览器(1)
  • 名站技术分析(3)

随笔档案(39)

  • 2010年10月 (1)
  • 2010年8月 (3)
  • 2010年7月 (5)
  • 2010年6月 (4)
  • 2010年5月 (6)
  • 2006年6月 (4)
  • 2006年5月 (7)
  • 2006年4月 (9)

积分与排名

  • 积分 - 178246
  • 排名 - 485

最新评论

阅读排行榜

评论排行榜

推荐排行榜

Copyright ©2012 BearRui(AK-47)