4、伪类和伪元素

什么是伪类?

伪类是用于定义元素的特殊状态/CSS伪类是用来添加一些选择器的特殊效果。

例如,它可以用于:

  • 设置鼠标悬停在元素上时的样式
  • 为已访问和未访问链接设置不同的样式
  • 设置元素获得焦点时的样式

伪类的语法:

selector:pseudo-class {
  property: value;
}

链接能够以不同的方式显示:

/* 未访问的链接 */
a:link {
  color: #FF0000;
}

/* 已访问的链接 */
a:visited {
  color: #00FF00;
}

/* 鼠标悬停链接 */
a:hover {
  color: #FF00FF;
}

/* 已选择的链接 */
a:active {
  color: #0000FF;
}

/*选择获得焦点的链接*/
a:focus{
    color: #0000ff;
}

注意a:hover 必须在 CSS 定义中的 a:link 和 a:visited 之后,才能生效!a:active 必须在 CSS 定义中的 a:hover 之后才能生效!伪类名称对大小写不敏感。

CSS - :first-child 伪类

:first-child 伪类与指定的元素匹配:该元素是另一个元素的第一个子元素,例如:

/*选择器匹配作为任何元素的第一个子元素的任何 <p> 元素*/
p:first-child {
  color: blue;
}
/*匹配所有 <p> 元素中的首个 <i> 元素*/
p i:first-child {
  color: blue;
}

什么是伪元素?

伪元素顾名思义伪装成元素,但不是元素,这与生成内容相关。生成内容主要指由浏览器创建的内容,而不是由标志或内容来表示。生成内容主要由:before和:after伪元素来实现,当然伪元素还包括:first-line,:first-letter和::selection

CSS 伪元素主要用于设置元素指定部分的样式。

例如,它可以用于:

  • 设置元素的首字母、首行的样式
  • 在元素的内容之前或之后插入内容

伪元素的语法:

selector::pseudo-element {
  property: value;
}

::first-line 伪元素

::first-line 伪元素用于向文本的首行添加特殊样式:

/*所有 <p> 元素中的首行添加样式*/
p::first-line {
  color: #ff0000;
  font-variant: small-caps;
}

注意:::first-line 伪元素只能应用于块级元素

以下属性适用于 ::first-line 伪元素:

  • 字体属性
  • 颜色属性
  • 背景属性
  • word-spacing
  • letter-spacing
  • text-decoration
  • vertical-align
  • text-transform
  • line-height
  • clear

::first-letter 伪元素

::first-letter 伪元素用于向文本的首字母添加特殊样式:

/*设置所有 <p> 元素中文本的首字母格式*/
p::first-letter {
  color: #ff0000;
  font-size: xx-large;
}

::first-letter 伪元素只适用于块级元素

下面的属性适用于 ::first-letter 伪元素:

  • 字体属性
  • 颜色属性
  • 背景属性
  • 外边距属性
  • 内边距属性
  • 边框属性
  • text-decoration
  • vertical-align(仅当 "float" 为 "none")
  • text-transform
  • line-height
  • float
  • clear

CSS - ::selection 伪元素

::selection 伪元素匹配用户选择的元素部分:

/*使所选文本在黄色背景上显示为红色*/
::selection {
  color: red; 
  background: yellow;
}

以下 CSS 属性可以应用于 ::selection:

  • color
  • background
  • cursor
  • outline

CSS - ::before 伪元素

::before 伪元素可用于在元素内容之前插入一些内容:

/*在每个 <h1> 元素的内容之前插入一幅图像*/
h1::before {
  content: url(smiley.gif);
}

CSS - ::after 伪元素

::after 伪元素可用于在元素内容之后插入一些内容:

/*在每个 <h1> 元素的内容之后插入一幅图像*/
h1::after {
  content: url(smiley.gif);
}

伪类和伪元素的区别

伪类和伪元素的根本区别在于:它们是否创造了新的元素。

区别一:

伪元素:不存在于DOM文档中,是虚拟的元素,是创建新元素。代表某个元素的子元素,这个子元素虽然在逻辑上存在,但却并不实际存在于文档树中;

伪类:存在于DOM文档中,逻辑上存在但在文档树中却是无须标识的;

区别二:

伪类只能使用“ :”

伪元素既可以使用“:”,也可以使用“::” 因为伪类是类似于添加类,所以可以是多个,而伪元素在一个选择器中只能出现一次,并且只能出现在末尾

区别三:

伪元素要配合content属性一起使用

伪元素不会出现在DOM中,所以不能通过js来操作,仅仅是在 CSS 渲染层加入

伪元素的特效通常要使用:hover伪类样式来激活

伪类则不需要配合content属性

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值