一些一蹴而就的Less总计,LessCss学习笔记
分类:前端技术

在 css 中怎么做的申明?

2018/02/28 · CSS · 注释

最先的小说出处: Keith J. Grant   译文出处:[众成翻译

  • KING]()   

图片 1
Robert C. Martin写的《Clean Code》是自己读过的最棒的编制程序书籍之风流倜傥,若未有读过,推荐你将它参加书单。

注解就意味着代码不大概自表达 —— 罗Bert C. 马丁

马丁在文中详尽座谈了代码注释,作者不会完全重复他的话。简单的说,他的意趣正是,那一个注释是决定会过时的。程序试行时会忽略注释,所以无法作保这个验证注释会规范的叙述代码功效。所以最好的办法是让代码自说明,如此,依据代码逻辑,程序猿和顺序取获得的新闻是大同小异的。

合计如下代码:

// Check to see if the employee is eligible for full benefits // 检查工作者是不是有身份获得全部方便人民群众 if ((employee.flags & HOULANDLY_FLAG) && (employee.age > 65)) { … }

1
2
3
4
5
// Check to see if the employee is eligible for full benefits
// 检查员工是否有资格获取全部福利
if ((employee.flags & HOURLY_FLAG) && (employee.age > 65)) {
  …
}

证明有用么?当然有用,但上面包车型客车诀窍也许越来越好:

if (employee.isEligibleForFullBenefits()) { … }

1
2
3
if (employee.isEligibleForFullBenefits()) {
  …
}

代码供给“言行业作风度翩翩致”,注释是能力所能达到被取名优异的函数或变量代替的。马丁的乐趣并不是说毫不使用注释,而是应当尽量制止写注释,注释就表示代码不能够自表明。

一、入门

1. less嵌套

本条相当的少说,大家比较常用

sass语法

有关sass 3.3.0更新表明——3.3.0

sublime相关插件为:scss语法高亮,sass语法高亮,编译,保留即编写翻译,格式化

那么对CSS而言呢?

自己非常同情马丁关于注释的观念。当提到到评释式的言语如CSS时,就意识了一些有意思之处。表明式语言式必得符合照拂格式的,而CSS选拔器基本是由HTML结构决定的。对这种代码结构,大家能做的相当少,这是不是意味CSS代码必需注释满天飞?

额,大概吧。有成都百货上千的说辞使用注释,且注释的写法也会有为数不少。让大家来看一些注脚,构思这几个注释是或不是应该加上。先从答案明显的最早吧,然后一步步深深到不那么好决断的。

不佳:节外生枝的证明


其余语言,多此一举的批注都以多余的,如下的身体力行出自Bootstrap3的中期版本:

// Addresses address {…}

1
2
// Addresses
address {…}

明明,address是有关地点的选择器

// Unordered and Ordered lists ul, ol {…}

1
2
3
// Unordered and Ordered lists
ul,
ol {…}

还有?

// Blockquotes blockquote {…}

1
2
// Blockquotes
blockquote {…}

赶紧停!

纯属不要写这种注释,赶紧删掉这么些剩余的事物,它仅仅是在重新代码而已。当然,新本子的Bootstrap已经去除掉大部分画蛇著足的失效注释了。

1、LESSCSS是什么?

LESSCSS是生龙活虎种动态样式语言,归于CSS预管理语言的黄金时代种,它采取相符CSS的语法,为CSS的予以了动态语言的风味,如变量、继承、运算、函数等,更利于CSS的编排和维护。

