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写法:

1
2
3
4
5
6
7
8
9
.class 1 {
    color : #ccc ;
    width : 100px ;
}
 
.class 2 {
    color : #ccc ;
    width : 120px ;
}

 

   LESS写法:
1
2
3
4
5
6
7
8
9
10
11
@color 1:  #ccc ;
 
.class 1 {
    color :@color 1 ;
    width : 100px ;
}
 
.class 2 {
    color :@color 1 ;
    width : 120px ;
}

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

嵌套规则:
  一般css的写法:
1
2
3
#header{ color : red ;}
#header .logo{backgroud-image: url (logo.gif);}
#header li{ display : block ;}
      LESS写法:
1
2
3
4
5
6
7
8
9
#header{
   color : red ;
   .logo{
       backgroud-image: url (logo.gif);
    }
    li{
      display : block ;
    }
}

运算符:
  LESS 写法:
1
2
3
4
5
6
7
@fontSize 12px ;
.class 1 {
font-size : @fontSize + 2 ;
}
.class 2 {
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/archive/2010/07/01/less.html     ,如需转载请自行联系原作者


相关文章
|
2月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
继承 我们的CSS中很多的属性也是可以继承的,其中相当一部分是跟文字的相关的,比如说颜色、字体、字号。 当然还有一部分是不能继承的。 例如边框、内外边距。 层叠 层叠是CSS的核心机制。 层叠的工作机制: 当元素的同一个样式属性有多种样式值的时候,CSS就是靠层叠机制来决定最终应用哪种样式。 层叠规则: 层叠规则一:找到应用给每个元素和属性的声明。 说明:浏览器在加载每个页面时,都会据此查找到每条CSS规则, 并标识出所有受到影响的HTML元素。
120 1
|
前端开发 开发者
CSS预处理器Less、Scss
【10月更文挑战第3天】
268 59
|
前端开发
CSS——@layer规则
CSS——@layer规则
216 2
CSS——@layer规则
|
存储 移动开发 前端开发
高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容
本文深入探讨了高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容,旨在提升开发效率、网站性能和用户体验。
363 5
|
前端开发 JavaScript
如何在 JavaScript 中访问和修改 CSS 变量?
【10月更文挑战第28天】通过以上方法,可以在JavaScript中灵活地访问和修改CSS变量,从而实现根据用户交互、页面状态等动态地改变页面样式,为网页添加更多的交互性和动态效果。在实际应用中,可以根据具体的需求和场景选择合适的方法来操作CSS变量。
503 12
|
前端开发 JavaScript
如何在 CSS 变量中使用函数?
【10月更文挑战第28天】虽然CSS变量本身不能像传统编程语言中的函数那样直接进行复杂的运算和逻辑处理,但通过CSS预处理器、`calc()` 函数以及与JavaScript的结合,可以在很大程度上实现类似函数的功能,提高CSS样式的灵活性和可维护性,满足各种不同的页面设计和交互需求。
220 12
|
前端开发 JavaScript 数据处理
CSS 变量的作用域和 JavaScript 变量的作用域有什么不同?
【10月更文挑战第28天】CSS变量和JavaScript变量虽然都有各自的作用域概念,但由于它们所属的语言和应用场景不同,其作用域的定义、范围、覆盖规则以及与其他语言特性的交互方式等方面都存在明显的差异。理解这些差异有助于更好地在Web开发中分别运用它们来实现预期的页面效果和功能逻辑。
212 11
|
前端开发
create-react-app 如何使用 less/sass 和 react-css-modules?
本文详细介绍了在 create-react-app 项目中如何使用 less/sass 和 react-css-modules 来管理和应用样式。首先,通过安装相应依赖并配置 webpack 支持 less/sass;接着,介绍如何使用这些预处理器编写样式;最后,讲解了如何配置和使用 react-css-modules 实现样式的模块化管理,以及如何结合使用 less/sass 和 react-css-modules 提高开发效率和代码质量。
321 3
|
前端开发 开发者 容器
CSS 变量的作用域是什么?
【10月更文挑战第28天】理解CSS变量的作用域规则对于有效地使用CSS变量来组织和管理页面样式非常重要。通过合理地利用全局作用域和局部作用域,以及掌握变量的覆盖和继承规则,可以创建更具可维护性、灵活性和可扩展性的CSS样式表,实现各种复杂的页面设计和样式需求。
|
前端开发 JavaScript UED

热门文章

最新文章