【CSS选择符】伪类和伪元素

0016.jpg

首先是最为常用的链接的样式

根据访客与链接的交互方式,链接有四种状态,这四种状态的外观可以使用四个伪类装饰。这些伪类分别对应下述的四个状态:

HTML代码
<a href="https://www.jianshu.com/c/1681745eb504">我的Web笔记</a>


a:link(未访问状态)

选取访客尚未访问的链接。即:鼠标没有悬停其上,也没有正在单击的链接。这个选择符定义的样式是尚未单击的普通链接。


image.png

CSS代码

a:link {
    color: teal;
}


在CSS中,通常情况下,我习惯a:link直接写成a。效果是一样的。

a {
    color: teal;
}


注意!

:visited 的限制可用属性

为了保护隐私,浏览器对:visited伪类中能使用哪些CSS属性做了严格限制。不过,几年前有些不法分子已经找到绕过这一限制的方法,他们使用JavaScript读取针对已访问链接的样式,判断用户访问过哪些网站。例如,在已访问链接的背景中加载一个图像,判断访客是否访问过Paypal.com、eBay.com、BankofAmerica.com或其他需要注意安全的网站。因为有这个潜在的风险,只能为已访问的链接设定color、background-color和border-color属性。而且,仅当为链接的普通状态设定了颜色、背景色或边框颜色时才能这么做。也就是说,在:visited伪类中能设置的属性有限。




a:hover(鼠标经过)

用于修改鼠标悬停其上的链接外观。这种变化效果不只是为了好玩,还可以让导航栏里的按钮或者栏目链接有视觉反馈。

0.gif

CSS代码

a:hover {
    color: pink;
}

除了链接之外,其他元素也可以使用:hover伪类。

例如,可以使用这个伪类突出显示<p>或<div>元素中访客悬停其上的文字。此时,选择符不是a:hover(这是链接专用的),而要定义名称为p:hover的样式,指明鼠标悬停在段落上时显示什么样的特殊效果。

如果只想装饰类为highlight的标签,可以定义名为.highlight:hover的样式。




a:active(鼠标点击时)

用于设定访客点击链接时链接的外观。也就是访客按下鼠标按钮到松开之前那几纳秒。

0.gif

CSS代码

a:active {
    color: red;
}

a:active一般我是不写的,因为这个通常提升不到什么用户体验。因为在按下去那0点几秒,可以说大部分用户是没感觉的。而且在移动端,我也想不出能带来什么好的效果。

最后要说明链接伪类的书写顺序:
一定要按照 a:link > a:visited > a:hover > a:active 这个顺序书写。






为段落的各部分编写样式

CSS提供了两个伪元素, :first-letter 和 :first-line,以便使用几个世纪以来纸质印刷品使用的方式设计网页。

:first-letter
可以实现首字下沉效果,即像书里一章的开头那样,段落的第一个字母脱离段落里的其他内容,单独以大号或粗体显示。

image.png

CSS代码

p:first-letter {
    font-size: 2em;
}




:first-line
让段落的第一行以不同的样式显示,能吸引读者的眼球。

image.png

CSS代码

p:first-line {
    color: #0e98c6;
}


注意!

最新版CSS修改了伪元素的语法。在CSS 2.1中,伪元素以一个冒号开头,例如,:first-letter。

为了把伪元素与:hover等伪类区分开,CSS3多加了一个冒号。因此,:first-letter和:first-line现在变成了 ::first-letter 和 ::first-line。幸好,为了兼容以前的网站,浏览器会一直支持单冒号版本的伪元素。这是好事,因为IE 8不能识别双冒号语法。所以,现在可以坚持继续使用但冒号版本,因为所有其他浏览器也都仍然支持。






其他伪类和伪元素


:focus(选中焦点)

:focus 伪类的作用与 :hover 伪类十分相似,不过 :hover 伪类在访客把鼠标悬停到链接上时起作用,而 :focus 伪类在访客执行某个动作(通常是单击或按Tab键),表明他的注意力在网页中某个元素上时起作用。

