图解css3:核心技术与案例实战. 2.10 伪元素

简介:

2.10 伪元素

除了伪类,CSS3还支持访问伪元素。伪元素可用于定位文档中包含的文本,但无法在文档树中定位。伪类一般反映无法在CSS中轻松或可靠地检测到的某个元素属性或状态;另一方面,伪元素表示DOM外部的某种文档结构。

伪元素其实在CSS中一直存在,大家平时看到的有“:first-line”、“:first-letter”、“:before”和“:after”。 CSS3中对伪元素进行了一定的调整,在以前的基础上增加一个冒号,也就相应的变成了“::first-letter”、“::first-line”、“::before”和“::after”,另外伪元素还增加了一个“::selection”。

或许大家会问,为什么要使用两个冒号?对于IE 6~8,仅支持单冒号表示法,而现代浏览器同时支持这两种表示法。另外一个区别是,双冒号与单冒号在CSS3中主要用来区分伪类和伪元素。到目前来说,这两种方式都是被浏览器接受的。接下来简单介绍一下伪类元素的作用。

2.10.1 伪元素::first-letter

“::first-letter”用来选择文本块的第一个字母,除非在同一行中包含一些其他元素。“::first-letter”通常用于给文本元素添加排版细节,例如下沉字母或首字母,下面的代码是如何使用“::first-letter”创建首字下沉。

p:first-child::first-letter {

  float: left;

  color: #903;

  padding: 4px 8px 0 3px;

  font:75px/60px  Georgia;

}

效果如图2-48所示。

2.10.2 伪元素::first-line

“::first-line”的使用和“::first-letter”类似,也常用于文本排版方面,只不过“::first-line”用来匹配元素的第一行文本,可以应用一些特殊的样式,给文本添加一些细微的区别。“::first-line”将匹配block、inline-block、table-caption、table-cell等级别元素的第一行,来看一个简单的例子。

p:last-child::first-line {

  font: italic 16px/18px Georgia;

  color: #903;

}

上面的代码意味着最后一个段落的第一行文字显示为红色斜体,如图所示2-49所示。

2.10.3 伪元素::before和::after

对于“::before”和“::after”来说,大家并不多见,但“:before”和“:after”,或许不会陌生,因为清除浮动就使用这两个伪类。

“::before”和“::after”不是指存在于标记中的内容,而是可以插入额外内容的位置。尽管生成的内容不会成为DOM的一部分,但它同样可以设置样式。

要为伪元素生成内容,还需要配合content属性。例如,假设在页面上所有外部链接之后的括号中附加它们所指向的URL,无须将URL硬编码到标记中,可以结合使用一个属性选择器和“::after”伪元素。

a[herf^=http]::after {

  content:"(" attr(herf) ")";

}

如今在CSS3中使用“::before”和“::after”越来越多见,例如给链接添加ICON的效果。Font Awesome站点制作的ICON就使用伪元素“::before”和“::after”,下面截取部分代码。

/*  Font Awesome styles

    ------------------------------------------------------- */

[class^="icon-"]:before,

[class*=" icon-"]:before {

  font-family: FontAwesome;

  font-weight: normal;

  font-style: normal;

  display: inline-block;

  text-decoration: inherit;

}

a [class^="icon-"],

a [class*=" icon-"] {

  display: inline-block;

  text-decoration: inherit;

}

/* makes the font 33% larger relative to the icon container */

.icon-large:before {

  vertical-align: middle;

  font-size: 1.3333333333333333em;

}

.btn [class^="icon-"],

.nav-tabs [class^="icon-"],

.btn [class*=" icon-"],

.nav-tabs [class*=" icon-"] {

  /* keeps button heights with and without icons the same */

 

  line-height: .9em;

}

li [class^="icon-"],

li [class*=" icon-"] {

  display: inline-block;

  width: 1.25em;

  text-align: center;

}

li .icon-large:before,

li .icon-large:before {

  /* 1.5 increased font size for icon-large * 1.25 width */

 

  width: 1.875em;

}

ul.icons {

  list-style-type: none;

  margin-left: 2em;

  text-indent: -0.8em;

}

ul.icons li [class^="icon-"],

ul.icons li [class*=" icon-"] {

  width: .8em;

}

ul.icons li .icon-large:before,

ul.icons li .icon-large:before {

  /* 1.5 increased font size for icon-large * 1.25 width */

  vertical-align: initial;

}

.icon-bullhorn::before {

  content: "\f0a1";

}

.icon-beaker::before {

content: "\f0c3";

}

