【云顶集团手机登录网站】5种你未必知道的Jav

起头认识 LESS

2012/09/24 · CSS · CSS

来源:申毅&邵华@IBM DevelopWorks

LESS 背景介绍

LESS 提供了几种方法能平滑的将写好的代码转产生标准 CSS 代码,在广大风靡的框架和工具盒中已经能经不以为奇到 LESS 的人影了(举例推特(Twitter) 提供的 bootstrap 库就接收了 LESS卡塔 尔(阿拉伯语:قطر‎。那么,LESS 是从何而来呢?它和 SASS 等体制表语言又有啥不同吧?

图 1.LESS 的官方网址介绍
云顶集团手机登录网站 1

基于维基百科上的介绍,其实 LESS 是 阿莱克西斯 Sellier 受 SASS 的震慑创设的开源项目。那时 SASS 接受了缩进作为分隔符来区分代码块,并不是CSS 新疆中国广播公司为使用的括号。为了让 CSS 现成客户接受起来越发方便,Alexis 开辟了 LESS 并提供了就像是的机能。在一齐头,LESS 的解释器也雷同是由 Ruby 编写,后来才转而利用了 JavaScript. LESS 代码既可以够运作在顾客端,也能够运维在劳动器端。在顾客端只要把 LESS 代码和相应的 JavaScript 解释器在同风流洒脱页面引用就可以;而在劳务器端,LESS 能够运转在 Node.js 上,也能够运作在 Rhino 那样的 JavaScript 引擎上。

说一点题外话,其实以往的 SASS 已经有了两套语法则则:叁个照旧是用缩进作为分隔符来区分代码块的;另黄金时代套准绳和 CSS 同样使用了大括弧作为风格符。后黄金时代种语准绳则又名 SCSS,在 SASS 3 之后的本子都支持这种语法则则。SCSS 和 LESS 已经特别像了,它俩之间更详细的对照能够参谋 此链接。

LESS 高等个性

小编们领悟 LESS 具备四大特色:变量、混入、嵌套、函数。这几个特征在别的作品中早已怀有介绍,这里就不复述了。其实,LESS 还享有一点点很有意思的性状有扶助大家的付出,例如形式相称、条件表明式、命名空间和效用域,以至JavaScript 赋值等等。让大家来挨门逐户看看这么些特色吧。

情势相配:

低首下心大家对 LESS 四大特色中的混入 (mixin) 依旧记念深远吧,您用它能够定义一批属性,然后轻松的在三个样式聚集收音和录音。以至在概念混入时参与参数使得那几个属性依照调用的参数差别而生成区别的特性。那么,让大家更进一层,来打听一下 LESS 对混入的更加尖端帮忙:方式相配和准星表明式。

第生机勃勃,让我们来回看一下平常的带参数的混入格局:

清单 1. 带参数(及参数缺省值卡塔尔的混入

CSS

.border-radius (@radius: 3px) { border-radius: @radius; -moz-border-radius: @radius; -webkit-border-radius: @radius; } .button { .border-radius(6px); } .button2 { .border-radius(); }

1
2
3
4
5
6
7
8
9
10
11
.border-radius (@radius: 3px) {
  border-radius: @radius;
  -moz-border-radius: @radius;
  -webkit-border-radius: @radius;
}
.button {
  .border-radius(6px);
}
.button2 {
  .border-radius();
}

项目清单 2. 混入生成的 CSS 代码

CSS

.button { border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px; } .button2 { border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; }

1
2
3
4
5
6
7
8
9
10
.button {
  border-radius: 6px;
  -moz-border-radius: 6px;
  -webkit-border-radius: 6px;
}
.button2 {
  border-radius: 3px;
  -moz-border-radius: 3px;
  -webkit-border-radius: 3px;
}

从地点那一个事例能够观望,在混入大家可以定义参数,同期也可感觉那么些参数钦命一个缺省值。那样大家在调用那个混入时借使钦命了参数 .border-radius(6px),LESS 就会用 6px来替换,若是不点名参数来调用 .border-radius(),LESS 就能用缺省的 3px来替换。今后,大家更近一步,不止通过参数值来退换最后结出,而是通过传播差异的参数个数来同盟区别的混入。

清单 3. 利用区别的参数个数来合作不相同的混入

CSS

.mixin (@a) { color: @a; width: 10px; } .mixin (@a, @b) { color: fade(@a, @b); } .header{ .mixin(red); } .footer{ .mixin(blue, 50%); }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
.mixin (@a) {
  color: @a;
  width: 10px;
}
.mixin (@a, @b) {
  color: fade(@a, @b);
}
 
.header{
    .mixin(red);
}
.footer{
    .mixin(blue, 50%);
}

清单 4. 区别参数个数调用后变卦的 CSS 代码

CSS

.header { color: #ff0000; width: 10px; } .footer { color: rgba(0, 0, 255, 0.5); }

1
2
3
4
5
6
7
.header {
  color: #ff0000;
  width: 10px;
}
.footer {
  color: rgba(0, 0, 255, 0.5);
}

 

本条例子有个别像 Java 语言中的方法调用有个别近乎,LESS 能够依据调用参数的个数来选拔准确的混入来带走。今后,我们询问到通过传播参数的值,以致传入区别的参数个数能够挑选分裂的混入及退换它的末尾代码。那三个例证的方式相称都以特别轻巧通晓的,让大家换个思路,上边的例证中参数都以由变量构成的,其实在 LESS 中定义参数是能够用常量的!情势相称时相当的点子也会产生相应的转变,让大家看个实例。

清单 5. 用常量参数来支配混入的格局相称

CSS

.mixin (dark, @color) { color: darken(@color, 10%); } .mixin (light, @color) { color: lighten(@color, 10%); } .mixin (@zzz, @color) { display: block; weight: @zzz; } .header{ .mixin(dark, red); } .footer{ .mixin(light, blue); } .body{ .mixin(none, blue); }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
.mixin (dark, @color) {
  color: darken(@color, 10%);
}
.mixin (light, @color) {
  color: lighten(@color, 10%);
}
.mixin (@zzz, @color) {
  display: block;
  weight: @zzz;
}
 
.header{
    .mixin(dark, red);
}
.footer{
    .mixin(light, blue);
}
.body{
    .mixin(none, blue);
}

项目清单 6. 常量参数生成的 CSS 代码

CSS

.header { color: #cc0000; display: block; weight: dark; } .footer { color: #3333ff; display: block; weight: light; } .body { display: block; weight: none; }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
.header {
  color: #cc0000;
  display: block;
  weight: dark;
}
.footer {
  color: #3333ff;
  display: block;
  weight: light;
}
.body {
  display: block;
  weight: none;
}

 

经过这几个例子大家能够阅览,当我们定义的是变量参数时,因为 LESS 中对变量并从未项目标定义,所以它只会依照参数的个数来接受相应的混入来替换。而定义常量参数就不一样了,那时候不止参数的个数要对应的上,并且常量参数的值和调用时的值也要意气风发律才会同盟的上。值得注意的是我们在 body 中的调用,它调用时钦定的首先个参数 none 并无法相配上前多少个混入,而第八个混入 .mixin (@zzz, @color)就区别了,由于它的八个参数都是变量,所以它负担任何值,因而它对多个调用都能相称成功,由此大家在最终的 CSS 代码中看看每回调用的结果中都含有了首个混入的属性。

终极,咱们把清单 1中的代码做略微退换,扩展叁个无参的混入和三个常量参数的混入,您猜猜看最后的异常结果会产生哪些变化么?

清单 7. 无参和常量参数的情势相称

CSS

.border-radius (@radius: 3px) { border-radius: @radius; -moz-border-radius: @radius; -webkit-border-radius: @radius; } .border-radius (7px) { border-radius: 7px; -moz-border-radius: 7px; } .border-radius () { border-radius: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; } .button { .border-radius(6px); } .button2 { .border-radius(7px); } .button3{ .border-radius(); }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
.border-radius (@radius: 3px) {
  border-radius: @radius;
  -moz-border-radius: @radius;
  -webkit-border-radius: @radius;
}
 
.border-radius (7px) {
  border-radius: 7px;
  -moz-border-radius: 7px;
}
.border-radius () {
  border-radius: 4px;
  -moz-border-radius: 4px;
  -webkit-border-radius: 4px;
}
 
.button {
  .border-radius(6px);
}
.button2 {
  .border-radius(7px);
}
.button3{
.border-radius();      
}

 

下边包车型地铁结果或许会高于您的预期,无参的混入是力所能致包容任何调用,而常量参数非常严峻,必得保障参数的值 (7px)和调用的值(7px)一直以来才会协作。

清单 8. 步入了无参混入后生成的 CSS 代码

CSS

.button { border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; } .button2 { border-radius: 7px; -moz-border-radius: 7px; -webkit-border-radius: 7px; border-radius: 7px; -moz-border-radius: 7px; border-radius: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; } .button3 { border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
.button {
  border-radius: 6px;
  -moz-border-radius: 6px;
  -webkit-border-radius: 6px;
  border-radius: 4px;
  -moz-border-radius: 4px;
  -webkit-border-radius: 4px;
}
.button2 {
  border-radius: 7px;
  -moz-border-radius: 7px;
  -webkit-border-radius: 7px;
  border-radius: 7px;
  -moz-border-radius: 7px;
  border-radius: 4px;
  -moz-border-radius: 4px;
  -webkit-border-radius: 4px;
}
.button3 {
  border-radius: 3px;
  -moz-border-radius: 3px;
  -webkit-border-radius: 3px;
  border-radius: 4px;
  -moz-border-radius: 4px;
  -webkit-border-radius: 4px;
}

 

标准化表达式

有了形式相称之后是有益了累累,大家能依据差别的急需来协作分裂的混入,但更进一层的正是行使标准表明式来进一层标准,特别严苛的来限定混入的相配,实现的格局正是应用了 when其一重要词。

清单 9. 接受规范表明式来决定情势相配

CSS

.mixin (@a) when (@a >= 10) { background-color: black; } .mixin (@a) when (@a < 10) { background-color: white; } .class1 { .mixin(12) } .class2 { .mixin(6) }

1
2
3
4
5
6
7
8
.mixin (@a) when (@a >= 10) {
  background-color: black;
}
.mixin (@a) when (@a < 10) {
  background-color: white;
}
.class1 { .mixin(12) }
.class2 { .mixin(6) }

项目清单 10. 标准表明式生成的 CSS 代码

CSS

.class1 { background-color: black; } .class2 { background-color: white; }

1
2
3
4
5
6
.class1 {
  background-color: black;
}
.class2 {
  background-color: white;
}

 

接受 When 以至 <, >, =, <=, >= 是极度简短和造福的。LESS 并未停留在那处,何况提供了成都百货上千品种检查函数来提携标准表达式,比如 iscolorisnumberisstringiskeywordisurl等等。

项目清单 11. 法规表明式中扶植的种类检查函数

CSS

.mixin (@a) when (iscolor(@a)) { background-color: black; } .mixin (@a) when (isnumber(@a)) { background-color: white; } .class1 { .mixin(red) } .class2 { .mixin(6) }

1
2
3
4
5
6
7
8
.mixin (@a) when (iscolor(@a)) {
  background-color: black;
}
.mixin (@a) when (isnumber(@a)) {
  background-color: white;
}
.class1 { .mixin(red) }
.class2 { .mixin(6) }

项目清单 12. 项目检查匹配后退换的 CSS 代码

CSS

.class1 { background-color: black; } .class2 { background-color: white; }

1
2
3
4
5
6
.class1 {
  background-color: black;
}
.class2 {
  background-color: white;
}

 

此外,LESS 的尺度表明式相近支撑 AND 和 OOdyssey 以至 NOT 来组合条件表明式,那样能够团体成更为刚劲的基准表明式。要求极度提议的一些是,O奥迪Q5在 LESS 中并非用 or 关键字,而是用 , 来代表 or 的逻辑关系。

清单 13. AND,OLX570,NOT 条件表明式

【云顶集团手机登录网站】5种你未必知道的JavaScript和CSS交互作用的主意,愚人节极客式恶搞。CSS

.smaller (@a, @b) when (@a > @b) { background-color: black; } .math (@a) when (@a > 10) and (@a < 20) { background-color: red; } .math (@a) when (@a < 10),(@a > 20) { background-color: blue; } .math (@a) when not (@a = 10) { background-color: yellow; } .math (@a) when (@a = 10) { background-color: green; } .testSmall {.smaller(30, 10) } .testMath1 {.math(15)} .testMath2 {.math(7)} .testMath3 {.math(10)}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
.smaller (@a, @b) when (@a > @b) {
    background-color: black;
}
.math (@a) when (@a > 10) and (@a < 20) {
    background-color: red;
}
.math (@a) when (@a < 10),(@a > 20) {
    background-color: blue;
}
.math (@a) when not (@a = 10)  {
    background-color: yellow;
}
.math (@a) when (@a = 10)  {
    background-color: green;
}
 
.testSmall {.smaller(30, 10) }
.testMath1 {.math(15)}
.testMath2 {.math(7)}
.testMath3 {.math(10)}

清单 14. AND,O本田CR-V,NOT 条件表明式生成的 CSS 代码

CSS

.testSmall { background-color: black; } .testMath1 { background-color: red; background-color: yellow; } .testMath2 { background-color: blue; background-color: yellow; } .testMath3 { background-color: green; }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
.testSmall {
  background-color: black;
}
.testMath1 {
  background-color: red;
  background-color: yellow;
}
.testMath2 {
  background-color: blue;
  background-color: yellow;
}
.testMath3 {
  background-color: green;
}

 

命名空间和成效域

LESS 所带动的变量,混入那几个特色其实十分大程度上制止了思想 CSS 中的多量代码重复。变量能够制止一个属性数次重复,混入能够制止属性集的再度。而且使用起来更灵活,维护起来也惠及了成都百货上千,只要更改风流罗曼蒂克处定义而没有供给改良多处援用之处。今后,让咱们更进一层,当作者定义好了变量和混入之后,怎能越来越好的决定和应用它们啊,怎么制止和别之处定义的变量及混入冲突?八个大名鼎鼎的主见正是像别的语言同样引进命名空间和效能域了。首先我们来看多少个LESS 的功能域的事例。

清单 15. 变量的效能域

CSS

@var: red; #page { @var: white; #header { color: @var; } } #footer { color: @var; }

1
2
3
4
5
6
7
8
9
10
@var: red;
#page {
  @var: white;
  #header {
    color: @var;
  }
}
#footer {
  color: @var;
}

 

在此个事例里,能够看出 header 中的 @var会率先在眼下成效域寻觅,然后再逐层往父效能域中寻找,向来到顶层的大局意义域中甘休。所以 header 的 @var在父功效域中找到之后就告意气风发段落了查找,最后的值为 white。而 footer 中的 @var在脚下效力域没找到定义之后就招来到了大局作用域,最后的结果正是大局作用域中的定义值 red。

项目清单 16. 变量效能域例子生成的 CSS 代码

CSS

#page #header { color: #ffffff; // white } #footer { color: #ff0000; // red }

1
2
3
4
5
6
#page #header {
  color: #ffffff;  // white
}
#footer {
  color: #ff0000;  // red
}

 

摸底了成效域之后让我们再来看一下命名空间,大家能够用命名空间把变量和混入封装起来,制止和其余地点的定义冲突,援用起来也特别造福,只要在前面加上相应的命名空间就能够了。

事项清单 17. 命名空间的例证

CSS

@var-color: white; #bundle { @var-color: black; .button () { display: block; border: 1px solid black; background-color: @var-color; } .tab() { color: red } .citation() { color: black} .oops {weight: 10px} } #header { color: @var-color; #bundle > .button; #bundle > .oops;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@var-color: white;
#bundle {
  @var-color: black;
 
  .button () {
    display: block;
    border: 1px solid black;
    background-color: @var-color;
  }
  .tab() { color: red }
  .citation() { color: black}
  .oops {weight: 10px}
}
 
