先来回顾一下前几章节,咱们都说了哪些内容:css
围绕着CSS Reset
这个话题咱们已将讲了3章节,从中了解到CSS Reset的做用,Normalize.css的优点,以及它是如何帮我修复跨浏览器的兼容性问题的;html
这一章节内容会弱化CSS Reset
的主题,不是由于这章节与CSS Reset
无关了,而是由于咱们要基于它去扩展更多的内容,来帮助咱们解决实际开发中更多的问题。前端
如今回到咱们这一章节的标题,将它作下补充:html5
《关于CSS Reset 那些事(四)之 基于CSS Reset 构架CSS基础样式库》jquery
我上一章节的末尾抛出了几个问题:git
1.假设你要作一个游戏单页面,网页上并不存在表单内容,那么你就要移除一些冗余的代码,开始自定义Normalize.css
样式来知足本身的需求。github
2.假设你要作一份文案策划的网页,包含不少文字排版时,此时Normalize.css
也许并不彻底适合你,由于它的默认字体设置和排版布局可能不能知足你的要求。segmentfault
3.假设你要作一个企业类型的网站,并考虑跨浏览器兼容性,网站包含内容元素也很丰富,那么你能够选择使用Normalize.css
来统一你的浏览器样式,可是它仅仅帮助咱们解决了样式统一的问题是不够的,你是否是还要设计一套布局系统,来解决该网站的布局问题呢?浏览器
从以上几个问题能够看出,在构建大型网站的时候,咱们能够把Normalize.css
做为基础样式,而后根据不一样的页面需求,进行添加样式覆盖它。框架
可是这只是咱们的第一步,关于网页开发中更多的基础解决方案还有不少,好比刚刚说的布局系统,或许你还会用到不少经常使用的CSS问题解决方法,如浮动和清除浮动,自适应两端对其等等。
那么下一节,咱们就来分析一下CSS 基础库到底包含什么内容?
我认为基础样式库 始终 能帮咱们解决开发时遇到的一些基础性问题:
基础库初衷和将来方向:
normal.css [基于Normalize.css自定义模块,继承其优点,改善文字与部分细节] html5.css [html5样式修复,默认会导入normal.css,可按需引用] form.css [表单的一些基础样式,可按需引用] grid.css [响应式网格系统,优化命名与精简代码,可按需引用] utils.css [HTML中直接使用的工具类,可按需引用] iconfont.css [一套复用率极高的字体图标,可按需引用] animate.css [经常使用的动画效果组合,可按需引用] print.css [优化默认的打印样式,可按需使用]
咱们按照需求,初步划分了基础样式库的结构,起初html5.css
的内容是考虑直接放在normal.css
里面的,可是为了考虑一部分人在页面中使用了像html5shiv的解决方案来兼容低版本浏览器,因此这里就体现出了分模块的便捷性,拆分为一个独立的css文件,须要时再进行使用,不过这里默认使用@import "html5.css"
进行导入只是为了预览调试,请在实际使用中将代码拷贝至normal.css
,或者使用yuicompressor
进行压缩合并后再使用。
下一节咱们来细化基础样式库的内容,看一看它都须要帮咱们作哪一些事情。
Normalize.css
不只统一了样式,还保留元素的可辨识性,这是咱们应该继承和发扬的优势,normal.css
也会参考借鉴Normalize.css
全部优点,不过为了让其更简洁,让开发者更容易上手,我选择对它进行瘦身,好比移除一些不会用到的元素标签hgroup
,将一些元素进行分模块管理,好比html5.css
,form.css
等,方便按需求灵活引用。
normal.css
包含内容以及调整部分
html5.css
主要是用于解决html5新元素在旧浏览器中的不识别,而且修复一些元素存在的隐性问题。
可是为何不把html5.css
这部份内容直接放入normal.css
,而是考虑将其进行分模块管理呢? 是为了考虑一部分人在页面中已经使用了像html5shiv
的解决方案来兼容低版本浏览器,因此这里就体现出了分模块的灵活性,拆分为一个独立的css文件,须要时再进行使用。
不过这里默认使用@import "html5.css"
进行导入只是为了预览调试,请在实际使用中将代码拷贝合并至normal.css
,或者使用yuicompressor
,Grunt
进行压缩合并后再使用。
html5.css
包含内容以及调整部分
progress
元素的对其问题controls
属性的audio显示出来hidden
属性不起做用的问题svg
元素overflow
不正常的问题mark
标签的样式form.css
修复表单元素在不一样浏览器下的默认样式,尤为是IE低浏览器版本下的一些怪异问题;而且还修复了一些表单显示状态,致力于提高用户体验;
button
按钮在网页中是最经常使用的基础元件,可是不一样浏览器下按钮的默认样式千奇百怪,并且表现形式过于单一,因此考虑在form.css
里内置了一套按钮组件,提供几种表现场景,而且能够和下面要介绍的iconfont.css
搭配使用。
form.css
包含内容以及调整部分
fieldset
元素的显示样式overflow
属性为visiblecheckbox
,radio
的属性box-sizing: border-box;
button
,input
内边距和内边框select
的样式textarea
只能为纵向拉伸ui-btn
按钮组件包含的内容
iconfont.css
,搭配图标按钮使用使用示例
<button type="button" class="ui-btn">默认</button>
借鉴了Bootstrap的一套响应式流式栅格布局系统,随着屏幕或视口(viewport)尺寸的增长,系统会自动分为最多12列。
对栅格系统的样式命名进行从新组织,简化和移除工具代码,只保留核心布局样式。
简洁便是高效率。
grid.css
包含内容以
.ui-grid-container
(固定宽度)和.ui-grid-fluid
(100%宽度)用于包裹.ui-row
.ui-grid-container
(固定宽度)经过媒体查询来实现响应式宽度.ui-row
用于包裹一组.ui-col-1
-.ui-col-12
列xs
,sm
,lg
经过媒体查询来实现响应式.ui-col-xs-*
超小屏幕 手机 (<768px).ui-col-sm-*
小屏幕 平板 (≥768px).ui-col-*
(默认)中等屏幕 桌面显示器 (≥992px).ui-col-lg-*
大屏幕 大桌面显示器 (≥1200px).ui-row
行中使用示例
<div class="ui-grid-fluid"> <div class="ui-row"> <div class="ui-col-8">.ui-col-8</div> <div class="ui-col-4">.ui-col-8</div> </div> </div>
提供最经常使用的功能类class
,命名使用fn-
前缀来进行区别表示,若是在项目中可以灵活复用这些类,那将大大提高开发效率。
utils.css
包含内容以及调整部分
使用示例
<!-- 文字溢出显示省略号 --> <div class="fn-text-ellipsis">文字那是至关的长</div>
iconfont
都已经很熟悉了,是一种把图标放入自定义字体中,而后使用字体图标来替代普通图标的技术,使用起来方便灵活。
iconfont.css
包含内容以及调整部分
form.css
按钮组件使用使用示例
<button class="ui-btn"><b class="iconfont">~</b>提交</button>
CSS3的动画让网页变的更加有活力,因此这里引入一套CSS3动画库,能够经过简单的引用类名的方式在你的项目中实现最多见的动画效果。
animate.css
包含内容以及调整部分
up,down,left,righ
)up,down,left,righ
)使用示例
<div class="animated fadeIn"> 淡入效果 </div>
能够优化打印出的网页更适合浏览,而且加快打印速度,节省打印机耗材。
print.css
包含内容以及调整部分
经过对以往开发中遇到问题的总结,以及对CSS基础库的需求进一步细化,当咱们明确的知道须要什么了之后,从参考业内最优秀的CSS框架,到提取出可以解决咱们实际问题的代码;从以往的开发经验中整理出最高效复用的方案,再到一次次的“取之精华去之糟粕”; 最终这篇文章有了产出:
项目名称:Koala - 更简洁高效的基础样式库
项目版本:alpha(内部测试与学习参考使用)
项目地址:https://github.com/Alsiso/Koala
项目交流:New issue
欢迎你们Fork代码,提出问题与意见,一块儿进行学习交流 ~
最后再说明一点:当前版本并非正式生产版,因此还不能彻底应用到项目中,目前仅供学习参考使用,部分的细节完善和优化还在进行中,若是你有意见和问题,欢迎随时联系:chyi722到163.com
CSS基础样式库只是前端解决方案中最小的一个分支,其实咱们还能够完善更多的内容来帮助解决前端开发中全部的问题,就犹以下面这个表格。
分层 | 结构层+表示层 | 行为层 |
html+css | js | |
基础库 | normal/grid/utils/scss扩展/ | jquery/base/seajs/ |
组件 | 元件/静态组件 | ui组件/业务组件 |
模块 | html/css/js(基础库+组件) |
后续会持续跟进完善内容,致力于让前端开发变得更简单,高效,稳定,也让咱们的工做生活变的像Koala同样,天天拥有18个小时的睡眠时间~
至此《关于CSS Reset 那些事》的系列文章已经完结了,感谢你们关注Alsiso,后续也会以这种方式来分享学习成果与方法。