SlideShare una empresa de Scribd logo
1 de 65
CSS框架研究 CSS框架的介绍、研究及项目实用性的探讨 余果
第一部分 CSS框架是什么?
什么是框架? 框架实现了对具体实现细节的反向控制,实现者无需考虑框架已经实现好的细节 框架是一组组件,供你选用完成自己的系统 框架就是别人搭好的舞台,你来做表演 一般来说,框架是成熟的、不断升级的
JS框架 我们对于CSS框架这个词比较陌生,但对于JS库就比较熟悉了 JavaScript library 就是JavaScript framework 比如:常用的JavaScript库:jQuery
jQuery是什么 jQuery是一种以方便开发者的编码为主要目的的库,比如原生的JavaScript代码写Ajax就需要一大坨代码,要考虑浏览器兼容性、语言本身的粒子性 用jQuery的话往往一句链式代码就能完成大量工作 何乐而不为? 优点:方便;不用例会跨浏览器的细节;操作粒度更大,专注于主要逻辑 缺点:性能不是最佳;依赖API,无法像原生一样灵活
CSS框架是什么 与JavaScript框架类似,CSS框架是一些原生的CSS代码,然后给用户一些接口(类名),用户操作类名而无需理会实现细节,通过操作类名来改变页面样式和结构
为什么CSS框架没有像JS框架一样流行起来?
为什么CSS框架没有像JS框架一样流行起来? CSS框架没有被大家接受的一个重要原因是: JavaScript是基于逻辑的,JavaScript框架能简化逻辑中的琐碎细节,给开发者带来方便 CSS是基于设计的,每个设计都完全不相同,所以可复用程度很小
本PPT的目的是分析现阶段著名的、被广泛使用的CSS框架 选取其中适合的部分用在自己的项目中
本次研究涉及的CSS框架
第二部分  CSS框架能做什么?
Reset 其实我们常用的CSS reset就是一种框架,只不过这种框架是不提供接口的,它就在那儿,我们将它引用到页面中,就会重置浏览器差异 最有名的reset是YUI的reset,几乎已经成为业界标准
NEWset Newset是我发明的一个词,表示reset的一个还原操作 Reset把一切归于0,newset文件再把元素还原到一个很美观的程度 While Reset removes and neutralizes the inconsistent default styling of HTML elements, Base applies a consistent style foundation for common HTML elements across A-grade browsers【YUIbase.css】 OOCSS:content.css Blueprint:Typography.css
NEWset+
NEWset++ 既然需要把reset的文件再重新定义一遍,那为什么不定义得更好看一些呢? Bluetrip:
NEWset++ Bluetrip: 由上到下分别是success、error、notice
布局 所有的CSS框架都提供了布局的功能,一般叫做grids.css存在在include文件中,基于布局原理的不同分为两大类: 1.基于自适应的 2.基于栅格的
自适应 Yahoo!首页
自适应 通过Firebug修改最外层宽度为100%
自适应 Oocss把布局分为大的布局(template.css)和小范围布局(grids.css) Oocss把页面分为head、body和foot Body中分为边栏和主内容 Template是用来定边栏宽度,然后内容区会自由伸缩 边栏和主内容在html中出现顺序无关 边栏可以有0~2个
Oocss中的grids.css Grids.css用来定义小栏目,它跟template最大的不同是它是利用百分比来布局的。
Oocss的自适应 So……修改oocss布局的container宽度的时候: 1.边栏宽度固定或随之被修改,这取决与你的边栏宽度单位是%还是px/em 2.主内容区域随之被修改,内部unit按比例放大或缩小
布局上的自适应不是那么实用 为什么我认为大型网站在页面布局上(而非模块)自适应不实用: 1.项目改版不会只改变宽度 2.每一个栏目都做到自适应成本较大
Yahoo!的边栏被拉宽之后的效果 Awful, isn’t it?
基于栅格(网格)的布局系统!
为什么是960像素? 几乎所有大型网站都是950像素和960像素宽的,为什么? 原因1:苹果电脑1027x768分辨率下打开Firefox,自然状态下,Firefox窗体的大小约为 974 x 650. 减掉左右两边7px的边框,网页的实际大小为 960 x 650. 原因2:960是很多数的公分母 简单的说,960能被整分成6份、8份、12份、16份、20份、24份……报纸的栏目就是按这些比例来排版的
950像素呢?
950像素呢? 因为习惯性的把Gutter设定为10px,所以,margin就是Gutter的一半:5px 960-5-5=950
彪叔算出的950px……
栅格化设计的好处 1.一致、规范、严谨 2.美观?(持怀疑态度) 3.方便
Blueprint的栅格真方便啊 无嵌套,自由定宽度,简单,通过Firebug就能改变布局 24格,相对灵活 功能齐全,包括 提供了一个很好的栅格思路 http://yuguo.us/weblog/css-framework-blueprint/
神马思路? .span-n即为n个单位宽,比如span-3为3单位宽(40*3-10=110px;其中10是右边距); .colborder为1个单位宽(栏目中的border,很好记),因为栏目间有分割条的时候,分割条离左右两遍的距离margin都会增大。blueprint把1个单位也就是40像素加上原来的10像素边距分给这个border两边,完美了。 .prepend-x为x个单位宽,代表左边空出n个单位的距离。 .append-y为y个单位宽,代表右边空出y个单位的距离。 .border 为0个单位,代表在右边加上一个竖条间隔border。这里没有使用多余的空间,它把原来的10px margin变成4px padding和5px margin。 所有的class都会为元素设定一个单位宽
这不就是table了么?
Blueprint布局比table更好的三个理由: 1.修改更方便,用table的话,不可能通过Firebug就修改布局 2.作为布局,span-3是有语义化的,table不是 3.div能加上role属性,语义化++
欢迎关注 chandleryu
栅格系统不实用
如果栅格系统可以用…… 那么使用Blueprint的框架,会让代码更多还是更少呢? 项目越大,代码相对更少! 用一种恒定的方法为所有页面布局,CSS布局文件的大小不会增大。
完美兼容 这些框架能兼容所有的A级浏览器 这对于设计师或者对CSS不熟悉的人来说是很方便的事情,不用调试IE bug
Print.css 很多框架还提供了打印版本的css,如果不需要,简单地去掉它就好了
第三部分 实用性
无法直接应用CSS框架的理由 主要是栅格化 1.设计稿不是基于24网格 2.项目太大型,容易出现复杂布局的衍生物 2.学习成本较高,设计师和重构都要学习规则 另一个原因 http请求一定要少 需要合并CSS+良好的注释分开功能
不能直接使用 那就学习它们的优点~
优点一:组织良好 框架是open给全世界网站使用的,所以它们一般是由组织良好的文件组成,方便一个新手去修改或者层叠样式 大部分框架都会把样式分成以下三个: Reset 这个是不需要修改的 Newset(Typography) 基本的元素样式、表单样式、甚至通用的notice样式等 Grids 用于布局
CSS合并 项目组css只能保正两个HTTP请求,在目前没有样式文件合并系统的情况下,只能合并css 每个页面引入两个样式文件:一个base.css为全局/公共样式,所有的页面中都有引用;另一个是页面单独的文件。 Index.html中就引入base.css和index.css
Base.css
模块化 终于要说到oocss最重要的特点:模块化
比oocss做的更好! Oocss的注释: 我在项目中的注释 via @ghostzhang
比oocss做的更好:强注释 为什么要加强注释? oocss有一个单独的mod.css和mod_skins.css来定义基类和扩展类,但我们的项目中不允许这么分离,都放在同一个文件中,所以需要注释表明是一个模块,加上一些更多的信息
比oocss做的更好:规范命名 Oocss中有一个基类名叫mod,这是因为sample太小,在大项目中会有很多模块,mod是一种常态,所以把它作为前缀
比oocss做的更好:区分容器和内容 Oocss没有区分可嵌套的模块和不可嵌套的模块 可嵌套的模块采用这样的命名: .mod_box .mod_box_more {}
比oocss做的更好:区分容器和内容 不可嵌套的模块由于不需要考虑内部会有其它模块,所以命名可以更加简单一些,甚至可以直接用元素标签而不用入侵其他的模块内部: .mod_pagenavula {} .mod_pagenav .now {} 可嵌套还是不可嵌套,在注释中写明
Newset 开始一个新项目的时候,我们不会忘记reset,但往往不记得newset。 项目开始的时候,尽量先写公共样式common,再具体到细节,善用css的层叠性 但在涉及模块的时候,尽量先在单独的样式文件中写,有更多相同样式出现时,提取到base.css中
一起使用 用blueprint优秀的24格布局,然后用oocss写优美的模块,有何不可?
自动工具:YUI的grids builder
YUI的文件配置器
960grids的生成工具
我们也可以做自己的自动工具!
我们也可以做自己的自动工具!
Thank you! 鸣谢@ghostzhang

