三个以最佳的方式管理浏览器前缀的后管理程序

Autoprefixer:一个以最棒的主意处理浏览器前缀的后管理程序

2014/08/26 · 三个以最佳的方式管理浏览器前缀的后管理程序,居中并裁剪图片。CSS · CSS

初稿出处: css-tricks   译文出处:三桂   

Autoprefixer拆解解析CSS文件同有毛病候拉长浏览器前缀到CSS准则里,使用Can I Use的多寡来决定怎样前缀是索要的。

有着你须要做的就是把它加多到你的财富营造工具(比方 Grunt卡塔尔而且能够完全忘记有CSS前缀那东西。固然依据最新的W3C标准来平时书写你的CSS而不要求浏览器前缀。像这么:

CSS

a{ transition :transform 1s }

1
2
3
a{
     transition :transform 1s
}

Autoprefixer使用三个数据库依据当前浏览器的普及度以致品质支持提必要您前缀:

CSS

a{ -webkit-transition :-webkit-transform 1s; transition :-ms-transform 1s; transition :transform 1s }

1
2
3
4
5
a{
     -webkit-transition :-webkit-transform 1s;
     transition :-ms-transform 1s;
     transition :transform 1s
}

问题

 

本来大家能够手写浏览器前缀,然而那显得干瘪以致易错。

我们也足以动用相似Prefixr诸如此比的劳务以至编辑器插件,但那依旧乏于跟一批重复的代码打交道。

大家能够运用象Compass之于Sass以及nib之于Stylus之类的预微机提供的mixin库。它们能够化解绝超过五成主题材料,但同一时间又引入了其余标题。

它们强制大家选用新的语法。它们迭代慢于现代浏览器,所以当稳定版发表时会发生不少不必要的前缀,一时我们必要创立和煦的mixins。

Compass实际上并未为您屏蔽前缀,因为您如故亟待调控多数难点,比如:作者急需为 border-radius 写三个mixin吗?小编需求用逗号分割 +transition 的参数吗?

Lea Verou的-prefix-free大概消除了那一个主题材料,不过使用顾客端库并不是个好注意,当你把最后顾客品质思谋进去的话。为了防患未然屡屡做相像的事体,最佳是在财富创设恐怕项目揭穿时再创设壹遍CSS。

揭秘

Autoprefixer是一个后管理程序,不象Sass以至Stylus之类的预微电脑。它适用于平日性的CSS而不应用一定的语法。能够轻巧跟Sass以至Stylus集成,由于它在CSS编写翻译后运维。

Autoprefixer基于Rework,二个得以用来编排你协调的CSS后管理程序的框架。Rework深入深入分析CSS成有用Javascript结构经过你的处理后导回给CSS。

Autoprefixer的每种版本都包蕴大器晚成份最新的 Can I Use 数据:

  • 一时一刻浏览器列表以致它们的普遍度。
  • 新CSS属性,值和甄选器前缀列表。

Autoprefixer暗许将支撑主流浏览器近来2个版本,那一点类似Google。可是你能够在大团结的花色中经过名称可能方式张开精选:

  • 主流浏览器这段日子2个本子用“last 2 versions”;
  • 五洲计算有超越1%的使用率使用“>1%”;
  • 仅新本子用“ff>20”或”ff>=20″.

然后Autoprefixer总结哪些前缀是索要的,哪些是早已晚点的。

当Autoprefixer增多前缀到您的CSS,还不会遗忘修复语法出入。这种办法,CSS是基于最新W3C标准发生:

CSS

a { background : linear-gradient(to top, black, white); display : flex } ::placeholder { color : #ccc }

1
2
3
4
5
6
7
a {
     background : linear-gradient(to top, black, white);
     display : flex
}
::placeholder {
     color : #ccc
}

编译成:

CSS

a { background : -webkit-linear-gradient(bottom, black, white); background : linear-gradient(to top, black, white); display : -webkit-box; display : -webkit-flex; display : -moz-box; display : -ms-flexbox; display : flex } :-ms-input-placeholder { color : #ccc } ::-moz-placeholder { color : #ccc } ::-webkit-input-placeholder { color : #ccc } ::placeholder { color : #ccc }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
a {
    background : -webkit-linear-gradient(bottom, black, white);
    background : linear-gradient(to top, black, white);
    display : -webkit-box;
    display : -webkit-flex;
    display : -moz-box;
    display : -ms-flexbox;
    display : flex
}
:-ms-input-placeholder {
    color : #ccc
}
::-moz-placeholder {
    color : #ccc
}
::-webkit-input-placeholder {
    color : #ccc
}
::placeholder {
    color : #ccc
}

Autoprefixer 同样会清理超时的前缀(来自遗留的代码或近乎 Bootstrap CSS库卡塔尔国,由此下边包车型地铁代码:

CSS

a { -webkit-border-radius : 5px; border-radius : 5px }

1
2
3
4
a {
    -webkit-border-radius : 5px;
    border-radius : 5px
}

编译成:

CSS

a { border-radius : 5px }

1
2
3
a {
    border-radius : 5px
}

因为通过Autoprefixer管理,CSS将仅蕴含实际的浏览器前缀。Fotorama从Compass切换到Autoprefixer之后,CSS大小减少了将近20%。

演示

只要您还未用过其余工具来自动化营造你的静态能源,必供给尝尝下Grunt,作者生硬推荐你起来运用营造筑工程具。那将翻开您任何语法糖世界,高效的mixin库以致实用的图形管理工具。全体开拓者的便捷方法用来节省大批量如日方升以致时光(自由选取语言,代码性格很顽强在艰难险阻或巨大压力面前不屈用,使用第三方库的才干卡塔尔现将都适用于前端开拓人士。

让大家成立叁个连串目录以致在style.css中写些轻便的CSS:

style.css

{ }

在此个事例中,大家将动用Grunt。首先要求利用npm安装 grunt-autoprefixer :

npm install grunt-cli grunt-contrib-watch grunt-autoprefixer

下一场大家须求创建 Gruntfile.js 文件以致启用Autoprefixer:

JavaScript

Gruntfile.js module.exports = function (grunt) { grunt .initConfig ({ autoprefixer : { dist : { files : { 'build/style.css' : 'style.css' } } }, watch : { styles : { files : ['style.css' ], tasks : ['autoprefixer' ] } } }); grunt.loadNpmTasks('grunt-autoprefixer' ); grunt.loadNpmTasks('grunt-contrib-watch' );};

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Gruntfile.js
module.exports = function (grunt) {
     grunt .initConfig ({
          autoprefixer : {
               dist : {
                    files : { 'build/style.css' : 'style.css' } } },
                    watch : {
                         styles : {
                              files : ['style.css' ],
                              tasks : ['autoprefixer' ]
                         }
                    }
               });
grunt.loadNpmTasks('grunt-autoprefixer' );
grunt.loadNpmTasks('grunt-contrib-watch' );};

此布局文件能够让Autoprefixer编写翻译 style.css 到 build/style.css. 雷同大家将用 grunt-contrib-watch``来监听style.css文件变化再也编写翻译build/style.css。

启用Grunt的Watch功能:

./node_modules/.bin/grunt watch

近年来我们增添叁个CSS3说明式到style.css并保留:

style.css

JavaScript

a { width : calc(50% - 2em) }

1
2
3
a {
     width : calc(50% - 2em)
}

接下去是见证神跡的每29日,以往小编有了build/style.css文件,Grunt监测到style.css文件发生变化并启用Autoprefixer任务。

Autoprefixer发现了calc() 值单元供给Safari 6的浏览器前缀。

build/style.css

CSS

a { width : -webkit-calc(50% - 2em); width : calc(50% - 2em) }

1
2
3
4
a {
     width : -webkit-calc(50% - 2em);
     width : calc(50% - 2em)
}

我们再添增加一小点复杂的CSS3到style.css并保存:

style.css

CSS

a { width : calc(50% - 2em); transition : transform 1s }

1
2
3
4
a {
     width : calc(50% - 2em);
     transition : transform 1s
}

Autoprefixer已知Chrome,Safari 6以及Opera 15需要为transitiontransform 添加前缀。但IE9也急需为transform增添前缀,作为transition的值。

build/style.css

CSS

a { width : -webkit-calc(1% + 1em); width : calc(1% + 1em); -webkit-transition : -webkit-transform 1s; transition : -ms-transform 1s; transition : transform 1s }

1
2
3
4
5
6
7
a {
     width : -webkit-calc(1% + 1em);
     width : calc(1% + 1em);
     -webkit-transition : -webkit-transform 1s;
     transition : -ms-transform 1s;
     transition : transform 1s
}

Autoprefixer为成功你有所脏活而规划。它会依附Can I Use数据库,写入全部供给的前缀并且相通清楚标准之间的区分,招待来于今的CSS3 – 不再有浏览器前缀!

下一步?

1、Autoprefixer支持Ruby on Rails,Middleman,Mincer,Grunt,Sublime Text。了然越来越多关于怎样在你的情形中动用的文档。

2、假诺您的条件还不扶植Autoprefixer,请报告给自身。

3、关注@autoprefixer获得立异以致新性子消息。

赞 收藏 评论

云顶娱乐官方网站 1

浅谈 CSS 预微型机(风姿洒脱卡塔 尔(阿拉伯语:قطر‎:为啥要接收预微处理器?

2017/01/22 · CSS · 预微处理器

正文小编: 伯乐在线 - CSS魔法 。未经作者许可,防止转发!
应接参加伯乐在线 专辑撰稿人。

前言

您好,我是法力哥。笔者是一名守旧的前端开垦者,笔者的非常大片段干活正是为各类别型的网页写 CSS,写了相当多年。

本人从八年前早先接触并使用 CSS 预管理,锦上添花,相知恨晚。因而,小编倍感有须要写些作品来总结一下那上头的体会。假如您是壹个人还从未接触预微处理机的 CSS 开采者,希望本身的稿子能够扶持您轻轻巧松启幕!

(注:本文的亲自去做代码均运用 Stylus 作为 CSS 预管理语言。卡塔 尔(阿拉伯语:قطر‎

浅谈 JavaScript 管理树形结构的多少个场景与方案

2015/06/18 · CSS · 树形结构

初稿出处: 工业聚(@工业聚)   

前面一个组件化开垦实践

2015/07/12 · CSS, HTML5, JavaScript · 组件化

原稿出处: 美团技巧博客 - spring   

用后生可畏行 CSS 居中并裁剪图片

2015/07/20 · CSS · CSS

本文由 伯乐在线 - 周进林 翻译,黄利民 校稿。未经许可,禁绝转载!
波兰语出处:medium.com。接待参预翻译组。

设置图片的剪裁尺寸特别轻松,你只需在 CSS 里使用这行代码:

CSS

img { object-fit: cover; }

1
2
3
img {
     object-fit: cover;
}

正是如此。无需语义、包装 div 抑或别的没意义的代码。

这种手艺能很好地把大小不合适的头像图片裁剪为长方形只怕圆形的图片。以上面这只熊的宽图片来比喻。风华正茂旦把 object-fit:cover 工夫利用在这里种图片上,并且安装好,图片本人就能进展裁剪和居中。

云顶娱乐官方网站 2

object-fit:cover 的剪裁情势和 background-size:cover 的完全相近,可是它是用来为 imgsvideos 和其他的传媒标签设置样式的,实际不是给背景图片设置样式。

4118.com云顶集团,超多的新颖浏览器都帮助 object-fit 技术,何况还应该有 polyfill 项目令你能在更老的浏览器(IE8+卡塔 尔(英语:State of Qatar)里接受该才能。

object-fit 的其它属性感兴趣?来品尝一下。

1 赞 2 收藏 评论

背景

CSS 自诞生以来,基本语法和着力机制一贯未有实质上的更换,它的发展差不离全部都以表现力层面上的进级。最起初CSS 在网页中的功效只是扶助性的点缀,轻巧易学是最大的急需;但是以后网址的复杂度已经不可人己一视,原生 CSS 已经让开辟者力不胜任。

当一门语言的技术不足而客商的运维景况又不扶植任何选取的时候,那门语言就能够沦为 “编写翻译目的” 语言。开拓者将精选另一门越来越高档的语言来展开开辟,然后编写翻译到底层语言以便实际运作。

于是乎,在前端领域,天降大任于斯人也,CSS 预微电脑应际而生。而 CSS 那门古老的言语以另大器晚成种艺术 “重新适应” 了网页开拓的要求。

前言

后日,Mac 下有名软件 Homebrew 的笔者,因为没解出来二叉树翻转的白板算法题,惨被 Google否决,进而引发Facebook热议。

在 JavaScript 中也可以有好些个树形结构。比方 DOM 树,省市区地方联合浮动,文件目录等; JSON 本人正是树形结构。

广大前端面试题也跟树形结构的关于,举个例子在浏览器端写遍历 DOM 树的函数,比方在 nodejs 运行时遍历文件目录等。

云顶集团娱乐4118,此处演示用 JavaScript 遍历树形结构的三种政策。

前言

云顶娱乐官方网站,壹人微机前辈曾说过:

Controlling complexity is the essence of computer programming

1
Controlling complexity is the essence of computer programming

随着前端开垦复杂度的日渐升高,组件化开拓应际而生,并随着 FIS、React 等独具特殊的优越条件框架的现身推而广之。那意气风发进度相像爆发在美团,直面职业范围的火Cross飞和程序猿团队的持续扩充,大家历经引进组件化化解能源整合难题、稳步加强组件功效推动开辟成效、重新制作新一代组件化方案适应全栈开荒和共享一同创建等阶段,努力“controlling complexity”。本文将介绍我们组件化开荒的实行进度。

关于小编:周进林

云顶娱乐官方网站 3

茫茫大海中的朝气蓬勃枚工程师,为了进步为叁个男神人类而尽心竭力着。关切java、python、linux、vim等(新浪博客园:@酒肉和尚--进林卡塔 尔(英语:State of Qatar) 个人主页 · 作者的篇章 · 20 ·  

云顶娱乐官方网站 4

预微处理机付与大家的 “超本事”

回顾梳理一下,CSS 预微处理器为大家带给了几项关键的技巧,循规蹈矩排列如下。(不用在乎你用到了略微,无论深浅,都以收入。卡塔 尔(阿拉伯语:قطر‎

场景1:遍历 DOM 树

构件化 1.0:能源整合

在美团初期,前端财富是依据页面或许相像事情页面会集的方式张开集体的。举个例子order.js 对应订单相关页面包车型地铁相互影响,account.css 对应账户相关页面包车型客车体裁。这种方式在过去的较长生龙活虎段时间内,持续支持了整整项指标正规推动,居功至伟。

云顶娱乐官方网站 5

趁着业务规模的增添和支付集团的恢弘,那套机制逐步显示出它的一些相差:

  • 财富冗余页面包车型地铁稳步增加,人机联作的渐渐复杂化,招致对应的 css 和 js 都有相当的大进步,进而现身为了凭借有些 js 中的三个函数,必要加载整个模块,只怕为了选拔有个别 css 中的部分样式依赖整个 css,冗余资源相当多
  • 对应涉及不直观未有显然的相应准绳,招致的二个标题是校订有些业务模块的 css 也许 js 时,大约只可以信任 grep。靠人来保卫安全页面模块 html、css 和 js 之间的正视关系,轻便犯错,平常现身内容早就去除不过 css 或 js 还存在的主题材料
  • 难于单元测验以页面为最小粒度举行能源整合,分化功用的事情模块相互作用,复杂度太高,自动化测验难以推动

2012 年初叶,在科学切磋了 FIS、BEM 等方案以往,结合美团开垦框架的其实,大家开头达成了生机勃勃套轻量级的组件化开采方案。首要的改良是:

  • 以页面效果组件为单位聚合前端能源
  • 机动加载相符约定的 css、js 财富
  • 将业务数据到渲染数据的转移进度独立出来

云顶娱乐官方网站 6

譬释迦牟尼讲,美团最上端的寻找框就被完结为多个零部件。

云顶娱乐官方网站 7

代码构成:

www/component/smart-box/ ├── smart-box.js # 交互 ├── smart-box.php # 渲染数据坐褥、组件配置 ├── smart-box.scss # 样式 ├── smart-box.tpl # 内容 └── test ├── default.js # 自动化测验 └── default.php # 单测页面

1
2
3
4
5
6
7
8
www/component/smart-box/
├── smart-box.js    # 交互
├── smart-box.php   # 渲染数据生产、组件配置
├── smart-box.scss  # 样式
├── smart-box.tpl   # 内容
└── test
    ├── default.js  # 自动化测试
    └── default.php # 单测页面

调用组件变得丰盛轻便:

JavaScript

echo View::useComponent('smart-box', [ 'keyword' => $keyword ]);

1
2
3
echo View::useComponent('smart-box', [
    'keyword' => $keyword
]);

相比较以前,能够看来组件化的片段风味:

  • 按需加载只加载需要的前端财富
  • 对应涉及极度清楚组件所急需的前端财富都在长期以来目录,职分显明且唯风度翩翩,对应涉及明显
  • 轻巧测量检验组件是拥有独立表现和相互的微小单元,可应用 Phantom 等工具自动化测量检验

其余,由于前端能源聚焦进行调解,组件化也为高阶品质优化提供了半空中。比如落到实处组件级其他BigRender、通过数量剖判进行财富的合併加载等等。

本文由445云顶国际在线娱乐发布于云顶集团手机登录网站,转载请注明出处:三个以最佳的方式管理浏览器前缀的后管理程序

相关阅读