美文网首页
Less即学即用

Less即学即用

作者: YM雨蒙 | 来源:发表于2018-02-06 14:09 被阅读37次

Less是什么?

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

变量

  • 变量允许我们单独定义一系列通用的样式,然后在需要的时候去调用。所以在做全局样式调整的时候我们可能只需要修改几行代码就可以了。
  • LESS 中的变量为完全的 ‘常量’ ,所以只能定义一次.
  • 声明变量: @变量名: 值
  // LESS

@color: #4D926F;

#header {
  color: @color;
}
h2 {
  color: @color;
}

/* 生成的 CSS */

#header {
  color: #4D926F;
}
h2 {
  color: #4D926F;
}
// 用变量名定义为变量
@fnord: "I am fnord.";
@var: 'fnord';
content: @@var;

content: "I am fnord.";

混合

  • 混合可以将一个定义好的class A轻松的引入到另一个class B中,从而简单实现class B继承class A中的所有属性。我们还可以带参数地调用,就像使用函数一样。
// LESS
// 带参数混合
.rounded-corners (@radius: 5px) {
  border-radius: @radius;
  -webkit-border-radius: @radius;
  -moz-border-radius: @radius;
}

#header {
  .rounded-corners;
}
#footer {
  .rounded-corners(10px);
}

/* 生成的 CSS */

#header {
  border-radius: 5px;
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
}
#footer {
  border-radius: 10px;
  -webkit-border-radius: 10px;
  -moz-border-radius: 10px;
}
.bordered {
  border-top: dotted 1px black;
  border-bottom: solid 2px black;
}
// 调用
#menu a {
  color: #111;
  .bordered;
}
.post a {
  color: red;
  .bordered;
}
// css 显示
#menu a {
  color: #111;
  border-top: dotted 1px black;
  border-bottom: solid 2px black;
}
.post a {
  color: red;
  border-top: dotted 1px black;
  border-bottom: solid 2px black;
}
混合

嵌套规则

  • 我们可以在一个选择器中嵌套另一个选择器来实现继承,这样很大程度减少了代码量,并且代码看起来更加的清晰。

// LESS

#header {
  h1 {
    font-size: 26px;
    font-weight: bold;
  }
  p { font-size: 12px;
    a { text-decoration: none;
      &:hover { border-width: 1px }
    }
  }
}
/* 生成的 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中的函数一一映射了JavaScript代码,如果你愿意的话可以操作属性值。
  • 任何数字、颜色或者变量都可以参与运算. 来看一组例子:
@base: 5%;
@filler: @base * 2;
@other: @base + @filler;

color: #888 / 4;
background-color: @base-color + #111;
height: 100% / 2 + @filler;
// LESS

@the-border: 1px;
@base-color: #111;
@red:        #842210;

#header {
  color: @base-color * 3;
  border-left: @the-border;
  border-right: @the-border * 2;
}
#footer { 
  color: @base-color + #003300;
  border-color: desaturate(@red, 10%);
}
/* 生成的 CSS */

#header {
  color: #333;
  border-left: 1px;
  border-right: 2px;
}
#footer { 
  color: #114411;
  border-color: #7d2717;
}

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
想在一种颜色的通道上创建另一种颜色,这些函数就显得那么的好用,例如:

@new: hsl(hue(@old), 45%, 90%);

Math 函数

  • LESS提供了一组方便的数学函数,你可以使用它们处理一些数字类型的值:
round(1.67); // returns `2`
ceil(2.4);   // returns `3`
floor(2.6);  // returns `2`
如果你想将一个值转化为百分比,你可以使用percentage 函数:

percentage(0.5); // returns `50%`

注释

  • CSS 形式的注释在 LESS 中是依然保留的:
/* Hello, I'm a CSS-style comment */
.class { color: black }

LESS 同样也支持双斜线的注释, 但是编译成 CSS 的时候自动过滤掉:

// Hi, I'm a silent comment, I won't show up in your CSS
.class { color: white }

作用域

  • LESS 中的作用域跟其他编程语言非常类似,首先会从本地查找变量或者混合模块,如果没找到的话会去父级作用域中查找,直到找到为止.
@var: red;

#page {
  @var: white;
  #header {
    color: @var; // white
  }
}

#footer {
  color: @var; // red  
}

Importing

  • 你可以在main文件中通过下面的形势引入 .less 文件, .less 后缀可带可不带:
@import "lib.less";
@import "lib";

如果你想导入一个CSS文件而且不想LESS对它进行处理,只需要使用.css后缀就可以:

@import "lib.css";

这样LESS就会跳过它不去处理它.

字符串插值

  • 变量可以用类似ruby和php的方式嵌入到字符串中,像@{name}这样的结构:
@base-url: "http://assets.fnord.com";
background-image: url("@{base-url}/images/bg.png");

相关文章

  • LESS即学即用

    一、前言 我们大家都知道HTML和CSS不属于编程语言而是属于标记语言,所以很难像JS一样定义变量、编写方法、实现...

  • Less即学即用

    Less是什么? Less是一种动态样式语言,LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承, 运算...

  • LESS语法

    教程根据慕课网Leo老师less即学即用教程而来 LESS语法 CSS语法转换

  • less即学即用------知识储备

    前言 前两天去找工作了,年前招聘的不多了,还碰上外包的,还有个卖药的。好吧,我就不吐槽了。我还是乖乖修炼内功,年后...

  • 即学即用

    「零秒思考」的笔记法和「复盘」原理近似,回忆出昨天的事情,一点点找出昨天的错误,面对自己,思考改变,从而改变生活状...

  • SASS即学即用

    前言 Sass是CSS预处理器,Sass是一种易于使用的样式语言,可帮助减少传统CSS的许多重复性和可维护性挑战。...

  • 【峰友会.高效学习特训营】高效学习

    高效学习 听完小峰老师的高效学习营开营仪式,有以下几点感悟。 何为高效学习?即学即用,为我所用。 什么是即学即用?...

  • 158|年度复盘:即学即用的科学养育工具包

    158|年度复盘:即学即用的科学养育工具包 Dr. 魏 2018-03-08 158|年度复盘:即学即用的科学养育...

  • 即学即用,为我所用

    我有一段时间的状态就好像小峰老师说的一样:囤知识。 我买的课程没有听完过,或者说没有深度学习过,做一下任务即可,但...

  • 即学即用,为我所用

    很庆幸有机会参加小峰老师的高效学习特训营,以下是第一次的分享课复盘。 首先是分享课的具体内容: 高效学习核心句:即...

网友评论

      本文标题:Less即学即用

      本文链接:https://www.haomeiwen.com/subject/dolgzxtx.html