>

什么编写轻量级,个拔尖的极简

- 编辑:云顶娱乐yd2221 -

什么编写轻量级,个拔尖的极简

PostCSS深远学习:设置选项

2015/10/28 · CSS · POSTCSS

最早的作品出处: Kezz Bracey   译文出处:大漠   

什么编写轻量级,个拔尖的极简。迎接开启大家PostCSS深切学习系列之快入门指南。在此些初级教程中,能够让我们连忙的垂询PostCSS和什么最有效的应用PostCSS。

在此篇文章中,我们将先告诉您怎么着设置PostCSS选项,所以你未来始发选取PostCSS只要几分钟。接下来将告诉你怎么样在Codepen和Prepros中设置PostCSS。

眼看让大家看看哪些开头玩PostCSS。

表单

演示示例:

在上面的命名计策中大器晚成度显得了 Snack 表单的着力布局,基本表单除了构造之外,样式上并从未太多能够探讨的地方。在这里说一下表单中 checkbox 的结构调节,先看一下 Bootstrap 的 checkbox 结构。

JavaScript

<!-- checkbox --> <div class="checkbox"> <label> <input type="checkbox" value=""> checkbox </label> </div> <!-- checkbox-inline --> <label class="checkbox-inline"> <input type="checkbox" id="inlineCheckbox1" value="option1"> checkbox </label>

1
2
3
4
5
6
7
8
9
10
11
<!-- checkbox -->
<div class="checkbox">
  <label>
    <input type="checkbox" value=""> checkbox
  </label>
</div>
 
<!-- checkbox-inline  -->
<label class="checkbox-inline">
  <input type="checkbox" id="inlineCheckbox1" value="option1"> checkbox
</label>

上述三种结构不可能有过错,稍有过错样式就能够混杂,灵活性非常差。其次作者在想二种布局能否组成在一齐,加强灵活性。想了非常久,找到了主意,Snack 构造如下:

JavaScript

<!-- checkbox --> <div class="checkbox"> <label> <input type="checkbox" value=""> checkbox </label> </div> <!-- checkbox-inline --> <div class="checkbox inline"> <label> <input type="checkbox" value=""> checkbox </label> </div>

1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- checkbox -->
<div class="checkbox">
  <label>
    <input type="checkbox" value=""> checkbox
  </label>
</div>
 
<!-- checkbox-inline -->
<div class="checkbox inline">
  <label>
    <input type="checkbox" value=""> checkbox
  </label>
</div>

也能够将样式直接加到 label 标签上。另外,如果将 input 移到 label 标签外也是平昔不难点的,如下:

这种构造有贰个低价,正是可以自定义 input 样式,详见上面包车型大巴 CodePen 的 scss 文件。radio 的设置和 checkBox 是风姿浪漫律的。

See the Pen snack-forms by Zongbin (@nzbin) on CodePen.

17. Concise

图片 1

Concise 为你的网址设计提供了深厚的底子。它提供了生龙活虎套仅包罗底蕴样式的轻松框架,并饱含了汪洋开箱即用的效率。同有时间,你也能够通过应用功底的叠合组件举办成效性扩张。

品种地址:【传送门】

释放javascript对象

在rich应用中,随着实例化对象数量的加多,内部存款和储蓄器消耗会更加大。所以应该顿时放出对目的的援引,让GC能够回笼那些内部存款和储蓄器控件。

对象:obj = null

对象属性:delete obj.myproperty

数组item:使用数组的splice方法释放数组中不用的item

PostCSS入门

PostCSS在以惊人的速度提升,並且特别受人接待。越多的人伊始在掌握它,使用它。因为她俩发觉到,在类型中使用PostCSS让她们开采到了日前生龙活虎亮。

图片 2

二零一四年总共不到140万的下载量,但从2015年7月份到五月份早就胜过380万个下载。

