網(wǎng)站首頁 編程語言 正文
目錄
Less 是什么
注釋
?變量
? ?1. 變量的使用
? ?2.變量插值
? ? 3.延遲加載——先加載變量再賦值
嵌套規(guī)則
父選擇器
混合(Mixin)
1.普通混合
2.帶參數(shù)的混合
?3.命名參數(shù)
4.匹配模式
5.@arguments 變量
?運(yùn)算
繼承
避免編譯
Less 快速入門 | Less.js 中文文檔 - Less 中文網(wǎng)
-
Less 是什么
Less(Leaner Style Sheets 精簡樣式表) 是一種動態(tài)樣式語言,屬于 css 預(yù)處理器的范疇,它擴(kuò)展了 CSS 語言,增加了變量、Mixin、函數(shù)等特性,使 CSS 更易維護(hù)和擴(kuò)展,Less 既可以在 客戶端 上運(yùn)行 ,也可以借助 Node.js 在服務(wù)端運(yùn)行。
Less 編譯工具:
Koala - a gui application for LESS, Sass, Compass and CoffeeScript compilation.
-
注釋
- 多行注釋保留會被保留在編譯生成的 CSS 中
- 單行注釋不會被保留在編譯生成的 CSS 中
/*
* 多行注釋
* style comment!
*/
// 單行注釋
div {
color: red;
}
-
?變量
? ?1. 變量的使用
@ 聲明變量,作為普通屬性值使用
/*
less
*/
@width: 50px;
@height: 100px;
div {
width: @width;
height: @height;
}
? ?2.變量插值
變量用于選擇器名、屬性名、URL、
@import
語句
/*
less
*/
@my-selector: banner;
// 需要添加 {}
.@{my-selector} {
font-weight: bold;
line-height: 40px;
margin: 0 auto;
}
/*
less
*/
@property: color;
.widget {
@{property}: #0ee;
background-@{property}: #999;
}
/*
less
*/
@images: '../img';
body {
color: #444;
background: url('@{images}/white-sand.png');
}
@themes: '../../src/themes';
@import '@{themes}/tidal-wave.less';
? ? 3.延遲加載——先加載變量再賦值
當(dāng)一個(gè)變量被聲明多次,會取最后一次的值,并由內(nèi)而外,先尋找作用域內(nèi)的變量,如果沒有在尋找作用域外的變量。
/*
編譯前的less
*/
@var: 0;
.class {
@var: 1;
.brass {
@var: 2;
three: @var;
@var: 3;
}
one: @var;
}
/*
編譯后的css
*/
.class {
one: 1;
}
.class .brass {
three: 3;
}
-
嵌套規(guī)則
/*
編譯前的less
*/
#header {
color: black;
.navigation {
font-size: 12px;
}
.logo {
width: 300px;
}
}
/*
編譯后的css
*/
#header {
color: black;
}
#header .navigation {
font-size: 12px;
}
#header .logo {
width: 300px;
}
-
父選擇器
在嵌套規(guī)則中,?
&
?表示父選擇器
/*
編譯前的less
*/
.header {
a {
color: blue;
&:hover {
color: green;
}
}
}
/*
編譯后的css
*/
.header a {
color: blue;
}
.header a:hover {
color: green;
}
如果沒有?
&
,會被編譯成后代選擇器?a :hover 而不是 a:hover 注意空格開了
除此之外,
&
?還能用于生成重復(fù)類名:
/*
編譯前的less
*/
.button {
&-ok {
background-image: url('ok.png');
}
&-custom {
background-image: url('custom.png');
}
}
/*
編譯后的css
*/
.button-ok {
background-image: url('ok.png');
}
.button-custom {
background-image: url('custom.png');
}
-
混合(Mixin)
混合(Mixin)是一種將一組屬性從一個(gè)規(guī)則集包含(或混入)到另一個(gè)規(guī)則集的方式,可理解為函數(shù)或者方法
1.普通混合
/*
編譯前的less
*/
.bordered {
border-top: dotted 1px black;
border-bottom: solid 2px black;
}
#menu a {
color: #111;
.bordered();
}
.post a {
color: red;
.bordered();
}
/*
編譯后的css
*/
.bordered {
border-top: dotted 1px black;
border-bottom: solid 2px black;
}
#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;
}
2.帶參數(shù)的混合
帶參數(shù)的混合要按順序傳遞,不然會出錯(cuò)
/*
編譯前的less
*/
.border(@width, @style, @color) {
border: @width @style @color;
}
div {
.border(1px, solid, #ccc);
}
/*
編譯后的css
*/
div {
border: 1px solid #ccc;
}
混合帶參數(shù)并有默認(rèn)值
/*
less
*/
.border(@width, @style, @color: #ccc) {
border: @width @style @color;
}
div {
.border(1px, solid);
}
// 會出錯(cuò)
.border(@width: 1px, @style, @color) {
border: @width @style @color;
}
div {
.border(solid, #ccc);
}
?3.命名參數(shù)
在向混合傳實(shí)參時(shí)指定形參,實(shí)現(xiàn)不按順序傳入
/*
less
*/
.border(@width, @style, @color: #ccc) {
border: @width @style @color;
}
div {
.border(@style: solid, @width: 100px);
}
4.匹配模式
- 相當(dāng)于對函數(shù)的重寫,根據(jù)參數(shù)匹配對應(yīng)的混合
- 匹配模式并不是只會找最適合的一項(xiàng)進(jìn)行匹配,所有合適的項(xiàng)都會匹配并生成效果
/*
編譯前的less
*/
.mixin(dark, @color) {
color: darken(@color, 10%);
}
.mixin(light, @color) {
color: lighten(@color, 10%);
}
// @_ 表示匹配所有
.mixin(@_, @color) {
display: block;
}
@switch: light;
.class {
.mixin(@switch, #888);
}
/*
編譯后的css
*/
.class {
color: #a2a2a2;
display: block;
}
5.@arguments 變量
@arguments
?變量包含了傳入的所有參數(shù)
/*
編譯前的less
*/
.border_arg(@w:30px,@c:red,@xx:solid){
border:@arguments;
}
.test_arguments{
.border_arg();
}
/*
編譯后的css
*/
.test_arguments{
border:30px red solid;
}
-
?運(yùn)算
計(jì)算結(jié)果以操作數(shù)最左側(cè)的單位類型為準(zhǔn)
/*
less
*/
@conversion-1: 5cm + 10mm; // 6cm
@conversion-2: 2 - 3cm - 5mm; // -1.5cm
@conversion-3: 3.1 * 2cm; // 6.2cm
@conversion-4: 4px / 2; // 4px / 2
// conversion is impossible
@incompatible-units: 1cm - 1px; // 0.97354167cm
// example with variables
@base: 5%;
@filler: @base * 2; // 10%
@other: @base + @filler; // 15%
@color: #224488 / 2; // #112244
background-color: #112244 + #111; // #223355
-
繼承
- 繼承可讓多個(gè)選擇器應(yīng)用同一組屬性,最終編譯為并集選擇器
- 其性能比混合高,但靈活性比混合低
/*
編譯前的less
*/
nav ul {
&:extend(.inline);
background: blue;
}
.inline {
color: red;
}
/*
編譯后的css
*/
nav ul {
background: blue;
}
.inline,
nav ul {
color: red;
}
加all繼承所有的狀態(tài)。
/*
編譯前的less
*/
.test {
color: orange;
}
.test {
&:hover {
color: green;
}
}
.replacement:extend(.test all) {
background-color:yellow;
}
/*
編譯后的css
*/
.test,
.replacement {
color: orange;
}
.test:hover,
.replacement:hover {
color: green;
}
.replacement {
background-color:yellow;
}
-
避免編譯
通過加引號可以避免 Less 編譯,直接把內(nèi)容輸出到 CSS 中
/*
編譯前的less
*/
.banner .inline .header {
width: '100px + 100px';
height: 100px + 100px;
}
/*
編譯后的css
*/
.banner .inline .header {
width: '100px + 100px';
height: 200px;
}
原文鏈接:https://blog.csdn.net/niuroufen5/article/details/126304942
相關(guān)推薦
- 2022-05-09 分享Pytorch獲取中間層輸出的3種方法_python
- 2022-01-29 composer 安裝包提示內(nèi)存不足的解決辦法
- 2022-09-20 Redis?SCAN命令詳解_Redis
- 2022-11-07 python中if的基礎(chǔ)用法(if?else和if?not)_python
- 2022-08-02 c#中task與thread的區(qū)別及使用講解_C#教程
- 2022-05-20 Tomcat下載安裝配置詳細(xì)過程
- 2022-02-22 SWT線程訪問無效:org.eclipse.swt.SWTException: Invalid th
- 2022-05-06 如何利用Python處理excel表格中的數(shù)據(jù)_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支