#header {
    color: @var-color;
    #bundle > .button;
    #bundle > .oops;

 

此处能够见到,大家运用嵌套法则在 #bundle中确立了一个命名空间,在里面封装的变量以致质量集结都不会拆穿到表面空间中,举例 .tab(), .citation()都未有揭露在终极的 CSS 代码中。而值得注意的少数是 .oops 却被揭发在了最终的 CSS 代码中,这种结果恐怕并不是大家想要的。其实肖似的事例咱们能够在混入的例子中也得以窥见,即无参的混入 .tab()是和平日的属性集 .oops今非昔比的。无参的混入是不会暴光在终极的 CSS 代码中,而平凡的属性集则会今后出来。大家在概念命名空间和混入时要小心管理那样的差距,制止带给潜在的标题。

清单 18. 命名空间例子生成的 CSS 代码

CSS

#bundle .oops { weight: 10px; } #header { color: #ffffff; display: block; border: 1px solid black; background-color: #000000; weight: 10px; }

1
2
3
4
5
6
7
8
9
10
#bundle .oops {
  weight: 10px;
}
#header {
  color: #ffffff;
  display: block;
  border: 1px solid black;
  background-color: #000000;
  weight: 10px;
}

 

JavaScript 赋值 (JavaScript Evaluation)