LESSCSS能够在多样语言、境况中利用,富含浏览器端(协助IE6 , Webkit, Firefox卡塔尔国、桌面客户端、服务端。

例如:

@color:#4D926F;
p{
  color: @color;
}

编译成:

p{
  color: #4D926F;
}
2. 变量
@white:#fff;

文本后缀名

sass有二种后缀名文件:大器晚成种后缀名叫sass,不应用大括号和支行;另风华正茂种正是我们这里运用的scss文件,这种和大家平昔写的css文件格式 大概,使用大括号和分集团。而本学科中所说的兼具sass文件都指后缀名字为scss的公文。在这里也提出使用后缀名叫scss的文书,以制止sass后缀名 的严酷格式必要报错。

//文件后缀名为sass的语法
body
  background: #eee
  font-size:12px
p
  background: #0982c1

//文件后缀名为scss的语法  
body {
  background: #eee;
  font-size:12px;
}
p{
  background: #0982c1;
} 

不好: 块分隔注释

对CSS来讲,块分隔注释是可怜例外的,如下:

/* ----------------- * TOOLTIPS * ----------------- */

1
2
3
/* -----------------
* TOOLTIPS
* ----------------- */

这种注释能把自家逼疯。笔者能体会精晓为啥会写下这种注释:有的时候候大家的CSS会写得可怜长,当在超越千行的公文内搜索时,就须求这种带特殊标记的解说来扶持快捷搜索。

但骨子里,非常短十分长的CSS文件已经不复流行了。若您的品类实在须求这种不小的CSS文件,它应该是由三个小的有个别,通过CSS预管理工科具组合而成的。

2、使用LESSCSS

3. 导入

@import 路线 //相比较常用

@import './style.less';

1、@import (reference)
用以导入外界文件,但不会将导入的体裁增添到编写翻译的CSS文件中。 那是在本子1.5.0 中公布的。

@import (reference)   './style.less';

2、@import (inline)
@import(inline)会将CSS复制到输出CSS文件中,而不开展管理。 当CSS文件不是LESS包容时,这是有效的。 纵然LESS援助大许多专门的学问CSS,但在有些地方不帮忙注释,並且不改进CSS,它不会支持具有已知的CSS红客。 固然 @import(inline)不会管理CSS,它将保障全数的CSS将要三个文本中。

3、@import (less)
@import(less)会将文件导入为LESS文件,而无论是文件扩展名是什么。

@import (less) "//demosource/less.txt";
.para_1 {
    color: red;
    .style;
}
.para_2 {
    color: blue;
}

demosource/less.txt
.style {
  font-family: "Comic Sans MS";
  font-size: 20px;
}

.style {
  font-family: "Comic Sans MS";
  font-size: 20px;
}
.para_1 {
  color: red;
  font-family: "Comic Sans MS";
  font-size: 20px;
}
.para_2 {
  color: blue;
}

4、@import(css)会将文件导入为常规CSS,而任由文件扩充名。 那是在本子1.4.0 中揭露的。与(3卡塔 尔(阿拉伯语:قطر‎近似意义

5、@import(once)
@import(once)确认保障文件只导入叁遍,况兼对该公文将忽视任何以下import语句。 那是 @import statments的默许行为。

6、 @import(multiple)
您能够导入具有同等名称的四个公文。 这与叁回完全相反。

7、@import (optional)
可选允许你在文件不设不经常冬升先生入文本。则文件不设有也不会报错。

同意在 @import 语句中央银行使五个举足轻重字,但必得运用逗号分隔关键字。@import (less, optional) "custom.css";

导入

sass的导入(@import)法则和CSS的悬殊,编译时会将@import的scss文件合并进来只生成三个CSS文件。不过假诺您在sass文件中程导弹入css文件如@import 'reset.css',那效果跟常常CSS导入样式文件风度翩翩律,导入的css文件不会合併到编写翻译后的公文中,而是以@import措施存在。

全数的sass导入文本都能够忽影后缀名.scss。日常的话根底的公文命名情势以_开头,如_mixin.scss。这种文件在导入的时候能够不写下划线,可写成@import "mixin"

被导入sass文件a.scss:

//a.scss
//-------------------------------
body {
  background: #eee;
}

须要导入样式的sass文件b.scss:

@import "reset.css";
@import "a";
p{
  background: #0982c1;
} 

转译出来的b.css样式:

@import "reset.css";
body {
  background: #eee;
}
p{
  background: #0982c1;
}

基于上边的代码能够看见,b.scss编写翻译后,reset.css继续保持import的议程,而a.scss则被整合进来了。

糟糕:解释语法

又要用Bootstrap例如了,以下代码出自 _tooltips.scss:

// Allow breaking very long words so they don't overflow the tooltip's bounds // 设置长单词换行 word-wrap: break-word;

1
2
3
// Allow breaking very long words so they don't overflow the tooltip's bounds
// 设置长单词换行
word-wrap: break-word;

这种措施和“为蛇画足的笺注”相通,注释解释word-wrap本性的法力。这里有后生可畏篇小说讲到这种注释为何无需的原因,申明应该表明“为何”,并非“是何等”,即表明原因此不是表明效果与利益(Why, not what卡塔 尔(阿拉伯语:قطر‎。

此地有多少个两样,由于CSS有那个属性,也可能有一些属性是你一丝一毫不清楚的,那么您用这种注释是符合规律的。

1卡塔尔顾客端应用

在浏览器中利用less.js是老大方便的,不过这种措施不建议用于分娩。在生育中,提出使用node.js也许第三方工具实行预编写翻译。

首先,链接.less文件,设置rel属性为"stylesheet/less":

<link rel="stylesheet/less" type="text/css" href="styles.less" />

接着,下载less.js,或者到官网下载最新的,包蕴在<script></script>标签中:

<script src="less.js" type="text/javascript"></script>

也足以采纳Less CDN:

<script src="//cdnjs.cloudflare.com/ajax/libs/less.js/2.5.3/less.min.js"></script>

在 <script src="less.js"></script> 早前设置全局的的less对象:

<!-- set options before less.js script -->
<script>
  less = {
    env: "development",
    async: false,
    fileAsync: false,
    poll: 1000,
    functions: {},
    dumpLineNumbers: "comments",
    relativeUrls: false,
    rootpath: ":/a.com/"
  };
</script>
<script src="less.js"></script>

意:确定保证在援引脚本此前援引样式文件。

点击以下链接下载上述代码:LESSCSS入门demo

4. less操作

LESS扶持部分算术运算,比方加号( ),减号( - ),乘法(*)和除法(/),它们得以对此外数字,颜色或变量举行操作。 操作节省了大批量的日子,当您利用变量,让以为就如轻便的数学专业。

@fontSize:10px;
.class{
  font-size:@fontSize*10;
}

注释

sass有三种注释方式,生龙活虎种是标准的css注释情势/* */,另后生可畏种则是//双斜杆格局的单行注释,可是这种单行注释不会被转译出来。

不好:对库实行介绍

日常来讲是Bootstrap tooltips.scss文件的另生龙活虎段注释:

// Our parent element can be arbitrary since tooltips are by default inserted as a // sibling of their target element. So reset our font and text properties to avoid // inheriting weird values. // 由于提醒框会被暗许插入到指标元素后充当叁个兄弟成分, // 所以须求重新设置提醒框的字体属性制止从父成分世襲样式影响。 <a href='; reset-text(); font-size: $font-size-sm;

1
2
3
4
5
6
7
// Our parent element can be arbitrary since tooltips are by default inserted as a
// sibling of their target element. So reset our font and text properties to avoid
// inheriting weird values.
// 由于提示框会被默认插入到目标元素后作为一个兄弟元素,
// 所以需要重置提示框的字体属性避免从父元素继承样式影响。
<a href='http://www.jobbole.com/members/include'>@include</a> reset-text();
font-size: $font-size-sm;

这条注释很有趣,看起来仿佛并不背离“表达原因此不是认证效果与利益?”准绳,它申明由于也许会被有个别预料之外的持续字体属性影响,所以用导入的点子来重新初始化字体属性。

但更为来看,明显在文件头导入重新初始化样式的唯生机勃勃的分解正是放心不下被一而再再而三样式影响。

由此,作者以为这种注释也是无需的,因为导入函数名字早已表明用处了,尽量让函数名吻协成效,如reset-inherited-font或周围的名字,不仅仅清晰表明了用途照旧印证了原因。这一个是一个函数调用,函数名已经丰盛解释了。优先用这种办法来验证用处能够代替一些评释。

CSS预微处理器让CSS更相仿古板一编写程语言。尽也许使用命名优异且有意义的变量和函数,那样能让代码更显然。

二、语法性格

5. less放松权利函数

js里面比非常多放置函数less都能够用,举举个例子何ceil,round等等。

函数地址: http://less.bootcss.com/functions/ 用的可比少,不做详细介绍。

e.g.:

@color: #FF8000;
@width:1.0;
.mycolor{
color: @color;
 width: percentage(@width);   //100%
}

标准的css注释

/*
*我是css的标准注释
*设置body内距
*/
body{
  padding:5px;
} 

倒霉: 过时的注释

.dropdown-header { … white-space: nowrap; // as with > li > a }

1
2
3
4
.dropdown-header {
  …
  white-space: nowrap; // as with > li > a
}

“as with > li > a”是何许意思?作者先是影响正是恐怕在文书中还只怕有壹个> li > a的选拔器,而那行代码就是指那些采用器。大概文件中有后生可畏段注释会特地解释为什么如此写,但自己将文件重头到尾都看了风度翩翩派,开采并不曾那些接纳器。文件唯有三个.dropdown-item慎选器下有三个nowrap质量,只怕是就是指那几个?恐怕或者这段注释是指某行已经被删除的代码或引进其余文件中的代码?若想要彻底弄明白这一个注释的意义,唯风度翩翩的方法就是翻遍全部git记录了啊。

那是一个过时的讲授,也许它原先是卓有作用的,但却长日子不曾选拔,所以过时了。这大概正是怎么罗Bert马丁对注释的观念:若注释对应的代码更新了批注就没用了,以至更不佳,注释大概会将你引到错误的可行性。若开掘这么的笺注,必必要删掉。它完全没用,并且会浪费时间去思维到底有甚用?

1、变量(Variables)

变量允许大家单独定义风流罗曼蒂克雨后冬笋通用的体裁,然后在须求的时候去调用。所以在做全局样式调治的时候大家或者只须求校勘几行代码就能够了。

例如:

@nice-blue: #5B83AD;
@light-blue: @nice-blue   #111;

#header {
  color: @light-blue;
}

输出:

#header {
  color: #6c94be;
}

留意:这里的变量实际上是常量。

变量也得以用来接收器名称、属性名、U哈弗L和 @import 注脚。

6. 恢宏(很有用却超少被用卡塔尔

Extend是一个LESS伪类,它通过运用:extend 选用器在一个采用器中扩充别的选取器样式。

h2 {
  &:extend(.style);
  font-style: italic;
}
.style {
  background: green;
}

编译之后

h2 {
  font-style: italic;
}
.style,
h2 {
  background: green;
}

双斜杆单行注释

单行注释跟JavaScript语言中的注释相仿,使用又斜杠(//卡塔 尔(英语:State of Qatar),但单行注释不会输入到CSS中。

//我是双斜杠表示的单行注释
//设置body内距
body{
  padding:5px; //5px
} 

神跡有用的:有非常含义的批注

正如是风流倜傥段带注释的代码:

.dropdown-item { display: block; width: 100%; // For `

1
2
3
.dropdown-item {
  display: block;
  width: 100%; // For `

如此那般的笺注就是行得通的,它们能告诉大家,那么些特定的属性是为掩没``样式而写的。那样的注释正是立见成效的,因为偶尔代码的意向不是那么分明的。

但那时也亟需问多少个难点:有哪些点子能让代码自表明呢?须要能够思考将那么些特定的性质移到第叁个选拔器中,特地为这几个按键设置的选拔器。

.dropdown-item { display: block; padding: $dropdown-item-padding-y $dropdown-item-padding-x; clear: both; font-weight: $font-weight-normal; color: $dropdown-link-color; white-space: nowrap; } button.dropdown-item { width: 100%; text-align: inherit; background: none; border: 0; }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.dropdown-item {
  display: block;
  padding: $dropdown-item-padding-y $dropdown-item-padding-x;
  clear: both;
  font-weight: $font-weight-normal;
  color: $dropdown-link-color;
  white-space: nowrap;
}
 
button.dropdown-item {
  width: 100%;
  text-align: inherit;
  background: none;
  border: 0;
}

如此那般就丰富明晰且易于了解,但副效能正是:特意扩大了多个至极的选择器。

而相反,我觉着这种办法要命有助于使用mixin混入方式。重构为叁个函数,该函数能在另内地点定义,而且让代码更清晰。考虑如下代码:

.dropdown-item { <a href='; remove-button-styles; display: block; width: 100%; padding: $dropdown-item-padding-y $dropdown-item-padding-x; clear: both; font-weight: $font-weight-normal; color: $dropdown-link-color; white-space: nowrap; }

1
2
3
4
5
6
7
8
9
10
11
.dropdown-item {
  <a href='http://www.jobbole.com/members/include'>@include</a> remove-button-styles;
 
  display: block;
  width: 100%;
  padding: $dropdown-item-padding-y $dropdown-item-padding-x;
  clear: both;
  font-weight: $font-weight-normal;
  color: $dropdown-link-color;
  white-space: nowrap;
}

这段代码没有用此外注释,但其功效很显著,因为它采用的公用函数在任何模块也能用到。作者将width:100%保存下来并非移到函数中,因为若将函数混和代码时,width:100%兴许会挑起局地任何标题。

在自己起来察觉“代码异味(Code Smell卡塔尔”之前,一开始.dropdown-item代码有十行,笔者可怜喜欢用mixin,mixin是三个能急剧收缩代码行数的好东西,它能让我们非常的慢的明白代码的大致用处。

即使应用函数重构代码实际不是都这样有效,但尽量多用。

1卡塔 尔(英语:State of Qatar)选拔器名称

例如:

// Variables
@my-selector: banner;

// Usage
.@{my-selector} {
  font-weight: bold;
  line-height: 40px;
  margin: 0 auto;
} 

输出:

.banner {
  font-weight: bold;
  line-height: 40px;
  margin: 0 auto;
}
7. 混合(Mixins,很有用)

混合相似于编制程序语言中的函数。 Mixins是大器晚成组CSS属性,允许你将三个类的性质用于另三个类,何况带有类名作为其质量。 在LESS中,能够使用类或id接纳器以与CSS样式雷同的办法宣示mixin。 它能够累积多个值,何况能够在需求时在代码中重复使用。 1,2,5情况比较常用详实表达

图片 2

less mixin的使用

1、 不输出mixin

.a(){
  padding-left: 100px;
}
.myclass{
  background : #64d9c0;
  .a;
}

.myclass {
  background: #64d9c0;
  padding-left: 100px;
}
//可以看到没有a输出

2、 输出mixin

.a{
  padding-left: 100px;
}
.myclass{
  background : #64d9c0;
  .a; //.a()  //一样的效果
}

.a{
  padding-left: 100px;
}
.myclass {
  background: #64d9c0;
  padding-left: 100px;
}
//可以看到有a输出

3、Mixins中的选拔器

.mixin() {
  &:hover {
    background: #FFC0CB;
  }
}
a {
  .mixin();
}

a:hover {
  background: #FFC0CB;
}

4、 !important

.mixin(){  
  color: #900;
  background: #F7BE81;
}
.para1{
  .mixin();
}
.para2{
  .mixin() !important;
}

.para1 {
  color: #900;
  background: #F7BE81;
}
.para2 {
  color: #900 !important;
  background: #F7BE81 !important;
}

变量

sass的变量必需是$开端,前边紧跟变量名,而变量值和变量名之间就须求动用冒号(:)分隔断(就如CSS属性设置同大器晚成卡塔尔,若是值前边加上!default则表示默认值。

好:注脚难懂的补丁性的代码

本身对注释亦非总那么苛刻的,譬喻我就很难找到下边包车型客车注脚的标题,若你曾看过normalize.css的源码,你肯定会专心到它满满的注释,必须要说,真是“极好的”注释。

赏析朝气蓬勃番:

/** * 1. Add the correct box sizing in Firefox. * FF下平日的盒子模型 * 2. Show the overflow in Edge and IE. * 在Edge和IE下overflow为visble */ hr { box-sizing: content-box; /* 1 */ height: 0; /* 1 */ overflow: visible; /* 2 */ }

1
2
3
4
5
6
7
8
9
10
11
/**
* 1. Add the correct box sizing in Firefox.
* FF下正常的盒子模型
* 2. Show the overflow in Edge and IE.
* 在Edge和IE下overflow为visble
*/
hr {
  box-sizing: content-box; /* 1 */
  height: 0; /* 1 */
  overflow: visible; /* 2 */
}

若未有那些注释,你恒久不知晓怎么如此写。修复特定浏览器bug的代码往往是生硬难懂的,日常会被充作无用代码删掉。

鉴于Normalize库的靶子是提供叁个完全后生可畏致样式情形,所以需求广大这么的笺注。接收器都以项目和总体性接收器,未有任何class名,同不时间由于不是可命名的class名,所以自文书档案特别不便。

日常来讲为另黄金年代段Bootstrap的疏解:

/* Chrome (OSX) fix for */ select { background: #fff !important; }

1
2
3
4
/* Chrome (OSX) fix for https://github.com/twbs/bootstrap/issues/11245 */
select {
  background: #fff !important;
}

一个Github链接,极度常有效。尽管不张开连接也能明了当时是一个bug,并且有异常的大可能率是三个特别难定位的bug。若有需求,能够透过链接获取越来越多消息。最佳的是,因为从没大段大段的文件去解释bug,所以它并不会打乱代码逻辑,同期也告知大家何地能够得到更加多音讯。若使用途目与事务追踪工具如JIRA,那么能够一直在讲授中与号码关联起来。

本来,不是种种打补丁的代码都要如此注释,但若bug不是那么轻巧觉察,而且与浏览器怪癖有关,那么如故这么注释吧。

2)属性名

例如:

@property: color;

.widget {
  @{property}: #0ee;
  background-@{property}: #999;
} 

输出:

.widget {
  color: #0ee;
  background-color: #999;
} 
8. 错落参数

1、参数可以利用逗号或分行分隔

.mixin(@color) {
  color: @color;
}
.mixin(@color; @padding: 2px) {
  color: @color;
  padding: @padding;
}

.myclass {
  color: #FE9A2E;
  padding: 2px;
}

. myheader{
  border:2px dashed green;
}

2、命名参数
透过动用它们的称呼提供参数值实际不是岗位。

.mixin(@color: black; @fontSize: 10px) {
  color: @color;
  font-size: @fontSize;
}
.class1 {
  .mixin(@fontSize: 20px; @color: #F5A9D0);
}
.class2 {
  .mixin(#F79F81; @fontSize: 20px);
}

.class1 {
  color: #F5A9D0;
  font-size: 20px;
}
.class2 {
  color: #F79F81;
  font-size: 20px;
}

平日变量

概念之后方可在大局范围内采用。

//sass style
//-------------------------------
$fontSize: 12px;
body{
    font-size:$fontSize;
}

//css style
//-------------------------------
body{
    font-size:12px;
}

好:指令式注释

有个别工具如KSS , 会在CSS文件中开创一些样式标准。如下:

/* Alerts An alert box requires a contextual class to specify its importance. 一个警戒音讯框需求与语境有关的的类来钦定其关键 马克up:

1
2
3
4
5
6
/*
Alerts
An alert box requires a contextual class to specify its importance.
一个警告信息框需要与语境有关的的类来指定其重要性
 
Markup:

Take note of this important alert message.

alert-success - Something good or successful 好的或成功的 alert-info - Something worth noting, but not super important 不那么首要的 alert-warning - Something to note, may require attention 须求被唤醒并记下,须求引起注意的 alert-danger - Something important. Usually signifies an error. 特别首要的,常用于错误 Styleguide Alerts */

1
2
3
4
5
6
7
alert-success   - Something good or successful 好的或成功的
alert-info      - Something worth noting, but not super important 不那么重要的
alert-warning   - Something to note, may require attention 需要被提示并记录,需要引起注意的
alert-danger    - Something important. Usually signifies an error. 非常重要的,常用于错误
 
Styleguide Alerts
*/

那不光是注释,那是正式,它能被KSS深入解析并用于生成HTML。那意气风发度算是项目文书档案的一片段了,而且只好说,那比手动创制多少个分别的HTML文件要好过多,因为其在同多少个文书内且始终与代码相匹配。

别的生龙活虎种指令式注释为准许消息,当使用第三方库并在讲解中注脚许可消息时,日常都急需满含。

而作者贴出罗Bert 马丁关于注释的话时 Robert Martin 的话 ,仿佛应该解释一下,但还没那么做。因为自己感觉那是一句轻易通晓的话,若你还在代码中随地写注释,那么请先思虑是还是不是创立。

1 赞 收藏 评论

图片 3

3)变量名

例如:

@fnord:  "I am fnord.";
@var:    "fnord";
content: @@var;

输出:

content: "I am fnord.";
9. 循环(很有用)
  .mloop(@n,@i:5) when (@i <= @n) {

    .mt@{i}{
      margin-top: @i * 1px;
    }
    .mr@{i}{
      margin-right: @i * 1px;
    }
    .mb@{i}{
      margin-bottom: @i * 1px;
    }
    .pb@{i}{
      padding-bottom: @i * 1px;
    }
    .pl@{i}{
      padding-left: @i * 1px;
    }
    .mloop(@n,(@i   5));//递归调用
  };

  .mloop(80); //执行  以5为梯度 执行到80

默许变量

sass的暗中认可变量仅需求在值前边加上!default即可。

//sass style
//-------------------------------
$baseLineHeight:        1.5 !default;
body{
    line-height: $baseLineHeight; 
}

//css style
//-------------------------------
body{
    line-height:1.5;
}

sass的暗许变量日常是用来设置暗许值,然后依据供给来隐讳的,覆盖的艺术也很粗大略,只需求在私下认可变量以前再一次表明下变量就可以

//sass style
//-------------------------------
$baseLineHeight:        2;
$baseLineHeight:        1.5 !default;
body{
    line-height: $baseLineHeight; 
}

//css style
//-------------------------------
body{
    line-height:2;
}

能够看来以往编写翻译后的line-height为2,并非我们暗中同意的1.5。默许变量的价值在举行组件化开采的时候会要命有效。

4)URL

例如:

// Variables
@images: "../img";

// Usage
body {
  color: #444;
  background: url("@{images}/white-sand.png");
} 
10. 父选取器

本条比较常用 &

a {
  color: #5882FA;
  &:hover {
    background-color: #A9F5F2;
  }
}

a {
  color: #5882FA;
}
a:hover {
  background-color: red;
}

古怪变量

诚如大家定义的变量都为属性值,可一贯接受,可是假诺变量作为品质或在一些特殊情况下等则应当要以#{$variables}情势利用。

//sass style
//-------------------------------
$borderDirection:       top !default; 
$baseFontSize:          12px !default;
$baseLineHeight:        1.5 !default;

//应用于class和属性
.border-#{$borderDirection}{
  border-#{$borderDirection}:1px solid #ccc;
}
//应用于复杂的属性值
body{
    font:#{$baseFontSize}/#{$baseLineHeight};
}

//css style
//-------------------------------
.border-top{
  border-top:1px solid #ccc;
}
body {
  font: 12px/1.5;
}

5卡塔 尔(阿拉伯语:قطر‎导入注解

例如:

// Variables
@themes: "../../src/themes";

// Usage
@import "@{themes}/tidal-wave.less"; 

变量是懒加载的,不是必需在应用前表明,能够在利用后声称。例如:

.lazy-eval {
  width: @var;
}

@var: @a;
@a: 9%;

多值变量

多值变量分为list类型和map类型,简来讲之list类型有一点点像js中的数组,而map类型有一点像js中的对象。

2、混合(Mixins)

混合能够将二个定义好的class A轻松的引入到另叁个class B中,进而轻便完成class B世襲class A中的全体属性。大家还是能够带参数地调用,就疑似使用函数同样。

例如:

.bordered {
  border-top: dotted 1px black;
  border-bottom: solid 2px black;
}
#menu a {
  color: #111;
  .bordered;
}
.post a {
  color: red;
  .bordered;
}  

输出:

.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;
}

list

list数据可由此空格,逗号或小括号分隔三个值,可用nth($var,$index)取值。关于list数据操作还应该有非常多任何函数如length($list)join($list1,$list2,[$separator])append($list,$value,[$separator])等,具体可参谋sass Functions(搜索List Functions即可)

定义

//一维数据
$px: 5px 10px 20px 30px;

//二维数据,相当于js中的二维数组
$px: 5px 10px, 20px 30px;
$px: (5px 10px) (20px 30px);

使用

//sass style
//-------------------------------
$linkColor:         #08c #333 !default;//第一个值为默认值,第二个鼠标滑过值
a{
  color:nth($linkColor,1);

  &:hover{
    color:nth($linkColor,2);
  }
}

//css style
//-------------------------------
a{
  color:#08c;
}
a:hover{
  color:#333;
}

1)不输出mixin

能够在mixin前边增添"()"括号,让其不出口。

例如:

.my-mixin {
  color: black;
}
.my-other-mixin() {
  background: white;
}
.class {
  .my-mixin;
  .my-other-mixin;
}

输出:

.my-mixin {
  color: black;
}
.class {
  color: black;
  background: white;
}

map

map数据以key和value成对出现,在这之中value又能够是list。格式为:$map: (key1: value1, key2: value2, key3: value3);。可通过map-get($map,$key)取值。关于map数据还会有非常多别的函数如map-merge($map1,$map2)map-keys($map)map-values($map)等,具体可参看sass Functions(搜索Map Functions即可)

定义

$heading: (h1: 2em, h2: 1.5em, h3: 1.2em);

使用

//sass style
//-------------------------------
$headings: (h1: 2em, h2: 1.5em, h3: 1.2em);
@each $header, $size in $headings {
  #{$header} {
    font-size: $size;
  }
}

//css style
//-------------------------------
h1 {
  font-size: 2em; 
}
h2 {
  font-size: 1.5em; 
}
h3 {
  font-size: 1.2em; 
}

2) !important 关键字

在mixin前面使用 !important 关键字,那么继续的兼具属性都会增加 !important 。

例如:

.foo (@bg: #f5f5f5, @color: #900) {
  background: @bg;
  color: @color;
}
.unimportant {
  .foo();
}
.important {
  .foo() !important;
}

输出:

.unimportant {
  background: #f5f5f5;
  color: #900;
}
.important {
  background: #f5f5f5 !important;
  color: #900 !important;
} 

全局变量

在变量值后边加上!global即为全局变量。这几个近年来还用不上,然则将会在sass 3.4后的版本中标准使用。近来的sass变量范围受到诟病,所以才有了那个全局变量。

一时变量机制

在选取器中声称的变量会覆盖外面全局评释的变量。(这也就大家常说的sass未有局地变量)

//sass style
//-------------------------------
$fontSize:      12px;
body{
    $fontSize: 14px;        
    font-size:$fontSize;
}
p{
    font-size:$fontSize;
}

//css style
//-------------------------------
body{
    font-size:14px;
}
p{
    font-size:14px;
}

启用global之后的编写制定

请留意,那个最近还无法利用,所以样式不是真正深入分析出来的。

//sass style
//-------------------------------
$fontSize:      12px;
$color:         #333;
body{
    $fontSize: 14px;        
    $color:   #fff !global;
    font-size:$fontSize;
    color:$color;
}
p{
    font-size:$fontSize;
    color:$color;
}

//css style
//-------------------------------
body{
    font-size:14px;
    color:#fff;
}
p{
    font-size:12px;
    color:#fff;
}

此地设置了多少个变量,然后在body里面重新安装了下,有一点点不相同的是对此$color变量,大家设置了!global。通过编译后的css能够见到font-size取值不一致,而color取值相像。与地点的体制相比就能发觉暗许在选取器里面包车型地铁变量为局地变量,而唯有设置了!global从此才会形成全局变量。

关于变量的详细分析请查阅sass揭秘之变量

3卡塔 尔(英语:State of Qatar)能够传递参数的Mixins

例如:

.border-radius(@radius) {
  -webkit-border-radius: @radius;
  -moz-border-radius: @radius;
  border-radius: @radius;
}
#header {
  .border-radius(4px);
}
.button {
  .border-radius(6px);
} 

输出:

#header {
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  border-radius: 4px;
}
.button {
  -webkit-border-radius: 6px;
  -moz-border-radius: 6px;
  border-radius: 6px;
}

也得以设置参数私下认可值。比如:

.border-radius(@radius: 5px) {
  -webkit-border-radius: @radius;
     -moz-border-radius: @radius;
          border-radius: @radius;
}
#header {
  .border-radius;
}

输出:

header {
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
  border-radius: 5px;
} 

嵌套(Nesting)

sass的嵌套包罗二种:后生可畏种是选拔器的嵌套;另后生可畏种是性质的嵌套。大家通常聊起或用到的都是接收器的嵌套。

3、嵌套(Nested Rules)

能够在八个接纳器中嵌套另一个增选器来达成延续。

例如:

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

能够写成:

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

例如:

.clearfix {
  display: block;
  zoom: 1;

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

当中,&当前选用器的父成分。

选取器嵌套

所谓采纳器嵌套指的是在四个选取器中嵌套另三个筛选器来完毕接二连三,进而巩固了sass文件的结构性和可读性。

在选拔器嵌套中,能够运用&意味着父成分采纳器

//sass style
//-------------------------------
#top_nav{
  line-height: 40px;
  text-transform: capitalize;
  background-color:#333;
  li{
    float:left;
  }
  a{
    display: block;
    padding: 0 10px;
    color: #fff;

    &:hover{
      color:#ddd;
    }
  }
}

//css style
//-------------------------------
#top_nav{
  line-height: 40px;
  text-transform: capitalize;
  background-color:#333;
}  
#top_nav li{
  float:left;
}
#top_nav a{
  display: block;
  padding: 0 10px;
  color: #fff;
}
#top_nav a:hover{
  color:#ddd;
}

