Appearance
伪类、伪元素与内容生成
元信息
- 目标:掌握不改文档结构而改变样式与内容的三种手段——伪类、伪元素与内容生成,以 clearfix 为完整案例体会"结构零侵入"的样式方案
- 关键概念:伪类、伪元素、内容生成、clearfix、:first-letter
- 关联阶段:cp1
- 常见误区:以为 :hover/:visited 是设计师在 HTML 里定义的类(伪类由浏览器按运行状态即时定义);以为选择器只能选中标记元素(伪元素能筛选到字符、行这样的内容级"伪"元素)
伪类、伪元素与内容生成
浮动清除的旧方法
旧式清除浮动的方法,语义上不够整洁,因为多出了一个无意义的内容为空的元素
浮动清除的新方法: 伪元素
定义一个clearfix的css类,然后设置给父元素即可. 即简洁,又可重用 这段代码使用了css的几个特性:伪类、伪元素、内容生成
伪类
css
a:link {color: blue;} /* 未访问的链接 */
a:visited {color: red;} /* 已访问的链接 */
a:hover {color: black;} /* 鼠标划过链接 */
a:active {color: yellow;} /* 已选中的链接 */所谓伪类,就是无法由设计师定义,而是由浏览器根据实时运行状态定义的类.譬如上例表示:
- 一个从未被上前用户访问过的链接显示为蓝色字体并带有下划线
- 曾被访问过的链接显示为紫色并带有下划线
- 当鼠标划过链接时,显示为黑色
- 当链接被点击时,链接显示为黄色并带有下划线
上述链接种种不同的状态,就好象浏览器内部有如下代码:
css
<a class="link">未访问过的链接</a>
<a class="visited">已访问过的链接</a>
<a class="hover">鼠标划过链接</a>
<a class="active">已选中的链接</a>伪元素
普通选择器只能筛选标记元素,而伪元素选择器支持对内容元素进行筛选.
上例中,筛选出<p>中元素的第一个字符(即T字符)或第一行.而这段被选中的内容元素,并非是由文档作者预先进行标记的.所以,是伪的元素
内容生成
css
.clearfix:before,.clearfix:after {
content: " ";
display: table;
}content 属性允许在文档被浏览器解析时,动态生成内容元素
上例即: 在.clearfix元素的前后各插入一段空的内容元素,并且将其盒子类型模式设置为'table',借助于表格布局的特性(详见参考),相当于进行了清除浮动