大前端的自动化工厂(2)—— SB Family
原文链接:https://bbs.huaweicloud.com/blogs/53c0c3509b7a11e89fc57ca23e93a89f
我坦白我是标题党,SB只是
SCSS-Bourbon
的简写。
一. SASS/SCSS
SASS
,也称为SCSS
,是CSS预编译语言的一种,常见的预编译语言还包括LESS
,Stylus
,除了语法风格之外它们之间没有什么太大的区别,从一种语言迁移到另一种语言只需要花半天通读一下文档就可以了。预编译语言为CSS提供了变量定义
,函数定义
,层级嵌套
等等一系列扩展功能,使开发者更容易编写和管理项目中的CSS代码。笔者使用的是SCSS/SASS
,因为相关工具库更全面一些,尽管名称偶尔会带来一些瑕疵(建议使用SCSS
)。LESS
在和Sublime
集成时有一些小问题,可能是版本问题,stylus
是新兴起的,开发生态并不完善。
二. SCSS-Bourbon Family
由于SCSS
最初使用Ruby on Rails
编写的,所以github
上提供的安装方式几乎都是通过gem install
安装的,但实际上在npm
仓库里也可以找到对应的项目。另一方面,SCSS
辅助工具库中的工具都是以_
开头的,也就是说定义mixin
的代码并不会被编译到产出的CSS
文件中,可以放心使用。
【Bourbon】是笔者非常喜欢的工具包,首先它很符合渐进式开发
的思想,每个插件只实现一个特定的功能,同时,它的所有插件都是自己开发的(ThoughtBot
在收购后维护着整个Bourbon工具链),这又保证了工具的质量。
bourbon——函数库
♒ 通过npm install -g bourbon
安装.
bourbon
已经更新至5.1.0
版本,官方文档对许多mixin
并没有提供说明,建议使用前通读一下library
目录里每一个独立的文件,其中的注释部分标明了该函数的用法。例如实用triangle( )
函数来生成一个类,使其伪类包含一个指定尺寸和方向的三角形,又或者是使用tint( )
或shade( )
方法让颜色按照半分比变亮或变暗,当然你也可以自行去扩展bourbon
的基础功能。
SCSS代码为:
@import "bourbon";
.triangle-down {
&::after{
content:'';
@include triangle("down", 2rem, 1rem, #b25c9c);
}
}
编译后的代码:
.triangle-down::after {
content: '';
border-style: solid;
height: 0;
width: 0;
border-color: #b25c9c transparent transparent;
border-width: 1rem 1rem 0;
}
纯CSS
是可以诸如六边形等很多形状的,你完全可以在网上学习它们的实现方法,然后将其编写为扩展的mixin
加入到自己的常用工具箱中。
Bitters——脚手架
♒ 通过npm install -g bourbon-bitters
安装
Bitters
是Bourbon工具家族里的脚手架,它将你的基础样式分拆为_bass , _buttons , _forms , _layout , _lists , _media , _tables , _typography , _variables 等几个不同的文件并提供一些初始样式,开发中可以将与基础模块相关的样式扩展写在这些文件中,这样的做法可以在一定程度上降低项目的维护难度。
当然你也可以直接引入normolize.css
来对项目进行样式的重置。
Neat——网格工具
♒ 通过npm install -g bourbon-neat
安装.
我们使用的第三方UI框架中,几乎都使用经典的12列布局,但总有些产品经理会提出希望将某一列的宽度扩展到1.5倍这种需求,或者有些场景下你希望对整个网页的布局进行更精细的控制,这个时候轻量级的网格工具Neat
就派上用场了,轻量,强大,易用,轻松实现网格划分,网格嵌套,响应式布局等复杂的功能。具体的使用文档可以访问其官方网站Neat官方网址查看文档。
使用示例:
下面简单的几行代码编译为CSS后,就可以实现将页面分为间距为20px的10列,左侧边栏占2列,右侧内容区占8列;然后又将右侧内容区分为间距为10px的6列,每个表格项占1列。
@import "neat";
/*定义网格*/
$sidebar-layout:(
columns: 10,
gutter: 20px
);
$list-layout: (
columns: 6,
gutter: 10px
);
/*使用网格*/
.sidebar-layout{
@include grid-container;
}
.sidebar-layout__sidebar{
@include grid-column(2,$sidebar-layout);
}
.sidebar-layout__content{
@include grid-column(8,$sidebar-layout);
}
.list-layout{
@include grid-container;
@include grid-collapse($list-layout);
}
.list-item{
@include grid-column(1, $list-layout);
}
Coolor——自动化配色工具
♒ 访问http://coolor.co
Coolor.co其实并不是Bourbon
家族的成员,但你应该会喜欢它,这是一个免费的网站(移动端是收费的),在你指定一个主题色后,它会为你返回一组漂亮的包含5个颜色的配色方案,如果不满意直接一键切换就可以了,从此冒充设计师看谁还敢拦着你~
三. CSS Evolution
随着前端构建工具的兴起,CSS
的开发也进入了一个全新的阶段,自动化构建工具(例如webpack
)带来了新的开发方式,SASS
和BEM
的年代,还只能通过限制命名规则的方式来避免CSS冲突和相互覆盖。
CSS Modules
借助构建工具实现了真正的模块化,webpack4
中在css-loader配置项中就可以直接启用CSS模块化功能,使用起来非常方便。其原理就是通过构建工具将文件中的类名直接替换为Hash来实现。
Styled Components
,实际上就是炒的火热的CSS-In-Js的一种实现。新事物总是褒贬不一的,有人说它是大势所趋,也有人说它很难用,笔者的建议是:继续观望。Styled Components
概念的兴起很有可能是React
团队的炒作行为,JSX
已经将HTML
和JS
代码放在一起编写,使用起来感觉还不错,如果又加上CSS-In-JS
, 那么相当于使用JSX
同时编写HTML+CSS+JS,你说这种鼓吹没有私心谁信?以前使用<script>
和<style>
标签把代码都写在<html>
中,你们叫嚣着"结构,样式,行为三者分离",现在大伙把代码分离了,你们又忽悠着大家把结构样式行为混在一起写到JSX
里去,细思极恐。
上图只是形象地描述了CSS
技术的进化方向,并不代表后出现的就一定更好。如果在你的项目组里通过命名规则约定就可以避免冲突,那真的没必要为了炫技或者赶潮流就去把代码全部改成CSS Modules
或者 Styled Components
的方式。
工具是为了让工作变得更轻松,而不是变得更复杂。
大前端的自动化工厂(2)—— SB Family的更多相关文章
- 大前端的自动化工厂(1)——Yeoman
一.Yeoman是什么 Yeoman是现代化前端项目的脚手架工具,用于生成包含指定框架结构的工程化目录结构.它是整个前端自动化工厂的第一站. 从个人使用者的角度来看,Yeoman的地位有些鸡肋,因为流 ...
- 大前端的自动化工厂(5)—— 基于Karma+Mocha+Chai的单元测试和接口测试
一. 前端自动化测试 大多数前端开发者对测试相关的知识是比较缺乏的,一来是开发节奏很快,来不及写,另一方面团队里也配备了"人肉测试机",完全没必要自己来.但随着项目体量的增大,许多 ...
- 大前端的自动化工厂(3)—— babel
一. 关于babel babel是ES6+语法的编译器,官方网址:www.babeljs.io,用于将旧版本浏览器无法识别的语法和特性转换成为ES5语法,使代码能够适用更多环境. 最初的babel使用 ...
- 04. Web大前端时代之:HTML5+CSS3入门系列~HTML5 表单
Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 一.input新增类型: 1.tel:输入类型用于应该包 ...
- 05. Web大前端时代之:HTML5+CSS3入门系列~H5 多媒体系
Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 1.引入 概述 音频文件或视频文件都可以看做是一个容器文 ...
- 06. Web大前端时代之:HTML5+CSS3入门系列~HTML5 画布
Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 我们先看看画布的魅力: 初始画布 canvas默认是宽3 ...
- 一统江湖的大前端(3) DOClever——你的postman有点low
<一统江湖的大前端>系列是自己的前端学习笔记,旨在介绍javascript在非网页开发领域的应用案例和发现各类好玩的js库,不定期更新.如果你对前端的理解还是写写页面绑绑事件,那你真的是有 ...
- 一统江湖的大前端(4)shell.js——穿上马甲我照样认识你
<一统江湖的大前端>系列是自己的前端学习笔记,旨在介绍javascript在非网页开发领域的应用案例和发现各类好玩的js库,不定期更新.如果你对前端的理解还是写写页面绑绑事件,那你真的是有 ...
- 一统江湖的大前端(5)editorconfig + eslint——你的代码里藏着你的优雅
<一统江湖的大前端>系列是自己的前端学习笔记,旨在介绍javascript在非网页开发领域的应用案例和发现各类好玩的js库,不定期更新.如果你对前端的理解还是写写页面绑绑事件,那你真的是有 ...
随机推荐
- P2V后,VMWare ESX 上RedHat AS5网络不通问题的解决办法
现象: 机器在启动eth0后,可以ping通eth0的IP,但是很快就无法访问了. 原因: red hat 5.x 默认系统安装完成后为xen内核,那么xen内核引导启动后就会有虚拟网卡(vethx. ...
- Flask的上下文源码剖析
先写一段Flask程序 from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return ...
- 34 文件地理数据库(GDB)变文件夹了怎么办
我们都知道文件地理数据库(GDB)是ArcGIS软件特有的格式,有其独特的设计之处,在文件资源管理器中显示为.gdb的文件夹,但是里面的文件却看不明白,而且将gdb文件夹在Windows资源管理器中直 ...
- Fence Repair POJ - 3253 (贪心)
Farmer John wants to repair a small length of the fence around the pasture. He measures the fence an ...
- unittest中忽略某些测试用例的执行
添加装饰器(@unittest.skip("")) from init import * import unittest class baidu(Info): @unittest. ...
- Android 混淆那些事儿
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/WmJyiA3fDNriw5qXuoA9MA 作者:l ...
- 解决 spring-cloud-starter-zipkin 启动错误
应用场景:Spring Boot 服务添加 Zipkin 依赖,进行服务调用的数据采集,然后进行 Zipkin-Server 服务调用追踪显示. 示例pom.xml配置: <parent> ...
- Android APK反编译:APKtool使用详解
导言:在我们安卓开发当中,我们不仅需要掌握基础的开发技能,也需要掌握软件的安全技能,这样才可以让我们的软件能够成为一款能够真正可以进行发布的软件,同时也可以让自己的核心技术不会被别人所盗取. 第一步. ...
- emWin智能家居主界面设计,含uCOS-III和FreeRTOS两个版本
第6期:智能家居主界面设计配套例子:V6-910_STemWin提高篇实验_智能家居主界面设计(uCOS-III)V6-911_STemWin提高篇实验_智能家居主界面设计(FreeRTOS) 例程下 ...
- FFmpeg命令行工具学习(三):媒体文件转换工具ffmpeg
一.简述 ffmpeg是一个非常强大的工具,它可以转换任何格式的媒体文件,并且还可以用自己的AudioFilter以及VideoFilter进行处理和编辑.有了它,我们就可以对媒体文件做很多我们想做的 ...