4、运算符(Operations)

运算提供了加,减,乘,除操作;我们能够做属性值和颜料的运算,那样就足以兑现属性值之间的繁缛关系。

例如:

// numbers are converted into the same units
@conversion-1: 5cm   10mm; // result is 6cm
@conversion-2: 2 - 3cm - 5mm; // result is 1.5cm

// conversion is impossible
@incompatible-units: 2   5px - 3cm; // result is 4px

// example with variables
@base: 5%;
@filler: @base * 2; // result is 10%
@other: @base   @filler; // result is 15%

@color: #224488 / 2; //results in #112244 
background-color: #112244   #111; // result is #223355

天性嵌套

所谓属性嵌套指的是某个属性具备同三个初步单词,如border-width,border-color都是以border开首。拿个官方网站的实例看下:

//sass style
//-------------------------------
.fakeshadow {
  border: {
    style: solid;
    left: {
      width: 4px;
      color: #888;
    }
    right: {
      width: 2px;
      color: #ccc;
    }
  }
}

//css style
//-------------------------------
.fakeshadow {
  border-style: solid;
  border-left-width: 4px;
  border-left-color: #888;
  border-right-width: 2px;
  border-right-color: #ccc; 
}

自然那只是特特性嵌套的事例,要是实在这里样使用,那估量得疯掉。