:focus 选择符的最大作用是给访客反馈。例如修改文本框的背景色,突出显示他准备填写内容的位置(:focus 选择符通常用于选取单行文本框、密码文本框和多行文本框<textarea>)。

0.gif

CSS代码

input:focus {
    background: pink;
}

:focus 选择符只在元素获得焦点时才起作用。如果访客按Tab键进入其他文本框,或单击网页的其他位置,原来焦点所在的文本框就失去了焦点(因此定义的CSS属性也无效了)。




:before

:before 伪元素的作用其他选择符无法实现:在指定元素前添加内容

比如说,你可能想在某些段落的开头加上“HOT TIP!”,突出显示这些段落。除了在网页的HTML代码中输入所需的文字之外,还可以使用 :before 选择符。后者不仅能减少代码量,而且还便于日后修改。

image.png

CSS代码

p:before {
    content: "HOT TIP! ";
    color: red;
}


通过这种方式添加的内容个,技术术语叫:“生成的内容”,因为这种内容是Web浏览器生成的,网页的HTML源码中没有。你可能没注意到,浏览器总会生成一些内容,例如无序列表前的项目符号和有序列表前的序号。如果愿意,甚至可以使用 :before 选择符定义浏览器如何显示列表的项目符号和序号。

IE 8 及以上版本和其他所有主流浏览器都支持 :before 选择符。
不支持 :before 选择符的浏览器,不会显示指定的内容。




:after

:after 伪元素的作用与 :before 选择符很相似,都是用于添加生成的内容。
不过,:after 选择符添加的位置在元素之后,而不是之前。

image.png

CSS代码

p:after {
    content: "<本文完>";
    color: #666;
}


注意!

:before 和 :after 都是伪元素。前面说过,最新版CSS在伪元素前面多加了一个冒号,因此 :before 和 :after 变成了 ::before 和 ::after 。

幸好,浏览器还支持旧的写法,所以可以继续使用 :before 和 :after 。

IE 8 不兼容新写法。




::selection

::selection 是CSS3新加的选择符,用于指代访客在网页中选中的内容。

例如,访客拖动按下的鼠标,选择一些文字之后,浏览器会高亮显示选中的内容。正常情况下,浏览器会以蓝色的背景显示选中的文字,而 IE 会把选中的文字变成白色。

使用 ::selection 可以控制背景色和文字颜色。

0.gif

CSS代码

p::selection {
    color: #fff;
    background-color: #993366;
}

在 ::selection 选择符中,定义的样式只能设置 color 和 background-color 两个属性。不能随心所欲去设置字号、字体、外边距或其他外观,以免出现排版错乱和访客抓狂的情况。

需要注意的是, ::selection 这个伪元素没有单冒号版,因此必须使用两个冒号。也就是说, ::selection 有效,而 :selection 无效!

这意味着IE 8及更早的版本不支持这个选择符。



HTML与CSS 目录:HTML与CSS

上一篇:【CSS选择符】后代选择符

下一篇:【CSS选择符】属性选择符

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容

  • 本文转载自:众成翻译译者:为之漫笔链接:http://www.zcfy.cc/article/239原文:http...
    极乐君阅读 7,192评论 1 62
  • 如果您是一个网页设计和开发者的老手,我想你肯定使用过伪类和伪元素。但我还是建议你去查看一下目录表,可能其中的一两项...
    am1ng阅读 868评论 0 2
  • 伪类: 伪类用于当已有元素处于的某个状态时,为其添加对应的样式,这个状态是根据用户行为而动态变化的.比如说,当用户...
    葶寳寳阅读 873评论 1 13
  • 一、伪元素和伪类的概念 伪类:首先是类的一种,类似class,代表一些元素的状态,逻辑上存在,文档树中却无须标识的...
    07120665a058阅读 1,210评论 0 4
  • 参考书籍:《不抱怨的世界2:关系决定命运》[美]威尔·鲍温 改变自己的看法 虽然在每一种关系中,你只占其中的百分...
    仲夏夜之梦123阅读 235评论 0 1