惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
G
Google Developers Blog
Blog — PlanetScale
Blog — PlanetScale
U
Unit 42
A
About on SuperTechFans
Vercel News
Vercel News
B
Blog
Martin Fowler
Martin Fowler
MyScale Blog
MyScale Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
腾讯CDC
D
Docker
V
Visual Studio Blog
博客园 - 叶小钗
The Cloudflare Blog
Jina AI
Jina AI
B
Blog RSS Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
WordPress大学
WordPress大学
T
Tailwind CSS Blog
MongoDB | Blog
MongoDB | Blog
D
DataBreaches.Net
月光博客
月光博客
大猫的无限游戏
大猫的无限游戏

博客园 - BearRui(AK-47)

产生唯一随机码的方法分析。 URL中允许携带sessionid带来的安全隐患。 JS 实现完美include - BearRui(AK-47) - 博客园 基于模板的excel导出 实现if elseif else的jsp标签。 - BearRui(AK-47) 记一复杂页面的前端优化(2) - 其他优化 - BearRui(AK-47) 记一复杂页面的前端优化(1) - 不一样的延迟加载 名站技术分析 — tudou网首页下列菜单的弹出效果 CSS技巧 — 不使用图片实现圆角、阴影、渐变等功能 名站技术分析 — facebook奇特的页面加载技术 了解CSS的查找匹配原理,让CSS更简洁、高效 让ajax更加友好,实时显示后台处理进度。 - BearRui(AK-47) - 博客园 [翻译] IE7,IE8 BUG导致CSS下载二次。 - BearRui(AK-47) 名站技术分析 - 浅谈tudou.com首页图片延迟加载的效果 - BearRui(AK-47) 高性能WEB开发(11) - flush让页面分块,逐步呈现 WEB高性能开发(10) - 疯狂的HTML压缩 该如何加载google-analytics(或其他第三方)的JS web高性能开发系列随笔 管理好程序中的DLL - BearRui(AK-47) - 博客园
LESS 让css也支持变量,运算符,include,嵌套规则等等
BearRui(AK-47) · 2010-07-01 · via 博客园 - BearRui(AK-47)

  最近在网上看到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 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动态生成。

posted on 2010-07-01 08:49  BearRui(AK-47)  阅读(14832)  评论()    收藏  举报