5、转码(Escaping)

转码允许你利用大肆的字符串作为质量或变量值。格式: ~"anything" 或 ~'anything' 。``

例如:

.weird-element {
  content: ~"^//* some horrible but needed css hack";
}

输出:

.weird-element {
  content: ^//* some horrible but needed css hack;
}

@at-root

sass3.3.0中新扩展的作用,用来跳出选取器嵌套的。私下认可全部的嵌套,继承全部上级接受器,但有了那些就可以跳出全体上级选用器。

管见所及跳出嵌套

//sass style
//-------------------------------
//没有跳出
.parent-1 {
  color:#f00;
  .child {
    width:100px;
  }
}

//单个选择器跳出
.parent-2 {
  color:#f00;
  @at-root .child {
    width:200px;
  }
}

//多个选择器跳出
.parent-3 {
  background:#f00;
  @at-root {
    .child1 {
      width:300px;
    }
    .child2 {
      width:400px;
    }
  }
}

//css style
//-------------------------------
.parent-1 {
  color: #f00;
}
.parent-1 .child {
  width: 100px;
}

.parent-2 {
  color: #f00;
}
.child {
  width: 200px;
}

.parent-3 {
  background: #f00;
}
.child1 {
  width: 300px;
}
.child2 {
  width: 400px;
}