Más contenido relacionado

Similar a css框架研究

Css schema by_sofish
Css schema by_sofishCss schema by_sofish
Css schema by_sofish
Webrebuild
 
支付宝CSS构架
支付宝CSS构架支付宝CSS构架
支付宝CSS构架
Sofish Lin
 
ASP.Net MVC2 简介
ASP.Net MVC2 简介ASP.Net MVC2 简介
ASP.Net MVC2 简介
Allen Lsy
 
J Query基础教程
J Query基础教程J Query基础教程
J Query基础教程
yiditushe
 
高雄前端社群 #3 SASS workshop
高雄前端社群 #3 SASS workshop高雄前端社群 #3 SASS workshop
高雄前端社群 #3 SASS workshop
洧杰 廖
 
Inspire dgt 網路技術分享_css+js_20110307
Inspire dgt 網路技術分享_css+js_20110307Inspire dgt 網路技術分享_css+js_20110307
Inspire dgt 網路技術分享_css+js_20110307
inspire digital
 
前端开发规范
前端开发规范前端开发规范
前端开发规范
aNd1coder
 
現代化網頁基礎排版技術
現代化網頁基礎排版技術現代化網頁基礎排版技術
現代化網頁基礎排版技術
洧杰 廖
 

Similar a css框架研究 (20)