后生可畏旦能在 CSS 中选拔一些 JavaScript 方法确实是特别令人欢悦的,而 LESS 真正稳步走入那项功效,近些日子曾经能选择字符串及数字的常用函数了,想要在 LESS 中动用 JavaScript 赋值只须求用反引号(`卡塔 尔(英语:State of Qatar)来含有所要实行的操作就可以。让我们看看实例吧。

清单 19. JavaScript 赋值的例证

CSS

.eval { js: `1 + 1`; js: `(1 + 1 == 2 ? true : false)`; js: `"hello".toUpperCase() + '!'`; title: `process.title`; } .scope { @foo: 42; var: `this.foo.toJS()`; } .escape-interpol { @world: "world"; width: ~`"hello" + " " + @{world}`; } .arrays { @ary: 1, 2, 3; @ary2: 1 2 3; ary: `@{ary}.join(', ')`; ary: `@{ary2}.join(', ')`; }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
.eval {
    js: `1 + 1`;
    js: `(1 + 1 == 2 ? true : false)`;
    js: `"hello".toUpperCase() + '!'`;
    title: `process.title`;
}
.scope {
    @foo: 42;
    var: `this.foo.toJS()`;
}
.escape-interpol {
    @world: "world";
    width: ~`"hello" + " " + @{world}`;
}
.arrays {
    @ary:  1, 2, 3;
    @ary2: 1  2  3;
    ary: `@{ary}.join(', ')`;
    ary: `@{ary2}.join(', ')`;
}

 

我们能够看出,在 eval 中大家得以用 JavaScript 做数字运算,布尔表达式;对字符串做大小写转变,串联字符串等操作。以致最终能够收获到 JavaScript 的运作意况(process.title卡塔尔国。同样能够看来 LESS 的功能域和变量也长久以来在 JavaScript 赋值中运用。而最后的例证中,大家看看 JavaScript 赋值同样使用于数组操作当中。其实 LESS 的 JavaScript 赋值还会有支撑任何一些办法,可是当下尚无揭橥出来。

清单 20. JavaScript 赋值生成的 CSS 代码

CSS

.eval { js: 2; js: true; js: "HELLO!"; title: "/Users/Admin/Downloads/LESS/Less.app/Contents/Resources/engines/bin/node"; } .scope { var: 42; } .escape-interpol { width: hello world; } .arrays { ary: "1, 2, 3"; ary: "1, 2, 3"; }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
.eval {
  js: 2;
  js: true;
  js: "HELLO!";
  title: "/Users/Admin/Downloads/LESS/Less.app/Contents/Resources/engines/bin/node";
}
.scope {
  var: 42;
}
.escape-interpol {
  width: hello world;
}
.arrays {
  ary: "1, 2, 3";
  ary: "1, 2, 3";
}

LESS 开采的实用工具 – LESS.app

在 LESS 开拓中,我们能够用 LESS 提供的 JavaScript 脚本来在运行时解析,将 LESS 文件实时翻译成对应的 CSS 语法。如上面那几个事例:

清单 21. helloworld.html

CSS

<link rel="stylesheet/less" type="text/css" href="helloworld.less"> <script src="less.js" type="text/javascript"></script> <div>Hello World!</div>

1
2
3
4
<link rel="stylesheet/less" type="text/css" href="helloworld.less">
<script src="less.js" type="text/javascript"></script>
 
<div>Hello World!</div>

 

从地方的亲自去做可以见见,在 helloworld.less 引进之后大家还加多了三个JavaScript 文件,那么些文件正是 LESS 的解释器,能够在 LESS 的官网上下载此文件。须要在乎的是,要专心 LESS 文件和 LESS 解释器的引进顺序,确认保证全部的 LESS 文件都在 LESS 解释器早前。

见状此间也许有人会说,实时深入分析的话方便倒是低价,能够品质上不就有消耗了么?比起平时性 CSS 来讲多了生龙活虎道解释的步骤。可能还会有的人对写好的 LESS 文件不太放心,希望能看出深入深入分析之后的 CSS 文件来检查下是还是不是是本人愿意的原委。那五个难点其实都是可以驱除的,LESS 提供了服务端的方案,使用 npm 安装 LESS 之后就可以将你抱有的 LESS 文件批量转形成 CSS 文件,然后您得到 CSS 文件就足以自由了,检查生成的剧情是或不是有误,也足以一贯在 HTML 中引用,再也不用增加 LESS 的 JavaScript 文件来剖判它了。关于那后生可畏都部队分的事必躬亲安装消息,能够一向参谋 LESS 官英特网的介绍,这里就不复述了。
然则,对于 Mac 客商来讲还或许有叁个更有利的工具得以接纳,它正是 less.app. 那是贰个第三方提供的工具,使用起来特别方便人民群众,大家得以在下图所示的分界面上添加LESS 文件所在的目录,此工具就能够在侧边列出目录中蕴藏的具备 LESS 文件。最酷的是,今后您就无须再思念思量着要把 LESS 文件编写翻译成 CSS 文件了,那一个工具会在您每一遍校订完保存 LESS 文件时和煦实施编写翻译,自动生成 CSS 文件。那样,您就足以每16日查阅 LESS 代码的末尾效果,检核对象 CSS 是还是不是符合您的必要了,实在是太方便了!

图 2. 导入 LESS 文件夹的分界面,左侧可增多贮存在多个例外路子的文本夹。
云顶集团手机登录网站 2

图 3. 编写翻译结果分界面,在这里可手动批量编写翻译全体 LESS 文件。
云顶集团手机登录网站 3

更值为陈赞的是,LESS.app 照旧个无偿软件,接受馈赠:卡塔尔

 

总结

经过上面包车型地铁简短介绍,希望我们精通到了 LESS 的首要意义,相信 LESS 会让前端攻城师的行事越发轻易,更灵敏。更加多的底细能够参见 LESS 官网。

赞 3 收藏 评论

云顶集团手机登录网站 4

加载CSS文件

推迟加载图片、JSON、脚本等是用来加快页面显示速度的好措施。我们得以应用curl.js等如此JavaScript加载器来延缓加载那一个外界财富,可你理解CSS样式表也得以顺延加载吗,而且在加载成功后回调函数会予以照管。

JavaScript

curl( [ "namespace/MyWidget", "css!namespace/resources/MyWidget.css" ], function(MyWidget) { // 你能够对MyWidget举办操作 // 这里未有对这些CSS文件援用,因为没有要求; // 大家只需求它曾经加载到页面上了 } });

1
2
3
4
5
6
7
8
9
10
11
curl(
[
"namespace/MyWidget",
"css!namespace/resources/MyWidget.css"
],
function(MyWidget) {
// 你可以对MyWidget进行操作
// 这里没有对这个CSS文件引用,因为不需要;
// 我们只需要它已经加载到页面上了
}
});

本网址使用的PrismJS语法高亮脚本正是延迟加载的。当全部的财富都加载后,回调函数就能触发,作者可在回调函数里加载它。非常管用!

正规的施工方案

小编想开的首先个减轻格局是用Ruby写多个办法来围观dom中有所相关的片段并递归寻找具备相符条件的节点。个中使用了多少个轻量级的css选择器:

JavaScript

def each_new_line(document) document.css('p').each { |p| yield first_text_node(p) } document.css('br').each { |br| yield first_text_node(br.next) } end def first_text_node(node) if node.nil? then nil elsif node.text? then node elsif node.children.any? then first_text_node(node.children.first) end end

1
2
3
4
5
6
7
8
9
10
11
def each_new_line(document)
  document.css(&#039;p&#039;).each { |p| yield first_text_node(p) }
  document.css(&#039;br&#039;).each { |br| yield first_text_node(br.next) }
end
 
def first_text_node(node)
  if node.nil? then nil
  elsif node.text? then node
  elsif node.children.any? then first_text_node(node.children.first)
  end
end

那是二个相比客观的技术方案,但是11行的代码犹如有个别儿长。有一点点儿杀鸡用牛刀的认为到,仅仅为了赢得dom的节点而用上Ruby的迭代器和标准化语句感到有个别犯不上。应该有越来越好的主意啊?

4. 网页中有着图片都自转

CSS

/* Spin all images */ img { /*-webkit-animation: spin 1s linear infinite;*/ }

1
2
3
4
5
6
/*
Spin all images
*/
img {
  /*-webkit-animation: spin 1s linear infinite;*/
}

云顶集团手机登录网站 5

点击查看原始尺寸图片

给初读书人的十捌个CSS实用提出

2013/02/04 · CSS · 3 评论 · CSS

法文原稿:20-useful-css-tips-for-beginners,编译:杨礼鑫

千古就连七个镜像站点,我们都依靠大批量的开垦人士和技师进行维护。得益于CSS和它的圆滑使得样式能够从代码中被单独分离出来,进而让三个只持有宗旨CSS理论的初读书人都能够轻巧地退换网站的体裁。

不管你是对用CSS建站感兴趣依然单独拿它让您的博客更有feel,打好底子手艺盖高楼。上边让我们来看看一些对此初读书人实用的CSS常识:

1、使用reset.css

火狐和IE那三种分化的浏览器,在绘制CSS样式方法上完全差别。这种意况下,使用reset.css重新设置全部的大旨样式会让您获取三个全新的空样式表。

那儿有部分常用的reset.css框架——Yahoo Reset CSSEric Meyer’s CSS ResetTripoli

2、CSS缩写

CSS缩写简化了你的CSS代码,更重视的是,它让您的代码特别清洁易懂。

不是像这么创设CSS

CSS

.header { background-color: #fff; background-image: url(image.gif); background-repeat: no-repeat; background-position: top left; }

1
2
3
4
5
6
7
.header {
  background-color: #fff;
  background-image: url(image.gif);
  background-repeat: no-repeat;
  background-position: top left;
 
}

而是像这么成立CSS

CSS

.header { background: #fff url(image.gif) no-repeat top left }

1
2
3
.header {
  background: #fff url(image.gif) no-repeat top left  
}

 

3、理解class和id

那四个选取器总是让初我们以为吸引。在CSS中,Class和ID分别用点“.”和井号“#”来标志。简单的讲id正是用来标志这些单身不重复的体制,而class是足以重复使用的。

4、实用的<li>

<li>也叫链接列表,在与<ol>或<ul>准确搭配的时候蛮好用,特别是用在导航菜单样式上。

5、少用<table>多用<div>

CSS最大的优势之一是采纳<div>到达样式上的灵敏多变。分裂于<table>,<div>里的从头到尾的经过不会被锁在单元格<td>中。能够说大致全体的报表布局都可以在<div>和样式的不Lyly用下成功。当然,有恢宏报表内容时,依旧用 <table>吧。

6、CSS调节和测量试验工具

在安顿CSS时,可以拿走页面布局的预览对于优化CSS样式和纠错是很有利于的。这里有意气风发对免费的CSS调节和测验工具推荐给你,你能够把它装在浏览器上:FireFox Web Developer、DOM Inspector、Internet Explorer Developer Toolbar、Firebug

云顶集团手机登录网站 6

7、幸免多余的选拔器

突发性你的CSS表明能够更简便易行,非常是你发觉你的代码和底下的接近:

CSS

ul li { ... }

1
ul li { ... }

CSS

ol li { ... }

1
ol li { ... }

CSS

table tr td { ... }

1
table tr td { ... }

它们得以简化为:

CSS

li { ... }

1
li { ... }

CSS

td { ... }

1
td { ... }

如上是因为<li>会且只会与<ul>或<ol>连用,仿佛<td>只可以存在于<tr>和<table>中平等,那儿真没有把它们重新二次的柳暗花明。

8、!Important

所有被!important 标识的体裁,固然它后来被重写,浏览器也只会采纳被标志的那条。

CSS

.page { background-color:blue !important; background-color:red; }

1
2
3
4
.page {
  background-color:blue !important;
  background-color:red;
}

比如上面的例子,因为background-color:blue 被标识为!important ,固然后来有把背景改成松石绿的话语,也只行使被标识的那条。!important 用来强制使多少个体裁制止在之后的编码中被校勘,可惜的是IE不援助。

9、图像替代文本

那招经常被用来把二个基于文本的<h1>title</h1>题目换到图片。依据如下所示:

CSS

h1 { text-indent:-9999px; background:url("title.jpg") no-repeat; width:100px; height:50px; }

1
2
3
4
5
6
h1 {
  text-indent:-9999px;
  background:url("title.jpg") no-repeat;
  width:100px;
  height:50px;
}

疏解表明: text-indent:-9999px; 利用缩进把公文撤掉,然后用钦赐了背景和长度宽度的图形替代。

10、理解CSS的定位position

下列随笔演讲了CSS定位position: {…}的明白和用法。

11、@import vs <link>

有两种情势能够外界引用CSS文件:@import和<link>

. 借令你不鲜明用哪类,Difference Between @import and link一文能够帮您选拔。

12、CSS表单设计

在CSS中,设计和制订网页表格变得特别轻松。以下几篇小说能够教您怎么办:Table-less formForm GardenStyling even more form controls、formee。

云顶集团手机登录网站 7

13、设计灵感来自

倘若您是想搜索一些独立的基于CSS的网址来激发灵感,恐怕只是找一些好的UI,这里推荐多少个网址:

  1. CSS Remix

  2. CSS Reboot

  3. CSS Beauty

  4. CSS Elite

  5. CSS Mania

  6. CSS Leak

云顶集团手机登录网站 8

远远不足?来个合集74 CSS Galleries

14、CSS圆角

那篇小说教您怎么用CSS制作跨浏览器的圆角边框。

云顶集团手机登录网站 9

15、操持代码整洁

假定你的CSS代码散乱,编完了你会发觉它们理伙不清。回想的时候,料定也是惨淡。对于初读书人的话,最好制版标准,注释安妥。

触类旁通阅读

  1. 12 Principles For Keeping Your Code Clean

  2. Format CSS Codes Online

16、制版度量: Px Vs Em

排版的时候,怎么着选开销量单位px或em?假使您认为有纠葛?上边几篇随笔只怕能够让你越来越好的明亮衡量单位。Units of Measurement in CSSCSS Font size explainedUsing Points, Pixels, Ems, or Percentages for CSS Fonts

扩充阅读

  1. CSS中所向无前的EM

  2. CSS FONT-SIZE: EM VS. PX VS. PT VS. PERCENT

  3. Which font sizing is best? EM vs PX vs %

  4. px – em – % – pt – keyword

  5. Understanding em Units in CSS

17、CSS浏览器宽容表

我们都掌握区别的浏览器对于CSS渲染方式也不近似。有个仿效,图表可能清单来验证各类浏览器对CSS的合作情况是很有用的:

CSS 补助表格: #1#2#3#4.

云顶集团手机登录网站 10

18、CSS中多列布局

是或不是在兼顾中遇见左,中,右的多列难题?接下去几篇随笔大概对您有赞助:

  1. In Search of the Holy Grail

  2. Faux Columns

  3. Top reasons your CSS columns are messed up

  4. Litte Boxes (examples)

  5. Multi-Column Layouts Climb Out of the Box

  6. Absolute Columns

云顶集团手机登录网站 11

19、使用无需付费编辑器

专用的编辑器总比记事本强吧。那儿有几个不利的推荐介绍:Simple CSSNotepad ++A Style CSS Editor

云顶集团手机登录网站 12

20、驾驭传媒类型

当您用<link>的时候恐怕会遇上媒体类型。print, projection和screen是不时会用到的花色。领会和正好的接受它们能够让客商易于访谈。

恢宏阅读

  1. CSS3 Media Queries

  2. CSS and Media Types

  3. W3 Media Types

  4. CSS Media Types

  5. CSS2 Media Types

  6. CSS3 Media Queries模板

  7. 使用em单位创设CSS3的Media Queries

  8. iPads和iPones的Media Queries

 

翻译手语:最初翻译前端技艺博文,整个翻译依据原著线路开展,并在翻译进度略加了个人对技艺的接头。要是翻译有异形之处,还烦请同行朋友教导。多谢!

 

赞 3 收藏 3 评论

云顶集团手机登录网站 13

用JavaScript获取伪成分(pseudo-element)属性

大家都知晓怎么通过多少个要素的style属性获取它的CSS样式值,但能赢得伪元素(pseudo-element)的属性值吗?能够的,使用JavaScript也能够访问页面中的伪成分。

JavaScript

// Get the color value of .element:before var color = window.getComputedStyle( document.querySelector('.element'), ':before' ).getPropertyValue('color'); // Get the content value of .element:before var content = window.getComputedStyle( document.querySelector('.element'), ':before' ).getPropertyValue('content');

1
2
3
4
5
6
7
8
9
// Get the color value of .element:before
var color = window.getComputedStyle(
document.querySelector('.element'), ':before'
).getPropertyValue('color');
 
// Get the content value of .element:before
var content = window.getComputedStyle(
document.querySelector('.element'), ':before'
).getPropertyValue('content');

见到了吗,作者能访谈伪成分里的content属性值。固然你想创建多个动态的,风格别致的网址,那是意气风发种格外实惠的技术!

我们到底能从当中获得怎么着?

既然大家能用相对易懂的Ruby来达成为何还要选用XPath呢?

大多数意况下,Ruby是用来编排高层代码的,举个例子商业逻辑,整合利用组件,描述复杂的园地模型。从当中能够看见最佳的Ruby代码是用来陈诉意图而非用于贯彻。所以用Ruby来做一些低品位或与应用毫不相关的事体(遍历dom树来找内定属性的节点卡塔尔国令人蛋疼。

XPath的个中二个优势是它的速度:XPath的遍历是经过libxml完成的,而原生代码的快慢是相当慢的。对于小编上面举的例证,与Ruby的落到实处比较,XPath实际上要慢得多。小编猜招致那一个情状的缘故是对此<br>标签的下贰个成分的寻找。因为在此个动作中其实是先筛选出了<br>前边的享有与之同级的要素然后才过滤出里面包车型大巴第三个。

所以XPath快慢与拒却计于你的使用方法,可是右臂有一点儿难。那是一个特别用来让您利用容易的惯用表达式来遍历dom的工具。

赞 收藏 3 评论

2. 网页旋转

CSS

/* Spin every Website */ body { /*-webkit-animation: spin 5s linear infinite;*/ }

1
2
3
4
5
6
/*
  Spin every Website
*/
body {
  /*-webkit-animation: spin 5s linear infinite;*/
}

云顶集团手机登录网站 14

点击查看原始尺寸图片

CSS鼠标指针事件

CSS鼠标指针事件pointer-events属性极其的风趣,它的意义极度像JavaScript,当你把这几个特性设置为none时,它能有效的遏止防止那一个成分,你也许会说“那又怎么?”,但实际上,它是明确命令禁止了这几个成分上的别样JavaScript事件或回调函数!

JavaScript

.disabled { pointer-events: none; }

1
.disabled { pointer-events: none; }

点击那些因素,你会意识任何你放置在这里个成分上的监听器都不会接触任何事件。二个奇妙的意义,真的——你不在须要为了幸免有些事件会被触发而去反省某些css类是或不是存在。

正是那5给你可能还尚无开采的CSS和JavaScript人机联作的措施。你还应该有新的开采吗?分享出来!

赞 1 收藏 评论

云顶集团手机登录网站 15

换多少个角度来看XPath

与一个加强型的CSS采用器比较,XPath与JQuery的便利更相通。举个例子,我们可以把早先的XPath表明式换到JQuery的样式:

JavaScript

$(document).find('*'). children('p'). children('em'). children('a').filter('[href]')

1
2
3
4
$(document).find('*').
  children('p').
  children('em').
  children('a').filter('[href]')

上面包车型客车代码中,大家用到的JQuery的格局与轴的功用是黄金时代致的:

JavaScript

.children()相当于轴中的child,.find()也就是descendant。

1
.children()相当于轴中的child,.find()相当于descendant。

JQuery方法中的选用器约等于XPath中的节点测量检验,只可惜jQuery不容许选取文本节点。

jQuery中的.filter()方法也便是XPath中的谓词,.children(’em’)的成效是合营全体相配到的<p>标签中的全数<em>子元素。那样看来,XPah要比jQuery强大得多。

黄金时代、展开浏览器的 Custom.css 文件

本文以 Chrome 为例(CSS 订正后立时生效卡塔 尔(英语:State of Qatar),步入同事或朋友的微机,按下边格局展开 Custom.css 文件

  • Mac:~/Library/Application Support/Google/Chrome/Default/User StyleSheets/Custom.css
  • Windows XP:系统盘:Documents and Settings用户名Local SettingsApplication DataGoogleChromeUser DataDefaultUser StyleSheetsCustom.css(其余Windows 系统相像,在个体账号中的找“应用数据” AppData……卡塔 尔(阿拉伯语:قطر‎
  • Ubuntu (Chromium):~/.config/chromium/Default/User StyleSheets/Custom.css

本文由445云顶国际在线娱乐发布于云顶集团手机登录网站,转载请注明出处:【云顶集团手机登录网站】5种你未必知道的Jav

相关阅读