@at-root (without: ...)@at-root (with: ...)

默认@at-root只会跳出选择器嵌套,而无法跳出@media@support,假使要跳出这两种,则需使用@at-root (without: media)@at-root (without: support)。这几个语法的主要性词有八个:all(表示具备卡塔 尔(英语:State of Qatar),rule(表示常规css卡塔 尔(阿拉伯语:قطر‎,media(表示media),support(表示support,因为@support脚下还十分小概普遍采取,所以在那不表卡塔尔国。大家暗中认可的@at-root实际上就是@at-root (without:rule)

//sass style
//-------------------------------
//跳出父级元素嵌套
@media print {
    .parent1{
      color:#f00;
      @at-root .child1 {
        width:200px;
      }
    }
}

//跳出media嵌套,父级有效
@media print {
  .parent2{
    color:#f00;

    @at-root (without: media) {
      .child2 {
        width:200px;
      } 
    }
  }
}

//跳出media和父级
@media print {
  .parent3{
    color:#f00;

    @at-root (without: all) {
      .child3 {
        width:200px;
      } 
    }
  }
}

//sass style
//-------------------------------
@media print {
  .parent1 {
    color: #f00;
  }
  .child1 {
    width: 200px;
  }
}

@media print {
  .parent2 {
    color: #f00;
  }
}
.parent2 .child2 {
  width: 200px;
}

@media print {
  .parent3 {
    color: #f00;
  }
}
.child3 {
  width: 200px;
}

@at-root&格外使用

//sass style
//-------------------------------
.child{
    @at-root .parent &{
        color:#f00;
    }
}

//css style
//-------------------------------
.parent .child {
  color: #f00;
}

应用于@keyframe

//sass style
//-------------------------------
.demo {
    ...
    animation: motion 3s infinite;

    @at-root {
        @keyframes motion {
          ...
        }
    }
}

//css style
//-------------------------------   
.demo {
    ...   
    animation: motion 3s infinite;
}
@keyframes motion {
    ...
}

6、函数(Functions)

Less提供了大气的函数用于转移颜色、处理字符串和数学生运动算。

例如:

@base: #f04615;
@width: 0.5;

.class {
  width: percentage(@width); // returns `50%`
  color: saturate(@base, 5%);
  background-color: spin(lighten(@base, 25%), 8);
}

输出:

.class {
  width: 50%;
  color: #f6430f;
  background-color: #f8b38d;
}

混合(mixin)

sass中使用@mixin声称混合,可以传递参数,参数名以$符号开头,多个参数以逗号分开,也得以给参数设置暗中认可值。注明的@mixin通过@include来调用。

无参数mixin

//sass style
//-------------------------------
@mixin center-block {
    margin-left:auto;
    margin-right:auto;
}
.demo{
    @include center-block;
}

//css style
//-------------------------------
.demo{
    margin-left:auto;
    margin-right:auto;
}

有参数mixin

//sass style
//-------------------------------   
@mixin opacity($opacity:50) {
  opacity: $opacity / 100;
  filter: alpha(opacity=$opacity);
}

//css style
//-------------------------------
.opacity{
  @include opacity; //参数使用默认值
}
.opacity-80{
  @include opacity(80); //传递参数
}

三个参数mixin

调用时可直接传入值,如@include流传参数的个数小于@mixin概念参数的个数,则依据顺序表示,后边不足的利用暗许值,如不足的尚未私下认可值则报错。除此而外还足以选择性的扩散参数,使用参数名与值同一时候传入。

//sass style
//-------------------------------   
@mixin horizontal-line($border:1px dashed #ccc, $padding:10px){
    border-bottom:$border;
    padding-top:$padding;
    padding-bottom:$padding;  
}
.imgtext-h li{
    @include horizontal-line(1px solid #ccc);
}
.imgtext-h--product li{
    @include horizontal-line($padding:15px);
}

//css style
//-------------------------------
.imgtext-h li {
    border-bottom: 1px solid #cccccc;
    padding-top: 10px;
    padding-bottom: 10px;
}
.imgtext-h--product li {
    border-bottom: 1px dashed #cccccc;
    padding-top: 15px;
    padding-bottom: 15px;
}

多组值参数mixin

假若多少个参数可以有多组值,如box-shadow、transition等,那么参数则需求在变量后加多少个点表示,如$variables...

//sass style
//-------------------------------   
//box-shadow可以有多组值,所以在变量参数后面添加...
@mixin box-shadow($shadow...) {
  -webkit-box-shadow:$shadow;
  box-shadow:$shadow;
}
.box{
  border:1px solid #ccc;
  @include box-shadow(0 2px 2px rgba(0,0,0,.3),0 3px 3px rgba(0,0,0,.3),0 4px 4px rgba(0,0,0,.3));
}

//css style
//-------------------------------
.box{
  border:1px solid #ccc;
  -webkit-box-shadow:0 2px 2px rgba(0,0,0,.3),0 3px 3px rgba(0,0,0,.3),0 4px 4px rgba(0,0,0,.3);
  box-shadow:0 2px 2px rgba(0,0,0,.3),0 3px 3px rgba(0,0,0,.3),0 4px 4px rgba(0,0,0,.3);
}

7、Namespaces adn Accessors

例如:

#bundle {
  .button {
    display: block;
    border: 1px solid black;
    background-color: grey;
    &:hover {
      background-color: white
    }
  }
}

#header a {
  color: orange;
  #bundle > .button;
}

输出:

#bundle .button {
  display: block;
  border: 1px solid black;
  background-color: grey;
}
#bundle .button:hover {
  background-color: white;
}
#header a {
  color: orange;
  display: block;
  border: 1px solid black;
  background-color: grey;
}
#header a:hover {
  background-color: white;
}

