伪类、伪元素选择器

195 阅读3分钟

伪类选择器

定义:
	伪类用于定义元素的特殊状态。由于状态的变化是非静态的,所以元素达到一个特定状态时,
	它可能得到一个样式;当状态改变时,它又会失去这个样式。
	由此可以看出,它的功能和 class 有些类似,但它是基于文档之外的抽象,所以叫伪类。

1. 链接伪类:
	注意: 以下三个是作用于超链接元素 <a> 的!
	:link		表示作为超链接,并指向一个未访问的地址的所有锚
	:visited	表示作为超链接,并指向一个已访问的地址的所有锚
	:target 	代表一个特殊的元素,它的id是URI的片段标识符
		URL 带有后面跟有锚名称 #,指向文档内某个具体的元素。这个被链接的元素就是目标元素(target element)。
		:target 选择器可用于选取当前活动的目标元素。

	由于隐私的原因 :visited选择器, 只能将下列属性应用到已访问链接:
		color
		background-color
		border-color

2. 动态伪类:
	注意:(:hover:active)基本可以作用于所有的元素!
	:hover		表示悬浮到元素上
	:active		表示匹配被用户激活的元素(点击按住时)

	由于a标签的:link:visited可以覆盖了所有a标签的状态,
	所以当:link:visited:hover:active同时出现在a标签身上时,
	a:hover 必须在 CSS 定义中的 a:link 和 a:visited 之后,才能生效!
	a:active 必须在 CSS 定义中的 a:hover 之后才能生效!伪类名称对大小写不敏感。

3. 表单相关伪类:
	:enabled	匹配可编辑的表单
	:disabled	匹配被禁用的表单
	:checked	匹配被选中的表单
	:focus		匹配获焦的表单

4. 结构性伪类:
    :first-child:表示选中第一个子元素
    :last-child: 表示选中最后一个子元素
    :nth-child(index):index的值从1开始计数
		示例:
			#wrap ele:nth-child(index)  表示匹配#wrap中第index的子元素 这个子元素必须是ele
		特殊值:
			n              第n个 n的范围是0到正无穷
			2n 或 even     表示选中偶数位的元素
			2n+1 或 odd    表示选中奇数位的元素
    :nth-last-child(index)
    :only-child	(相对于:first-child:last-child 或者 :nth-child(1):nth-last-child(1))

	:first-of-type
	:last-of-type
    :nth-of-type(index)系列
		示例:#wrap ele:nth-of-type(index)  表示匹配#wrap中第index的ele子元素
    :nth-last-type(index)
    :only-of-type	(相对于:first-of-type:last-of-type 或者 :nth-of-type(1):nth-last-of-type(1))

	此外:nth-child:nth-of-type有一个很重要的区别!!
	nth-of-type以元素为中心!!!

    :not: 否定伪类
    :empty(内容必须是空的,有空格都不行,有attr没关系)

伪元素选择器

表示页面中一些特殊的并不真实存在的元素(特殊的位置)
语法:使用双冒号(::)开头

::after
::before
::first-letter
::first-line
::selection