Back To Computer_Languages |
See Also W3C颁布的互联网技术标准/XSLT、HTML、XHTML |
Cascading Style Sheets
Contents
重叠样式表 (CSS) 是一种用来为结构化文档(如HTML文档或XML应用)添加样式(字体、间距和颜色等)的计算机语言,由W3C定义和维护。目前最新版本是CSS2.1,为W3C的推荐标准。CSS3现在已被大部分现代浏览器支持,而下一版的CSS4仍在开发过程中。
1. CSS 学习
https://developer.mozilla.org/docs/Learn/CSS
层叠样式表 — 也就是CSS — 是在HTML之后应该学习的第二门技术。HTML用于定义内容的结构和语义,CSS用于设计风格和布局。
比如,可以使用CSS来更改内容的字体、颜色、大小、间距,将内容分为多列,或者添加动画及其他的装饰效果。
对于第一次接触前端设计的人来说,建议按次序学习和掌握以下内容。
1.1. Introduction to CSS
CSS 介绍 包含了使用 CSS 的基础知识,如选择器和属性,编写 CSS 的规则,将CSS 应用于 HTML 的方法,以及如何在 CSS 中指定长度、颜色和其他单位,层叠与继承,盒模型基础以及 CSS 的调试。
框模型 俗称盒子模型
1.2. 文本样式
文本样式 介绍基础的文本样式,包括字体属性的设置,粗体和斜体,行和字母间距,阴影和其他文本功能。我们通过在网页上设置特定的字体,指定列表和链接的样式来完成这一模块。
1.3. 样式框
样式框 是进行网页布局的基本元素之一。 这一模块我们重新学习框模型,并通过设置内边距、边框、外边距,指定自定义背景颜色、图像和其他特性以及在框上显示阴影和滤镜等奇特功能来控制样式框。
1.4. Layout Modes
CSS 布局模式, 有时简称为布局, 是一种基于Box的交互方式来确定盒子的位置和框的大小的算法. 有以下几种不同形式:
- 块布局(block layout), designed for laying out documents. The block layout contains document-centric features, like the ability to float elements or to lay them out over multiple columns.
- 行内布局(inline layout), designed for laying out text.
- 表格布局(table layout), designed for laying out tables.
- 定位布局(positioned layout), designed for positioning elements without much interaction with other elements.
- 弹性盒子布局( flexible box layout), designed for laying out complex pages that can be resized smoothly.
- 网格布局(grid layout), designed for laying out elements relative to a fixed grid.
2. History
CSS level 3 正在开发中。 CSS3 分成了不同类,称为Modules,包括边框和背景、竖排文字、用户交互、语音等。而每一个Module都在原有CSS2的基础上额外增加的功能,以及向后兼容。
CSS level 2 第 1 版 (“CSS 2.1”) 包含所有 CSS level 1 的功能并添加了绝对的定位元素、自动编号、分页、从右到左的文本和其他功能。此时,截至 2008 年 11 月,一直备受 Candidate W3C 推崇。
CSS level 1 (1996, 1999) 包括字体、边界、颜色等属性,几乎是 CSS 需要的所有配置文件。 [同时提供 PDF 版本]
CSS Mobile Profile 1.0 是用于手机和 PDA 的设备。
CSS Print Profile 仍是一个草稿。目标是针对低成本的打印机。
CSS TV Profile 1.0 是在电视上运行的浏览器。
跟 CSS 有关的其他规范:
SVG 包含设计向量图形的 CSS 属性。
Accessibility Features of CSS 是一个有关 CSS 如何使文档更加容易访问的注释。
3. 页面开发
http://www.webstyles-chinese.info/Style/CSS/learning.html
3.1. 基础样式
3.1.1. W3C Core(W3C指导样式)
http://www.w3.org/StyleSheets/Core/
核心样式为非设计师们提供了一个简单的途径来开始使用样式表. 在你文件的最上方加入一个连结至W3C的服务器,当阶层样式表浏览器与你的文件相遇它就会去W3C的服务器取得你选择好的样式表. 不是阶层样式表的浏览器会显示HTML文件.
请按以下步骤来开始使用W3C核心样式:
请从8个选项中挑选出你最喜欢的样式表: 巧克力,午夜,现代,古典,钢铁,瑞士,传统,深海
- 在你文件的最上方加入炼结原素. 这里是一个如何在HTML 4.01做的例子
<!doctype html public '-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/TR/html4/strict.dtd'> <html> <head> <title>Document title</title> <link rel="stylesheet" href="http://www.w3.org/StyleSheets/Core/Modernist" type="text/css"> </head> ...
或是在XHTML 1.0<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'> <html> <head> <title>Document title</title> <link rel="stylesheet" href="http://www.w3.org/StyleSheets/Core/Modernist" type="text/css" /> </head> ...
3.1.2. Normalize.css(跨浏览器统一样式)
Normalize.css是由Nicolas Gallagher和Jonathan Neal创建的一个开源项目。用他们的话来说:
Normalize.css是一个小巧的CSS文件,提供样式重置功能,使各浏览器的HTML元素的默认样式一致。这是一个现代的,为HTML5准备的,替代传统样式的css重置文件。
Normalize.css提供了丰富的文档说明和一个全面的指南去解释它是跟传统的样式重置有何不同。这是一个可以定制的CSS文件,现代的CSS框架,很多都是以此为基础的。
3.2. CSS Frameworks
所谓CSS框架,就是事先定义好的一组CSS样式(包括排版布局、按钮、表单等)和一些简单的使用规则(你只需要按照它的规则作用好类名)。按照使用规则应用这些样式,可以达到降低前端设计从图片到页面的工作量,方便团队快速实现Web站点的UI的目的。例如使用Bootstrap、Pure这些框架,只需要给你的html元素加上一些特定的类,就可以快速的实现网站的整体风格以及得到各种想要的效果。
一些实用的CSS框架:
Bootstrap: Layout, typography, forms, buttons, navigation, media queries + more, + .less files + js libraries
Pure: BSD License. A lightweight, mobile-first, optionally responsive, grid system with modular support for forms, buttons, tables, and menus.
3.3. CSS Authoring Methodologies
随着项目中CSS资源的使用规模不断增加,开发团队需要决定一个通用方法来组织CSS资源。 目标是易于开发、易于开发期间的协作和部署到生产环境的效能。或者表述为:
- Predictable //可预测
- Reusable //可复用
- Maintainable //可维护
- Scalable //可扩展
3.3.1. OOCSS
面向对象的CSS
- Separate Structure and Skin
- Separate Container and Content
3.3.2. ACSS
atomic CSS
3.3.3. oCSS
organic Cascade Style Sheet
3.3.4. SMACSS
Scalable & Modular Architecture for CSS
- Categorisation //将结构分类
- Naming rules //遵循统一的命名规则
- Decoupling CSS from HTML //CSS与HTML分离
SMACSS Categories
- Base: 基于Normalize.css
- Layout
- Module
- State: 命名为.is-*
- Theme: 定义网站主视觉, 命名为.theme-*
Module
- 页面上可单独存在并可以重复使用的元件
- 定义时要避免使用id或标记名称作为选择器
- 子模块以原模块名称加dash(-)命名,如: .mod-header, .mod-body
3.3.5. BEM
BEM是一种命名方法,能够帮助你在前端开发中实现可复用的组件和代码共享。BEM代表块(Block),元素(Element),修饰符(Modifier)。
Block 块是最小的独立单元,命名为.b-<name>或b<Name>;
Element 元素是块的一部分,具备某种功能。命名为两个下划线加元素名称,例如.b-<name>__icon或.b<Name>-label;
Modifier 修饰符作为一个块或是一个元素的一种属性,代表这个块或这个元素在外观或是行为上的改变。用下划线加动作名进行命名,例如.b-<name>__button--active, .b<Name>-field--editable
BEM是一个编程方法论,是一种用代码和一系列模式来描述现实情况的方法,它只考虑程序实体而无所谓使用什么编程语言。
可以与之进行类比的是面向对象编程(OOP)。BEM统一了前端的数据域。
一个Block(块)是一个独立的实体,就像应用的一块“积木”。一个块既可以是简单的也可以是复合的(包含其他块)。例如在页面上一般可以划分为Head Block/Main Block/Foot Block. 大的块还可以细化出小块;
一个Element(元素)是块的一部分,具有某种功能。元素是依赖上下文的:它们只有处于他们应该属于的块的上下文中时才是有意义的。例如一个输入域和一个按钮是Search块的中的元素。
块和元素构成了页面的内容。它们不仅仅是被呈现在一个页面上,它们的排列顺序也同样重要。
在BEM树里,修饰符是用来描述一个块或者是一个元素实体的属性的。
3.3.5.1. 多语言机制
多语言描述一个块的时候涉及实现这个块的外观和功能的所有编程语言(技术)。
想让一个块像一个UI元素一样展现在页面上,我们需要用下面这些技术来实现它:
模板(XSL,TT2,JavaScript等等),把块的声明转换成HTML代码
- CSS,描述块的外观
JavaScript,如果块有动态行为的话
- 图片
- 文档
构成一个块的每样东西都可以作为一种块技术。
4. Browser support
浏览器使用 layout engine 来渲染页面。样式是通过布局引擎来生效的,一般常见的样式引擎有:
- Trident
- Gecko
WebKit
- KHTML
- Presto
- Prince
5. Reference
http://en.wikipedia.org/wiki/CSS_frameworks
jQuery Mobile: A Touch-Optimized Web Framework
Less Framework: Less Framework是一个CSS自适应Web站点设计网格系统前端框架。它包含了4个网页布局方案和3套网站字体预设方案,都基于一个单一的网格布局系统。
Sass Framework: Another 预处理框架
Foundation: a front-end framework consisting of many tools useful for making responsive, mobile first websites. Primarily built with HTML, CSS and jQuery
floatz: 轻量的移动端优先的CSS框架,有很多例子
http://en.wikipedia.org/wiki/Comparison_of_layout_engines_(Cascading_Style_Sheets)