@content

@content在sass3.2.0中引进,能够用来缓和css3的@media等带给的难题。它能够使@mixin经受一整块体制,选用的体裁从@content伊始。

 //sass style
//-------------------------------                     
@mixin max-screen($res){
  @media only screen and ( max-width: $res )
  {
    @content;
  }
}

@include max-screen(480px) {
  body { color: red }
}

//css style
//-------------------------------
@media only screen and (max-width: 480px) {
  body { color: red }
}                     

PS:@mixin通过@include调用后深入分析出来的样式是以拷贝方式存在的,而下边包车型大巴存在延续则是以同盟注明的法子存在的,所以从3.2.0本子之后,提出传递参数的用@mixin,而非传递参数类的运用上面包车型客车持续%

8、作用域(Scope)

例如:

@var: red;

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

变量实际不是必得在使用前声称,举个例子:

@var: red;

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

继承

sass中,采用器世袭能够让选择器世襲另一个选用器的有着样式,并伙同证明。使用采用器的世襲,要动用首要词@extend,后边紧跟须要连续的选拔器。

//sass style
//-------------------------------
h1{
  border: 4px solid #ff9aa9;
}
.speaker{
  @extend h1;
  border-width: 2px;
}

//css style
//-------------------------------
h1,.speaker{
  border: 4px solid #ff9aa9;
}
.speaker{
  border-width: 2px;
}