淘宝网前端开发面试题
淘宝网前端开发面试题 淘宝网前端开发面试题
淘宝网前端开发面试题
 
Css schema by_sofish
Css schema by_sofishCss schema by_sofish
Css schema by_sofish
 
支付宝CSS构架
支付宝CSS构架支付宝CSS构架
支付宝CSS构架
 
常用Js框架比较
常用Js框架比较常用Js框架比较
常用Js框架比较
 
ASP.Net MVC2 简介
ASP.Net MVC2 简介ASP.Net MVC2 简介
ASP.Net MVC2 简介
 
CSS preprocessor 介紹,與 SASS 入門分享
CSS preprocessor 介紹,與 SASS 入門分享CSS preprocessor 介紹,與 SASS 入門分享
CSS preprocessor 介紹,與 SASS 入門分享
 
不一樣的Web server... coServ
不一樣的Web server... coServ不一樣的Web server... coServ
不一樣的Web server... coServ
 
SASS 入門
SASS 入門SASS 入門
SASS 入門
 
J Query基础教程
J Query基础教程J Query基础教程
J Query基础教程
 
Css布局
Css布局Css布局
Css布局
 
Js高级技巧
Js高级技巧Js高级技巧
Js高级技巧
 
高雄前端社群 #3 SASS workshop
高雄前端社群 #3 SASS workshop高雄前端社群 #3 SASS workshop
高雄前端社群 #3 SASS workshop
 
建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)
 
Inspire dgt 網路技術分享_css+js_20110307
Inspire dgt 網路技術分享_css+js_20110307Inspire dgt 網路技術分享_css+js_20110307
Inspire dgt 網路技術分享_css+js_20110307
 
前端开发规范
前端开发规范前端开发规范
前端开发规范
 
Alice库构建
Alice库构建Alice库构建
Alice库构建
 
Alice v3
Alice v3Alice v3
Alice v3
 
qcon-bada
qcon-badaqcon-bada
qcon-bada
 
2010 01-07周五分享 前端的那些事儿-小米猪
2010 01-07周五分享 前端的那些事儿-小米猪2010 01-07周五分享 前端的那些事儿-小米猪
2010 01-07周五分享 前端的那些事儿-小米猪
 
現代化網頁基礎排版技術
現代化網頁基礎排版技術現代化網頁基礎排版技術
現代化網頁基礎排版技術
 

Último

10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
PUAXINYEEMoe
 
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
michaelell902
 
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
PUAXINYEEMoe
 

Último (9)

taibif_資料標準概念介紹_20240509_20240509_20340509.pdf
taibif_資料標準概念介紹_20240509_20240509_20340509.pdftaibif_資料標準概念介紹_20240509_20240509_20340509.pdf
taibif_資料標準概念介紹_20240509_20240509_20340509.pdf
 
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
 
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
 
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade SixMath Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
 
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdftaibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
 
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
 
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
 
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
 
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
 

css框架研究