课程表

LESS课程

工具箱
速查手册

LESS 变量和混合

当前位置:免费教程 » HTML/CSS » LESS

LESS 做为 CSS 的一种形式的扩展,它并没有阉割 CSS 的功能,而是在现有的 CSS 语法上,添加了很多额外的功能,所以学习 LESS 是一件轻而易举的事情,果断学习之!

变量

请注意 LESS 中的变量实际上是完全的 “常量” ,所以只能定义一次。

定义基本的变量,很容易理解:

  1. @nice-blue: #5B83AD;
  2. @light-blue: @nice-blue + #111;
  3.  
  4. #header { color: @light-blue; }

输出:

  1. #header { color: #6c94be; }

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

  1. @fnord: "I am fnord.";
  2. @var: 'fnord';
  3. content: @@var;

解析后:

  1. content: "I am fnord.";

混合

在 LESS 中我们可以定义一些通用的属性集为一个class,然后在另一个class中去调用这些属性. 下面有这样一个class:

  1. .bordered {
  2. border-top: dotted 1px black;
  3. border-bottom: solid 2px black;
  4. }

那如果我们现在需要在其他class中引入那些通用的属性集,那么我们只需要在任何class中像下面这样调用就可以了:

  1. #menu a {
  2. color: #111;
  3. .bordered;
  4. }
  5. .post a {
  6. color: red;
  7. .bordered;
  8. }

.bordered class里面的属性样式都会在 #menu a 和 .post a中体现出来:

  1. #menu a {
  2. color: #111;
  3. border-top: dotted 1px black;
  4. border-bottom: solid 2px black;
  5. }
  6. .post a {
  7. color: red;
  8. border-top: dotted 1px black;
  9. border-bottom: solid 2px black;
  10. }

任何 CSS class, id 或者 元素 属性集都可以以同样的方式引入。

带参数混合

在 LESS 中,你还可以像函数一样定义一个带参数的属性集合:

  1. .border-radius (@radius) {
  2. border-radius: @radius;
  3. -moz-border-radius: @radius;
  4. -webkit-border-radius: @radius;
  5. }

然后在其他class中像这样调用它:

  1. #header {
  2. .border-radius(4px);
  3. }
  4. .button {
  5. .border-radius(6px);
  6. }

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

  1. .border-radius (@radius: 5px) {
  2. border-radius: @radius;
  3. -moz-border-radius: @radius;
  4. -webkit-border-radius: @radius;
  5. }

所以现在如果我们像这样调用它的话:

  1. #header {
  2. .border-radius;
  3. }

radius的值就会是5px.

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

  1. .wrap () {
  2. text-wrap: wrap;
  3. white-space: pre-wrap;
  4. white-space: -moz-pre-wrap;
  5. word-wrap: break-word;
  6. }
  7.  
  8. pre { .wrap }

输出:

  1. pre {
  2. text-wrap: wrap;
  3. white-space: pre-wrap;
  4. white-space: -moz-pre-wrap;
  5. word-wrap: break-word;
  6. }

@arguments 变量:@arguments包含了所有传递进来的参数. 如果你不想单独处理每一个参数的话就可以像这样写:

  1. .box-shadow (@x: 0, @y: 0, @blur: 1px, @color: #000) {
  2. box-shadow: @arguments;
  3. -moz-box-shadow: @arguments;
  4. -webkit-box-shadow: @arguments;
  5. }
  6. .box-shadow(2px, 5px);

将会输出:

  1. box-shadow: 2px 5px 1px #000;
  2. -moz-box-shadow: 2px 5px 1px #000;
  3. -webkit-box-shadow: 2px 5px 1px #000;
转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号