9、注释(Comments)

和CSS同样,扶植单行"//"和多行注释"/**/"。

例如:

/* One hell of a block
style comment! */
@var: red;

// Get in line!
@var: white; 

占位选用器%

从sass 3.2.0未来就能够定义占位采用器%。这种接纳器的优势在于:假设不调用则不会有此外多余的css文件,制止了曾在有的功底的文本中预约义了不菲基本功的体裁,然后实际运用中不管是或不是使用了@extend去继续相应的体制,都会解析出来有所的体裁。占位选用器以%标记定义,通过@extend调用。

//sass style
//-------------------------------
%ir{
  color: transparent;
  text-shadow: none;
  background-color: transparent;
  border: 0;
}
%clearfix{
  @if $lte7 {
    *zoom: 1;
  }
  &:before,
  &:after {
    content: "";
    display: table;
    font: 0/0 a;
  }
  &:after {
    clear: both;
  }
}
#header{
  h1{
    @extend %ir;
    width:300px;
  }
}
.ir{
  @extend %ir;
}

//css style
//-------------------------------
#header h1,
.ir{
  color: transparent;
  text-shadow: none;
  background-color: transparent;
  border: 0;
}
#header h1{
  width:300px;
}

如上代码,定义了多少个占位选拔器%ir%clearfix,其中%clearfix其一从未调用,所以深入分析出来的css样式也就没有clearfix部分。占位选取器的产出,使css文件进一层简明可控,未有多余。所以能够用其定义一些底蕴的体裁文件,然后遵照必要调用发生相应的css。

ps:在@media中近来无法@extend @media外的代码片段,以往将会能够。

10、导入(Importing)