Autoprefixer是PostCSS中最风靡的插件,当中谷歌、Shopify、推文(Tweet卡塔尔(英语:State of Qatar)、Bootstrap和Codepen都在运用那些插件。Wordpress也应用Autoprefixer插件,並且还利用RTLCSS插件。Alibaba使用了几个PostCSS插件,以至也到位PostCSS的耗费。

除了,Mark Otto也聊起就要Bootstrap v5中引入PostCSS:

Oh, btw—Bootstrap 4 will be in SCSS. And if you care, v5 will likely be in PostCSS because holy crap that sounds cool.——@Mark Otto

PostCSS刚刚被CodePen.io援引,能够通过CSS设置中安装:

图片 3

PostCSS正在巩固,是快捷的进步,並且从不充足的理由。

CodePen中设置PostCSS

少年老成旦您是率先次接触PostCSS,那么通过CodePen来行使它是最快情势。

CodePen已先行集成了PostCSS,並且还匡助下边所列的PostCSS插件:

  • cssnext
  • postcss-simple-vars
  • postcss-discard-comments
  • postcss-custom-media
  • postcss-media-minmax
  • postcss-conditionals
  • postcss-each
  • postcss-for
  • postcss-nested
  • postcss-transform-shortcut

那些插件能够让您扶助现在的CSS语法、像Sass近似的函数、注释的去除和代码的缩写等等。

第生龙活虎在CodePen在线编辑器上点击”NewPen“创立多少个新的页面。然后单击CSS窗口左上角的小齿轮Logo,在弹出的面板中安装。

图片 4

单击“CSS Preprocessor”下拉选项,你能够筛选下拉选项中的“PostCSS”选项。你也能够在”Vendor Prefixing“中选择“Autoprefixer”插件。

图片 5

然后您可以点击“Need an add-on”按键,在弹出的面板中选用你须要的插件。在弹出的面板将交易会示@平整插件,复制粘贴这么些@准则对应的PostCSS插件到您的CSS面板中,况且起头接受。

图片 6

前面二个框架比较

当下市道上前端框架首要分重量级与轻量级。重量级入眼有 Bootstrap、Semantic、UIkit、Foundation 等,轻量级有 Pure、Skeleton、Miligram 等。日常关注前端动态的技术员会意识轻量级框架一年一度都成千上万。在本人上边提到的主流轻量级框架之外还也可以有许多相通的框架。作者直接问本身,为何要双重造轮子。经过研商,笔者发觉那么些轻量级框架其实多数都无法自力更生专门的学问须求,何况模仿的划痕超重,基本上都或多或少的有 Bootstrap 的阴影。那么这一个轻量级框架有未有含义吗?当然有。然则就自个儿个人观点,接纳轻量级框架反倒不及自身完成一个框架。因为多数轻量级框架好似工作总括,是基于本人的职业需求达成的。所以基本上不具备通用性。

前者框架的比较主要以 Bootstrap、Semantic、UIkit 为主,因为自己个人感觉那么些最富有代表性,并且设计风格各有特色。Foundation 也许有众多大商铺在用,但以自家个人观点,无论是框架的易用性照旧设计风格,相比较别的几个框架稍稍逊色一些。

里面 Bootstrap 和 Semantic 是面向对象的最佳反映。

自笔者先说一下 Bootstrap 的优势,不是安顿性风格,不是模块,不是特效,而是栅格,响应式栅格。Bootstrap 的栅格在与其它框架相比较中占有绝对优势,无论是栅格的撤并也许类名的风骨都可以称作精粹。假设读者有心看一下 Bootstrap 的 Less 源文件,就能够心获得 Bootstrap 对于响应式栅格的独到。其实在 Bootstrap 从前也可以有为数不菲栅格方案,但是给人的感到正是缺乏利索,类名繁杂不好记。而后来的大队人马框架,特别轻量级的框架大多都有Bootstrap 的影子。

上边我们透过相比多少个框架的栅格和开关来看一下类命名的计划。

Bootstrap

JavaScript

<div class="row"> <div class="col-md-8"></div> <div class="col-md-4"></div> </div> <button class="btn btn-primary" type="submit">Button</button>

1
2
3
4
5
6
<div class="row">
  <div class="col-md-8"></div>
  <div class="col-md-4"></div>
</div>
 
<button class="btn btn-primary" type="submit">Button</button>

Semantic

JavaScript

<div class="ui grid"> <div class="ten wide column"></div> <div class="six wide column"></div> </div> <button class="ui primary basic button">Primary</button>

1
2
3
4
5
6
<div class="ui grid">
  <div class="ten wide column"></div>
  <div class="six wide column"></div>
</div>
 
<button class="ui primary basic button">Primary</button>

Foundation

JavaScript

<div class="row"> <div class="small-3 columns"></div> <div class="small-9 columns"></div> </div> <button type="button" class="primary button">Primary</button>

1
2
3
4
5
6
<div class="row">
  <div class="small-3 columns"></div>
  <div class="small-9 columns"></div>
</div>
 
<button type="button" class="primary button">Primary</button>

UIkit

JavaScript

<div class="uk-grid"> <div class="uk-width-1-2"></div> <div class="uk-width-1-2"></div> </div> <button class="uk-button uk-button-primary" type="button">Primary</button>

1
2
3
4
5
6
<div class="uk-grid">
    <div class="uk-width-1-2"></div>
    <div class="uk-width-1-2"></div>
</div>
 
<button class="uk-button uk-button-primary" type="button">Primary</button>

Pure

JavaScript

<div class="pure-g"> <div class="pure-u-1-2"></div> <div class="pure-u-1-2"></div> </div> <button class="pure-button pure-button-primary">A Primary Button</button>

1
2
3
4
5
6
<div class="pure-g">
    <div class="pure-u-1-2"></div>
    <div class="pure-u-1-2"></div>
</div>
 
<button class="pure-button pure-button-primary">A Primary Button</button>

透过地方的相持统意气风发,我们应该早已发掘了这个框架的命名攻略的比不上。不可以还是不可以认,Bootstrap 的命名最卓越。

事情未发生前在网络来看有人商酌关于框架的易用性,有些许人会说 Bootstrap 的类名太长,但是通过上边多少个框架的对待,Bootstrap 的类并不麻烦,並且用预微电脑编写框架时嵌套会相比灵活。

Semantic 的类名最简洁明了,通过两个定语的修饰组成一句话,确实很有意思。不过过多的修饰类在编辑框架时会稍显凌乱,有利有弊,等量齐观吧。

Foundation 的栅格应该是最充足的,计谋上好像 Bootstrap,只是对公私属性举行了拆分,我们也足以看看在那之中的求实细节。

UIkit 和 Pure 的政策相似,都加了前缀以界别其余框架,可是很理解类名过于冗长了。我在编排框架时也这么想过,不过最后遗弃了这种艺术。

2017 年 20 个精品的极简 CSS 框架

2017/07/10 · CSS · 框架

原稿出处: HENRI WIJAYA   译文出处:IT程序狮   

图片 7

随意在付加物设计,依旧在研发上,极简主义的施用几乎无处不在。假若您和本身同样爱怜极简主义,那么本文分享的剧情,一定是您的“菜”。在篇章中,大家将与我们共享20 个一级的极简 CSS 框架,它们可感到您提供建站必备的组件,辅助你节省时间。Have Fun!


JavaScript 品质优化的小知识计算

2017/12/04 · JavaScript · 1 评论 · 脾性优化

原稿出处: 静逸   

PostCSS不是何许

  • 就算表面上它看起来是三个预微机,其实它不是一个预微处理机
  • 即使表面上它看起来是一个后Computer,其实它亦非一个后计算机
  • 纵然它能够推动、补助以后的语法,其实它不是今后语法
  • 就算它能够提供清理、优化代码那样的效果,其实它不是理清、优化代码的工具
  • 它不是其它意气风发件专业,那也意味者它潜在的能量Infiniti,你能够依据本人的内需安插你供给的作用

总括一下

好吧,急速将地点的从头到尾的经过做个小结:

  • 试着在CodePen或Prepros中使用PostCSS
  • CodePen中提供了PostCSS十二个插件
  • 在CodePen中的CSS面板中激活PostCSS插件,然后经过引进@平整,就足以选择一定的PostCSS插件
  • Prepros提供了Autoprefixer和cssnext插件
  • 在Prepros中式茶食击项目中其余CSS文件可以设置PostCSS给Prepros提供的PostCSS插件

打赏帮忙本人写出越来越多好随笔,感激!

图片 8

1 赞 3 收藏 评论

2. Layers

图片 9

Layers CSS是二个针对实例的 CSS 框架。它具有轻量级、零注重等特点。

项目地址:【传送门】

制止不当应注意的地点

1、每条语句末尾须加分号

在if语句中,就算条件表明式唯有一条语句也要用{}把它括起来,避防持续假若增多了讲话之后招致逻辑错误

2、使用+号时需谨严

JavaScript 和别的编程语言差别的是,在 JavaScript 中,’+’除了表示数字值相加,字符串相连接以外,还足以作一元运算符用,把字符串转换为数字。由此借使使用不当,则可能与自增符’++’混淆而引起总计错误

var valueA = 20; var valueB = "10"; alert(valueA + valueB); //ouput: 2010 alert(valueA + (+valueB)); //output: 30 alert(valueA + +valueB); //output:30 alert(valueA ++ valueB); //Compile error

1
2
3
4
5
6
       var valueA = 20;
        var valueB = "10";
        alert(valueA + valueB);     //ouput: 2010
        alert(valueA + (+valueB));  //output: 30
        alert(valueA + +valueB);    //output:30
        alert(valueA ++ valueB);     //Compile error

3、使用return语句需求注意

一条有再次来到值的return语句并不是用(卡塔尔括号来括住再次来到值,假若回到表达式,则表明式应与return关键字在相符行,以幸免压缩时,压缩工具自动加分号而变成重返与开垦人士不均等的结果

function F1() { var valueA = 1; var valueB = 2; return valueA + valueB; } function F2() { var valueA = 1; var valueB = 2; return valueA + valueB; } alert(F1()); //output: 3 alert(F2()); //ouput: undefined

1
2
3
4
5
6
7
8
9
10
11
12
13
       function F1() {
            var valueA = 1;
            var valueB = 2;
            return valueA + valueB;
        }
        function F2() {
            var valueA = 1;
            var valueB = 2;
            return
            valueA + valueB;
        }
        alert(F1());  //output: 3
        alert(F2());  //ouput: undefined

是哪些让PostCSS变得极度

PostCSS是大器晚成种楚河汉界的编写CSS的措施。前端将其陈述为”PostCSS是生机勃勃把Switzerland军刀”,那是一个截然适用的叙说。

接下去,让我们看看PostCSS有怎样特别之处。

下生龙活虎节:集成职分

CodePen和Prepros能够透过安装启用PostCSS插件。可是不利的一面是,你不能决定动用哪个插件。

当您思量选取PostCSS越来越多你想要的插件时,能够经过铺排自个儿接纳的插件。最轻便的主意是透过gulp或grunt设置须求的PostCSS插件任务,并且让其跑起来。

在下焕发青大年中,你将可学习到如何在Glup或Grunt中配备PostCSS插件任何,何况让其跑起来为你所用。感兴趣的同室,应接持续关怀接下去的剧情。(^_^)。

1 赞 1 收藏 评论

图片 10

关于 CSS 预微机

CSS 预微处理器早就不是何许新鲜事,可是真正能够在专业中运用的人有微微呢?熟稔使用预微型机天性的人又有多少啊?

自己前面职业的时候也未有用预微处理机,因为不用,所以也发掘不到预微机的便宜。主借使感觉麻烦,因为要使用编写翻译器编写翻译一下,还比不上直接写 CSS 方便。不过在类型珍重的时候就发掘到预微处理器的受益。后来在多少个项目中品尝了预微机,但是对于模块化的写法不太显眼。预微型机作为工具,能够达成模块化编写 CSS,那么应该什么分割模块?别的,预微型机有成都百货上千本性,可是超级多人刚开端只用到变量和嵌套,其余的特点大致相当少用到。小编信赖在自个儿出手完毕二个轻量级框架的经过中,大家能够对预微处理器有三个统筹的问询。

日前风行的预微处理机有 Less,Sass,Stylus 八个,采纳哪位完全都以看自身的习于旧贯。小编最起头因为 Bootstrap 通晓的 Less,不过因为习贯选取了 Sass,其次 Sass 的成效要更全面一些。

不管工作或许友好写项目,都要搭建两个种类条件,也正是设置大器晚成层层的 npm 包。比相当流行耨刀耕的开垦格局,使用工具开采的最早希图进度稍显麻烦,不过如若蒙受建好,中期的费用将会耳濡目染。

Miligram 那几个轻量级框架在 Github 上有异常高名气,不过说真的,用场并超级小。然而那么些框架的塑造情势非常值得学习。即使CSS 对于众两个人俩说一点也不细略,不过真要去写一个框架,照旧这一个讨厌,那时候就必要前车可鉴一些美貌的框架。

编纂框架大概会用到的 npm 如下:

JavaScript

--autoprefixer --node-sass --npm-run-all --rimraf --onchange

1
2
3
4
5
--autoprefixer
--node-sass
--npm-run-all
--rimraf
--onchange

实则最要紧的便是三个 node-sass,别的的都是帮忙 CSS 文件的变迁改正,大家感兴趣的话能够去 npm 官方网址找出这么些插件,理解实际用法,如有不懂能够给自身留言,笔者就不啰嗦了。

18. Penguin

图片 11

Penguin 是三个由 Sass 营造的轻量级、可扩充的前端框架,用于运转任何项目。

品类地址:【传送门】

选用常量

  • 重复值:任何在多处用到的值都应有抽出为三个常量
  • 客商分界面字符串:任何用于显示给客商的字符串,都应有抽出出来以利于国际化
  • URLs:在Web应用中,财富职责相当的轻松改动,所以推举用二个国有地点存放全数的U科雷傲L
  • 大肆或许会改正的值:每当你用到字面量值的时候,你都要问一下协和这一个值在今后是否会变动,假诺答案是“是”,那么这么些值就活该被提抽取来作为三个常量。

PostCSS不是贰个清理/优化学工业具

Autoprefixer插件成功的产生了贵胄对PostCSS的三个科学普及思想:PostCSS是用来清理CSS、优化速度和管理跨浏览器包容性。直到前几天,作者上学了PostCSS大量的插件,作者有了和睦的观点。

精确,有超多奇秒的插件提供了清理和优化代码画能,但那也仅是PostCSS一小部分。

在Prepros中使用PostCSS

Prepros中大概未有像CodePen中那么多插件可使用,但它回顾了Autoprefixercssnext插件,能够在Prepros面板中当选,进而激活对应的PostCSS插件。你可以点击此地下载Prepros。

展开Prepros面板,能够将品种拖到面板中,而且这一个面板满含一个CSS文件。然后点击CSS文件,将会在侧面张开四个设置面板。在此个面板中您能够看出Prepros扶助的PostCSS插件,你能够选取你想用的PostCSS插件。譬如说你选用Autoprefixercssnext意味着您使用了PostCSS那多少个插件。

图片 12

如上海教室所示,你今后能够运用cssnext插件的全数机能以至Autoprefixed插件功效。

编排轻量级框架

好不轻易到了本篇作品的中央。

简轻易单介绍一下,作者给本人编写的框架取名 Snack,原意“零食”,首要表明轻便之意。即使是轻量级框架,但作者并不想拿轻量级做为噱头,毕竟体积轻意味着有个别意义的缺少以致疏漏。那些框架的意义越多的是调换学习,作者思虑借鉴其余框架的可以之处,尽量简化类名,以至尝试查究一些更通用的零部件。

大多数的轻量级框架只是 CSS 框架,不涉及 JS 部分,重要用来网页的构造。作者之所以筹算本人编辑框架,是因为工作中另行的东西太多,通过框架能够很好的将那么些散装组件整合到手拉手。另一方面,写个小品种,学点新知识是意气风发件逸事。

编写制定框架是二〇一八年想做的业务,但因为时间原因,拖了十分久。写框架之初笔者曾陷入多个误区,小编筹划规划有个别相比前卫的样式,立体的按键、浮动的面板等,举个例子下图中的风格。

图片 13

唯独在相对续续编写框架的过程中,小编逐步找到了趋势,上图的样式只是大器晚成种四肢,编写框架之初不应有把首要放在此上头。当然,好的 UI 设计也是框架成功的后生可畏部分。

14. Workless

图片 14

成立更加快 Web 应用程序的开源 HTML, CSS 与 JS 框架。

类型地址:【传送门】

行使事件代理

别的能够冒泡的事件都不但能够在事变目的上扩充拍卖,目的的此外祖先节点上也能管理,使用这些知识就能够将事件管理程序附加到更加高的地点担当两个指标的事件管理,相符,对于内容动态扩充而且子节点都亟待平等的事件管理函数的意况,能够把事件注册涉嫌父节点上,那样就无需为种种子节点注册事件监听了。此外,现存的js库都利用observe方式来创造事件监听,其贯彻上隔离了dom对象和事件处理函数之间的轮回引用,所以理应尽或然利用这种方式来创设事件监听

PostCSS库不会绑定到二个Computer上

即使过去她们只怕平素利用Stylus、Sass或LESS来编排一个库,但大家也先河见到有人由此PostCSS来创立整个库。

例如,Cory Simmons眼看应用Stylus和Sass编写了一个网格系统,他的客商群众体育只对应运用Stylus和Sass的顾客。随后她选用PostCSS移植了那些网格系统,这也意味今后各个人都能够选择了,包手Stylus、Sass客商,以至是运用LESS或不选择别的预微处理器的人。

CodePen用法的例证

让多们看看哪些在CodePen中接收PostCSS的插件cssnext示例。

在CSS面板最上端,加多你想要的cssnext插件代码:

@use cssnext;

1
@use cssnext;

有了这条代码,你将能够利用cssnext官网上陈述的有所职能特色。比方,大家使用CSS的变量和函数给body安装叁个background颜色。

首先,使用:root定义CSS变量。在CSS面板中增多像下边这样的代码:

:root { --body_bg_color: black; }

1
2
3
:root {
  --body_bg_color: black;
}

能够像上边包车型地铁代码那样调用CSS的变量:

body { background: var(--body_bg_color); }

1
2
3
body {
  background: var(--body_bg_color);
}

当时你应当看见了预览面板上的背景颜色造成了black。你也得以点击CSS面板右上角的”View Compiled“开关见到变化的代码:

图片 15

接下去,倘诺大家想让背景颜色不借使全紫色,想变亮一点。我们得以应用今后的语法改过颜色。

在地点表明的CSS变量中,改进--body_bg_color变量值,从black变成:

--body_bg_color: color(black lightness(20%));

1
--body_bg_color: color(black lightness(20%));

那是一个lightness()函数,在black水彩上调20%的亮度,那时候你可以看看背景颜色从灰绿形成了深青白。

图片 16

能够在CodePen以这种办法利用此外帮忙的PostCSS插件:

  • 通过@平整引进你想要的施用的PostCSS插件
  • 听大人说插件的命令在CSS面板中使用(在上头你能找到呼应插件使用验证的链接地址卡塔尔(قطر‎

上边就是大家前边在CodePen中使用PostCSS获得的末尾效果:

链接地址

模块划分

编辑框架的第一步正是要明确框架应该包涵怎么着模块。因为是轻量级框架,所以模块明确未有轻重级框架那么完美,只有基本的片段构件。通过比较一些轻量级框架以至职业总计,大约常用的模块富含栅格、媒体、开关、排版、表单、表格、面板以致帮衬理工科程师具。

在常用的那多少个零部件中,需求器重关心的是栅格、表单及面板,媒体组件也很关键,不过自由发挥的空中十分的小,笔者向来用了 Bootstrap 的媒体组件。

16. Kouto swiss

图片 17

留意于 Stylus 的全部 CSS 框架。它的灵感源自流行的预管理工科具库,例如nib、compass、bourbon.

品种地址:【传送门】

利用DocumentFragment优化多次append

假使须要修正DOM,请寻思动用文书档案碎片来营造DOM构造,然后再将其增添到现成的文书档案中。

for (var i = 0; i<1000;i++ 卡塔尔 { var el = document.createElement('p'卡塔尔(قطر‎; el.innerHTML = i; document.body.appendChild(el卡塔尔国; } //能够轮流为: var frag = document.createDocumentFragment(卡塔尔(英语:State of Qatar); for (var i = 0; i<1000;i++ 卡塔尔国 { var el = document.createElement('p'卡塔尔(英语:State of Qatar); el.innerHTML = i; frag.appendChild(el卡塔尔; } document.body.appendChild(frag卡塔尔(قطر‎;

1
2
3
4
5
6
7
8
9
10
11
12
13
for (var i = 0; i<1000;i++ ) {
            var el = document.createElement('p');
            el.innerHTML = i;
            document.body.appendChild(el);
        }
        //可以替换为:
        var frag = document.createDocumentFragment();
        for (var i = 0; i<1000;i++ ) {
            var el = document.createElement('p');
            el.innerHTML = i;
            frag.appendChild(el);
        }
        document.body.appendChild(frag);

你能够像使用CSS相同接收PostCSS

大部PostCSS插件不必要使用自定义的语法,其实它便是第一级的预微电脑。相反,它们得以选拔常规的CSS语法。那也象征,你能够行使PostCSS就好像使用CSS相近。比方说,你要变成叁个前端框架,你完全还可以别人项目中的文件,举个例子Normalize.css文件。

那也表示,你无需固定使用一个新鲜的预微处理器,比如说Stylus、Sass或LESS,因为您总是能够使用PostCSS编写翻译后的CSS。举个例子,你使用Sass编写的Foundation,完全能够利用PostCSS的优化和前景语法的插件生成新的CSS文件。

辅助类

支持类是一各种各样类的组合,比方字号大小、颜色值、padding、margin 以致左右浮动等。在部分 Bootstrap 搭建的后台管理系列中进一层见惯司空,这样构造起来就能够比较灵活。以下是一个边框的有倾囊相助类。

JavaScript

.border-left-right { border-left: 1px solid #eee; border-right: 1px solid #eee; } .border-top-bottom { border-top: 1px solid #eee; border-bottom: 1px solid #eee; } .border-left { border-left: 1px solid #eee; } .border-right { border-right: 1px solid #eee; } .border-top { border-top: 1px solid #eee; } .border-bottom { border-bottom: 1px solid #eee; }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
.border-left-right {
  border-left: 1px solid #eee;
  border-right: 1px solid #eee;
}
.border-top-bottom {
  border-top: 1px solid #eee;
  border-bottom: 1px solid #eee;
}
.border-left {
  border-left: 1px solid #eee;
}
.border-right {
  border-right: 1px solid #eee;
}
.border-top {
  border-top: 1px solid #eee;
}
.border-bottom {
  border-bottom: 1px solid #eee;
}

关于援助类的详细内容能够翻阅那篇小说《什么编写通用的 Helper Class》

11. Core CSS

图片 18

那是一个构建轻量级响应式网址的前端框架,它从不放置预设成分和卡通,只提供了三个超轻松的网格体系– 即它的列是生成的,行是 self-clearing,而分界点则是按逻辑均匀的遍及。你能够依据想要的做事措施,实行定制与行使。

花色地址:【传送门】

制止string的隐式装箱

对string的方式调用,譬如’xxx’.length,浏览器博览会开叁个隐式的装箱操作,将字符串先调换来二个String对象。推荐对申明有望应用String实例方法的字符串时,选拔如下写法:

var myString = new String(‘Hello World’);

模块化

一面,PostCSS具有很可用的插件,你能够依赖自身所需尽量使用多的取舍或尽可能少选用。

设若仅想用PostCSS让CSS是更有效能和让浏览器更慈善的话,加载一些优化插件,你就能够闪人了。

假诺仅想用POstCSS作为预微处理机的话,使用部分语言扩大插件就OK。

PostCSS的基本原理是粒子化,模块化。显而易见,未有拍卖八个效果与利益的笨重插件。相反,每创立一个插件,正是四个效能。

诸如,你能够依照自个儿和煦喜好的语法做取舍和创制和煦或自定义本人的预微处理机。也许,你能够加载PerCSS包,能够活动访谈多少个语言的扩大插件。

无论是你是想行使PostCSS什么效劳,你都只供给依照你协和一定目定安装所需的插件。意思乃是,你无需设置其余依据的插件。

至于小编:叙帝利

图片 19

每叁回接纳都必须是一回超过,否则就绝不选用;每三次扬弃都必需是叁回升高,不然就不用废弃。 个人主页 · 作者的篇章 · 16 ·    

图片 20

7. Wing

图片 21

八个基于极简主义设计意见的地道的 CSS 框架。

种类地址:【传送门】

质量方面包车型客车注意事项

1、尽量利用原生方法

2、switch语句相对if不慢

经过将case语句遵照最恐怕到最不容许的各样实行公司

3、位运算非常的慢

当举行数字运算时,位运算操作要比其余布尔运算可能算数运算快

4、巧用||和&&布尔运算符

function eventHandler(e) { if (!e卡塔尔(英语:State of Qatar) e = window.event; } //能够替换为: function eventHandler(e卡塔尔 { e = e || window.event; }

1
2
3
4
5
6
7
       function eventHandler(e) {
            if (!e) e = window.event;
        }
        //可以替换为:
        function eventHandler(e) {
            e = e || window.event;
        }

if (myobj卡塔尔 { doSomething(myobj卡塔尔(英语:State of Qatar); } //能够替换为: myobj && doSomething(myobj卡塔尔;

1
2
3
4
5
       if (myobj) {
            doSomething(myobj);
        }
        //可以替换为:
        myobj && doSomething(myobj);

总来讲之

PostCSS是什么样?最佳的定义来自于PostCSS自己项目在github上的描述:

“PostCSS is a tool for transforming CSS with JS plugins. These plugins can support variables and mixins, transpile future CSS syntax, inline images, and more.

简易,PostCSS是CSS产生JavaScript的多少,使它产生可操作。PostCSS是基于JavaScript插件,然后施行代码操作。PostCSS本人并不会转移CSS,它只是豆蔻年华种插件,为进行其它的生成扫除障碍。

实质上是从未很制PostCSS插件操纵CSS,也正是说它可以适用于别的CSS。只要你能想到的,你都得以编写制定八个PostCSS插件,让它来转成CSS。

PostCSS插件能够像预微型机,它们可以优化和autoprefix代码;能够加上今后语法;能够加上变量和逻辑;能够提供整机的网格系统;能够提供编码的急速形式……还会有比比较多众多。

怎么样编写轻量级 CSS 框架

2017/08/08 · CSS · CSS

正文小编: 伯乐在线 - 叙帝利 。未经作者许可,禁绝转发!
款待出席伯乐在线 专栏编辑者。

图片 22

Github:

Demo: 

13. Scooter

图片 23

瞩目为 Dropbox 提供底蕴样式、CSS 组件以致便捷静态原型的 SCSS 框架。

花色地址:【传送门】

巡回援引

若果循环引用中包含DOM对象或然ActiveX对象,那么就能发出内部存款和储蓄器走漏。内部存储器走漏的结果是在浏览器关闭前,尽管是刷新页面,那有些内部存款和储蓄器不会被浏览器释放。

粗略的轮回引用:

var el = document.getElementById('MyElement'); var func = function () { //… } el.func = func; func.element = el;

1
2
3
4
5
6
       var el = document.getElementById('MyElement');
        var func = function () {
            //…
        }
        el.func = func;
        func.element = el;

只是普通不会现出这种情形。日常循环援引产生在为dom成分增多闭包作为expendo的时候。

function init() { var el = document.getElementById('MyElement'); el.onclick = function () { //…… } } init();

1
2
3
4
5
6
7
       function init() {
            var el = document.getElementById('MyElement');
            el.onclick = function () {
                //……
            }
        }
        init();

init在实施的时候,当前上下文大家称为context。那个时候,context援引了el,el引用了function,function援用了context。当时造成了多少个生生不息援用。

上边2种方式能够缓慢解决循环援引:

1) 置空dom对象

function init(卡塔尔(英语:State of Qatar) { var el = document.getElementById('MyElement'卡塔尔(قطر‎; el.onclick = function (卡塔尔(قطر‎ { //…… } } init(卡塔尔; //能够交替为: function init(卡塔尔国 { var el = document.getElementById('MyElement'卡塔尔(英语:State of Qatar); el.onclick = function (卡塔尔 { //…… } el = null; } init(卡塔尔;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
      function init() {
            var el = document.getElementById('MyElement');
            el.onclick = function () {
                //……
            }
        }
        init();
        //可以替换为:
        function init() {
            var el = document.getElementById('MyElement');
            el.onclick = function () {
                //……
            }
            el = null;
        }
        init();

将el置空,context中不分包对dom对象的援用,进而打断循环使用。

假如我们须求将dom对象回来,能够用如下方法:

function init(卡塔尔(英语:State of Qatar) { var el = document.getElementById('MyElement'卡塔尔(英语:State of Qatar); el.onclick = function (卡塔尔(قطر‎ { //…… } return el; } init(卡塔尔; //能够替换为: function init(卡塔尔国 { var el = document.getElementById('MyElement'卡塔尔(英语:State of Qatar); el.onclick = function (卡塔尔国 { //…… } try { return el; } finally { el = null; } } init(卡塔尔(英语:State of Qatar);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
       function init() {
            var el = document.getElementById('MyElement');
            el.onclick = function () {
                //……
            }
            return el;
        }
        init();
        //可以替换为:
        function init() {
            var el = document.getElementById('MyElement');
            el.onclick = function () {
                //……
            }
            try {
                return el;
            } finally {
                el = null;
            }
        }
        init();

2) 布局新的context

function init(卡塔尔(قطر‎ { var el = document.getElementById('MyElement'); el.onclick = function (卡塔尔(英语:State of Qatar) { //…… } } init(卡塔尔; //能够轮换为: function elClickHandler(卡塔尔 { //…… } function init(卡塔尔国 { var el = document.getElementById('MyElement'卡塔尔; el.onclick = elClickHandler; } init(卡塔尔(قطر‎;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
       function init() {
            var el = document.getElementById('MyElement');
            el.onclick = function () {
                //……
            }
        }
        init();
        //可以替换为:
        function elClickHandler() {
            //……
        }
        function init() {
            var el = document.getElementById('MyElement');
            el.onclick = elClickHandler;
        }
        init();

把function抽到新的context中,那样,function的context就不包蕴对el的援引,进而打断循环援用。

它的插件生态系统提供不一样的功用

像PostCSS本人雷同令人作呕的是,它有无数莫衷一是的插件,那也是让PostCSS发光之处。当您看见PostCSS在GitHub上的可用插件列表,你会开掘其抱有五光十色的效果。

这个插件允许你利用新语法、颜色函数、conic-gradient、自定义属性、自定义选择器、媒体询问的小名以致更加多。

再有备用插件来创立守旧的语法,比方将十八制颜色换到rgba()颜色、给IE8的opacity增多滤镜,给IE8推出伪成分选用器,快捷将px转换成rem等等。

还能扩张插件,包涵丰硕变量、mixin、条件、循环、BEM和SUIT类名等等。

选料颜色的治本插件,允许颜色从意气风发种格式转变来另大器晚成种格式,校订颜色的阿尔法值,结合色彩,生成更和煦的配色方案等等。

有网格系统,优化学工业具,缩写以至剖判报告的插件等等。

如今插件不断的愈发多,这里我法后生可畏生龙活虎罗列出来,如若感兴趣,能够细心阅读那个插件列表。

本文由云顶娱乐发布,转载请注明来源:什么编写轻量级,个拔尖的极简