效果如图2-50所示。

 

图2-50 Font Awesome制作ICON

意     图2-50效果还需要配合CSS3的@font-face特性,后续章节会进行详细介绍。

 

2.10.4 伪元素::selection

“::selection”是用来匹配突出显示的文本。浏览器默认情况下,选择网站文本是深蓝的背景,白色的字体,如图2-51所示。

 

图2-51 浏览器默认突出文本的效果

有的设计需要一个与众不同的效果,此时“::selection”就非常实用。不过浏览器对“::selection”支持并不完美,在整个IE 系列中仅有IE 9支持,Firefox也需要加上其私有属性“-moz”。不过值得庆幸的是,Webkit内核浏览器支持,其正确的使用如下。

/*Webkit,Opera9.5+,IE 9+*/

::selection {

  background: 颜色值;

    color: 颜色值;

}

/*Mozilla Firefox*/

::-moz-selection {

  background: 颜色值;

    color: 颜色值;

}

一起来看看W3cplus12上的使用。

::selection {

  background: red;

  color: #fff;

}

::-moz-selection {

  background: red;

  color: #fff;

}

此时选择文本时,背景是大红色,前景色是白色,如图2-52所示。

 

图2-52 ::selection伪元素突出文本效果

注意   伪元素::selection仅接受两个属性,一个是background,另一个是color。

相关文章
|
8天前
|
前端开发
CSS实现充电效果案例
CSS实现充电效果案例
19 1
|
2月前
|
前端开发 开发者 容器
探索现代Web开发中的CSS Grid布局技术
【8月更文挑战第29天】在数字时代的浪潮中,网页设计不断进化以适应日新月异的用户需求。CSS Grid布局技术作为一项革新性的前端工具,为设计师和开发者提供了前所未有的布局能力。本文旨在通过深入浅出的方式介绍CSS Grid的核心概念、基本用法以及在实际项目中的应用,帮助读者快速掌握这一强大的网页布局工具。
41 3
|
2月前
|
编解码 前端开发 开发者
【前端设计达人必备】揭秘CSS尺寸单位的魔力:从基础到实战,打造灵动响应式网页!
【8月更文挑战第26天】本文深入探讨了CSS中常用的尺寸单位,包括像素(px)、百分比(%)、视窗单位(vw/vh/vmin/vmax)、可伸缩相对单位(em/rem)以及Flexbox和Grid中的fr单位。通过具体案例展示了每种单位的特点及其适用场景。像素适用于固定尺寸元素;百分比和em/rem利于构建响应式布局;视窗单位适合全屏设计;fr单位则能有效管理复杂网格布局的空间分配。掌握这些单位有助于开发者设计出更加灵活、高质量的网页布局。
40 4
|
2月前
|
前端开发
CSS中的层级选择器&伪类选择器和伪元素选择器
CSS中的层级选择器&伪类选择器和伪元素选择器
|
2月前
|
存储 前端开发 安全
【海贼王航海日志:前端技术探索】CSS你了解多少?(三)
【海贼王航海日志:前端技术探索】CSS你了解多少?(三)
30 2
|
2月前
|
Web App开发 前端开发
【海贼王航海日志:前端技术探索】CSS你了解多少?(二)
【海贼王航海日志:前端技术探索】CSS你了解多少?(二)
22 2
|
2月前
|
缓存 前端开发 JavaScript
【海贼王航海日志:前端技术探索】CSS你了解多少?(一)
【海贼王航海日志:前端技术探索】CSS你了解多少?(一)
22 2
|
2月前
|
移动开发 JavaScript 前端开发
基于CSS3、原生JS、Vue3.0技术各自实现序列帧动画效果
这篇文章展示了如何使用纯CSS3、原生JavaScript以及Vue 3.0技术来实现序列帧动画效果,并通过代码示例和动画效果展示了每种方法的实现过程和最终效果。
65 0
|
3月前
|
编解码 前端开发 容器
CSS Flex布局实战案例:构建响应式卡片组件
【7月更文挑战第17天】通过上述步骤,我们成功地使用CSS Flex布局构建了一个响应式的卡片组件。Flexbox不仅简化了布局代码,还让我们能够轻松实现复杂的布局效果,如响应式设计。在实战中,掌握Flexbox将大大提高前端开发的效率和网页布局的质量。希望这个案例能够帮助你更好地理解和应用Flexbox布局。
|
3月前
|
前端开发 索引 Python
技术心得:xpath、CSS定位方法
技术心得:xpath、CSS定位方法
22 0