支撑导入 .css 文件,况兼也支撑导入 .less 文件(将导入个中定义的有所变量卡塔尔国。

例如:

@import "library"; // library.less
@import "typo.css"; 

函数

sass定义了累累函数可供使用,当然你也能够友善定义函数,以@fuction开首。sass的官方函数链接为:sass fuction,实际项目中大家选取最多的相应是颜色函数,而颜色函数中又以lighten减淡和darken加深为最,其调用方法为lighten($color,$amount)darken($color,$amount),它们的率先个参数都以颜色值,第贰个参数都是比例。

//sass style
//-------------------------------                     
$baseFontSize:      10px !default;
$gray:              #ccc !defualt;        

// pixels to rems 
@function pxToRem($px) {
  @return $px / $baseFontSize * 1rem;
}

body{
  font-size:$baseFontSize;
  color:lighten($gray,10%);
}
.test{
  font-size:pxToRem(16px);
  color:darken($gray,10%);
}

//css style
//-------------------------------
body{
  font-size:10px;
  color:#E6E6E6;
}
.test{
  font-size:1.6rem;
  color:#B3B3B3;
}

关于@mixin%@function越来越多表明可参考:

  • sass揭秘之@mixin,%,@function
  • Sass功底——颜色函数
  • Sass基础——Sass函数

11、扩展(Extend)

例1:

.animal {
  background-color: black;
  color: white;
}
.bear {
  &:extend(.animal);
  background-color: brown;
} 

输出:

.animal,
.bear {
  background-color: black;
  color: white;
}
.bear {
  background-color: brown;
} 

能够减掉CSS的长度,例2:

.my-inline-block {
  display: inline-block;
  font-size: 0;
}
.thing1 {
  &:extend(.my-inline-block);
}
.thing2 {
  &:extend(.my-inline-block);
}

输出:

.my-inline-block,
.thing1,
.thing2 {
  display: inline-block;
  font-size: 0;
}

运算

sass具备运算的表征,能够对数值型的Value(如:数字、颜色、变量等)举行加减乘除四则运算。请留神运算符前后请留多个空格,不然会出错。

$baseFontSize:          14px !default;
$baseLineHeight:        1.5 !default;
$baseGap:               $baseFontSize * $baseLineHeight !default;
$halfBaseGap:           $baseGap / 2  !default;
$samllFontSize:         $baseFontSize - 2px  !default;

//grid 
$_columns:                     12 !default;      // Total number of columns
$_column-width:                60px !default;   // Width of a single column
$_gutter:                      20px !default;     // Width of the gutter
$_gridsystem-width:            $_columns * ($_column-width   $_gutter); //grid system width

三、相关学习网址

LESS在线编辑器

合法德文学习网址

Bootstrap中文网提供的就学网址

LESSCSS中文官方网站

CSS预微处理机——Sass、LESS和Stylus施行

规格剖断及循环

@if判断

@if可三个原则单独接收,也能够和@else重新组合多规格使用

//sass style
//-------------------------------
$lte7: true;
$type: monster;
.ib{
    display:inline-block;
    @if $lte7 {
        *display:inline;
        *zoom:1;
    }
}
p {
  @if $type == ocean {
    color: blue;
  } @else if $type == matador {
    color: red;
  } @else if $type == monster {
    color: green;
  } @else {
    color: black;
  }
}

//css style
//-------------------------------
.ib{
    display:inline-block;
    *display:inline;
    *zoom:1;
}
p {
  color: green; 
}

三目判定

语法为:if($condition, $if_true, $if_false) 。八个参数分别表示:条件,条件为确实值,条件为假的值。

if(true, 1px, 2px) => 1px
if(false, 1px, 2px) => 2px

for循环

for循环有二种方式,分别为:@for $var from <start> through <end>@for $var from <start> to <end>。$i代表变量,start代表发轫值,end表示甘休值,那多个的区分是首要字through表示包蕴end那一个数,而to则不包蕴end那么些数。

//sass style
//-------------------------------
@for $i from 1 through 3 {
  .item-#{$i} { width: 2em * $i; }
}

//css style
//-------------------------------
.item-1 {
  width: 2em; 
}
.item-2 {
  width: 4em; 
}
.item-3 {
  width: 6em; 
}

@each循环

语法为:@each $var in <list or map>。其中$var代表变量,而list和map表示list类型数据和map类型数据。sass 3.3.0新步入了多字段循环和map数据循环。

单个字段list数据循环

//sass style
//-------------------------------
$animal-list: puma, sea-slug, egret, salamander;
@each $animal in $animal-list {
  .#{$animal}-icon {
    background-image: url('#{$animal}.png');
  }
}

//css style
//-------------------------------
.puma-icon {
  background-image: url('puma.png'); 
}
.sea-slug-icon {
  background-image: url('sea-slug.png'); 
}
.egret-icon {
  background-image: url('gret.png'); 
}
.salamander-icon {
  background-image: url('salamander.png'); 
}

多少个字段list数据循环

//sass style
//-------------------------------
$animal-data: (puma, black, default),(sea-slug, blue, pointer),(egret, white, move);
@each $animal, $color, $cursor in $animal-data {
  .#{$animal}-icon {
    background-image: url('#{$animal}.png');
    border: 2px solid $color;
    cursor: $cursor;
  }
}

//css style
//-------------------------------
.puma-icon {
  background-image: url('puma.png');
  border: 2px solid black;
  cursor: default; 
}
.sea-slug-icon {
  background-image: url('sea-slug.png');
  border: 2px solid blue;
  cursor: pointer; 
}
.egret-icon {
  background-image: url('gret.png');
  border: 2px solid white;
  cursor: move; 
}

几个字段map数据循环

//sass style
//-------------------------------
$headings: (h1: 2em, h2: 1.5em, h3: 1.2em);
@each $header, $size in $headings {
  #{$header} {
    font-size: $size;
  }
}

//css style
//-------------------------------
h1 {
  font-size: 2em; 
}
h2 {
  font-size: 1.5em; 
}
h3 {
  font-size: 1.2em; 
}

至于循环判定详细解析请查阅:sass揭秘之@if,@for,@each

本文由pc28.am发布于前端技术,转载请注明出处:一些一蹴而就的Less总计,LessCss学习笔记

上一篇:没有了 下一篇:没有了
猜你喜欢
热门排行
精彩图文
  • 遇见未知的,web开采连忙入门
    遇见未知的,web开采连忙入门
    CSS 框架 Bulma 教程 2017/10/26 · CSS ·Bulma 原文出处:阮一峰    网页样式需要大量时间开发,最省事的方法就是使用 CSS 框架。 Bootstrap 是最著名的 CSS框架,
  • 追踪客户,读书笔记
    追踪客户,读书笔记
    使用 CSS 追踪用户 2018/01/20 · CSS · 1评论 ·追踪 原文出处:jbtronics   译文出处:枫上雾棋    除了使用 JS 追踪用户,现在有人提出了还可以使用 CSS 进行
  • pusle雷达动漫完结,推荐8款CSS3兑现的动态特效
    pusle雷达动漫完结,推荐8款CSS3兑现的动态特效
    CSS技巧:逐帧动漫抖动实施方案 2017/08/16 · CSS ·动画 原来的书文出处:坑坑洼洼实验室    我所在的前端共青团和少先队首要从事活动端的H5页面开荒,而
  • 跟随我在oracle学习php,HTML中form表单的用法
    跟随我在oracle学习php,HTML中form表单的用法
    表单元素之搭车系 2016/01/28 · HTML5 ·表单 原文出处:司徒正美(@司徒正美)    对于表单元素, 除了reset元素,只要有name与value都能提交 因为在我们印象
  • Codecademy为编程初学者新增HTML和CSS两门课程,可以
    Codecademy为编程初学者新增HTML和CSS两门课程,可以
    Codecademy为编制程序初读书人新添HTML和CSS两门学科 2012/04/03 · CSS · 来源:伯乐在线     ·CSS 葡萄牙语原来的文章:Mashable  编译:伯乐在线– 黄利民 乐