less学习

tech2022-08-04  80

目录

概览变量(Variables混合(Mixins)嵌套(Nesting)@规则嵌套和冒泡运算(Operations)

概览

Less (Leaner Style Sheets 的缩写) 是一门向后兼容的 CSS 扩展语言。 因为 Less 和 CSS 非常像,因此很容易学习。而且 Less 仅对 CSS 语言增加了少许方便的扩展,这就是 Less 如此易学的原因之一。

Less 到底为 CSS 添加的新功能:

变量(Variables

@width: 10px; @height: @width + 10px; #header { width: @width; height: @height; }

编译为:

#header { width: 10px; height: 20px; }

混合(Mixins)

混合(Mixin)是一种将一组属性从一个规则集包含(或混入)到另一个规则集的方法。 定义一个类:

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

在其他类中调用这个类:

#menu a { color: #111; .bordered(); } .post a { color: red; .bordered(); }

.bordered类所包含的属性就将同时出现在 #menu a和.post a中了。

嵌套(Nesting)

Less 提供了使用嵌套(nesting)代替层叠或与层叠结合使用的能力。 假设我们有以下 CSS 代码:

#header { color: black; } #header .navigation { font-size: 12px; } #header .logo { width: 300px; }

用 Less 语言我们可以这样书写代码:

#header { color: black; .navigation { font-size: 12px; } .logo { width: 300px; } }

header的后代可以在header中编写,类似于HTML的结构。

还可以使用此方法将伪选择器(pseudo-selectors)与混合(mixins)一同使用。下面是一个经典的 clearfix 技巧,重写为一个混合(mixin) (& 表示当前选择器的父级):

.clearfix { display: block; zoom: 1; &:after { content: " "; display: block; font-size: 0; height: 0; clear: both; visibility: hidden; } }

效果:

.clearfix { display: block; zoom: 1; } .clearfix:after { content: " "; display: block; font-size: 0; height: 0; clear: both; visibility: hidden; }

@规则嵌套和冒泡

@ 规则(例如 @media 或 @supports)可以与选择器以相同的方式进行嵌套。@ 规则会被放在前面,同一规则集中的其它元素的相对顺序保持不变。这叫做冒泡(bubbling)。

.component { width: 300px; @media (min-width: 768px) { width: 600px; @media (min-resolution: 192dpi) { background-image: url(/img/retina2x.png); } } @media (min-width: 1280px) { width: 800px; } }

编译为:

.component { width: 300px; } @media (min-width: 768px) { .component { width: 600px; } } @media (min-width: 768px) and (min-resolution: 192dpi) { .component { background-image: url(/img/retina2x.png); } } @media (min-width: 1280px) { .component { width: 800px; } }

运算(Operations)

算术运算符 +、-、*、/ 可以对任何数字、颜色或变量进行运算。如果可能的话,算术运算符在加、减或比较之前会进行单位换算。计算的结果以最左侧操作数的单位类型为准。如果单位换算无效或失去意义,则忽略单位。无效的单位换算例如:px 到 cm 或 rad 到 % 的转换。

// 所有操作数被转换成相同的单位 @conversion-1: 5cm + 10mm; // 结果是 6cm @conversion-2: 2 - 3cm - 5mm; // 结果是 -1.5cm // conversion is impossible @incompatible-units: 2 + 5px - 3cm; // 结果是 4px // example with variables @base: 5%; @filler: @base * 2; // 结果是 10% @other: @base + @filler; // 结果是 15%

乘法和除法不作转换。因为这两种运算在大多数情况下都没有意义,一个长度乘以一个长度就得到一个区域,而 CSS 是不支持指定区域的。Less 将按数字的原样进行操作,并将为计算结果指定明确的单位类型。

@base: 2cm * 3mm; // 结果是 6cm

你还可以对颜色进行算术运算:

@color: #224488 / 2; //结果是 #112244 background-color: #112244 + #111; // 结果是 #223355

//======待后续 calc() 特例

最新回复(0)