css 伪类选择器

链接伪类选择器

选择器:link

  • 超链接未被访问时的样式

选择器:visited

  • 超链接已被访问时的样式

选择器:target

  • 当被超链接点击时
    • 子元素设置id,超链接设置href=‘#id’,当点击超链接时该元素触发样式

触发类型选择器

选择器:hover

  • 鼠标悬停样式
    • 选中上级元素下级元素产生动画
    • 上级元素:hover 下级元素选择器(以上级元素为起始点开始选择,不包括上级,非从头)
对伪类产生样式
xx:hover::after{...}

选择器:active

  • 鼠标按下时的样式

选择器:focus

  • 鼠标聚焦时的样式

元素相关类型选择器

:root根选择器

:root{
	匹配根元素,HTML,根元素始终是html元素。
}

:empty空选择器

  • 选择子元素为空的元素

选择器:lang(xx)

  • 选择每个lang属性值以"xx"开头的元素。

结构性伪类选择器

选择器:not(选择器)

  • 匹配不含有括号内选择器的元素样式
    • :not(:last-child) 当:not前面没有选择器时,会匹配所有非not内选择的元素
      :not(#id)
<ul>
    <li>右边框</li>
    <li>右边框</li>
</ul>
ul li:not(:last-child) {
    border-right: 1px solid #666;
}

选择器:first-child

  • 选择器必须是子元素,匹配父元素的第一个子元素的样式

选择器:first-of-type

  • 选择器必须是子元素,匹配父元素的第一个选择器元素的样式

选择器:last-child

  • 选择器必须是子元素,匹配父元素的最后一个子元素的样式

选择器:last-of-child

  • 选择器必须是子元素,匹配父元素的最后一个选择器元素的样式

选择器:only-child

  • 选择器必须是子元素,匹配在父元素的子元素中唯一的一个标签

选择器:ntn-child(第几个子元素)

  • 选择器必须是子元素,匹配父元素中的第几个子元素
  • 可以放表达式
li:nth-child(odd){}
li:nth-child(even){}

li:nth-child(2n+1){	an+b格式的表达式,a可以是负数
	color:coral;
} 匹配奇数个子元素

选择器:nth-of-type(第几个子元素)

  • 选择器必须是子元素,根据子元素类型匹配其中的序列

选择器:nth-last-child(n)

  • 选择器必须是子元素,从最后开始匹配父元素中的第几个子元素

选择器:nth-last-of-type(n)

  • 选择器必须是子元素,根据子元素类型从最后匹配其中的序列

选择器:only-of-type

  • 选择器必须是子元素,匹配父元素中只有一个该子元素的元素

选择器:only-child

  • 选择器必须是子元素,匹配父元素只有一个子元素,且子元素为该选择器选择的元素

选择器:empty

  • 匹配不包含任何子元素的元素的样式

选择器:has(选择器),可用于向前选择!!!

  • 选择包含选定元素的元素,可用于向前选择
    • 可以实现类似“父选择器”和“前面兄弟选择器”的功能
/* 子元素是图片的a标签 */
a:has(> img) {
  display: block;
}

/* 后面是p标签的h5 */,相当于“前面兄弟选择器”
h5:has(+ p) {
  font-size: 1rem;
}

/* 提交按钮未被禁用的表单 */
form:has(.submit:not(:disabled)) {
	  border-color: green;
}

表单相关选择器

:focus-within 焦点即后代焦点选择器

:focus-within{
	表示一个元素获得焦点或该元素的后代元素获得焦点时匹配,焦点情况包括按钮被点击
}	

:placeholder-shown 展示placeholder选择器

:placeholder-shown{<input /><textarea> 元素显示placeholder text时匹配,即点击或输入placeholder消失时不匹配
}

input:checked

  • 选择器匹配每个已被选中的input 元素(只用于单选按钮和复选框)
input:checked+span{
	color: red;
} 选择后的第一个span标签内容变红色,实现动态效果

:disabled

  • 匹配被禁用的元素,大多在表单元素上

input:enabled

  • 匹配已启用的元素(未禁用)

input:in-range

  • 选择值在指定范围内的所有input元素
<input type="number" min="5" max="10" value="7">

input:out-of-range

  • 选择值在指定范围外的所有input元素

input:invalid

  • 选择无效的表单元素
    • 适用于有限制的表单元素,例如带有min和max属性的输入元素,没有合法电子邮件的email字段或没有数值的number字段等

:valid

  • 同上,有效的表单元素

:optional

  • 选择器仅适用于这几个表单元素:input、select和textarea,不带required属性的表单元素

:required

  • 带有 required 属性的表单元素被定义为必填。
    • 适用于这几个表单元素:inpu、select 以及 textarea。

:read-only

  • 带"readonly"属性的表单元素被定义为“只读”

:read-write

  • 未设置"readonly"和"disabled"属性的表单元素被定义为可读和可写。

其它magic选择器

:is(选择器1,选择器2) 最大能力选择器

  • :is(选择器1,选择器2) 留下其中可以作为选择的选择器
ul li,ol li {}	可化简为 :is(ul, ol) li {}
ul .title, ul .content{} 可化简为.container-1 :is(.title, .content){}

代码示例:

<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			
			a:link{
				color:yellow;
				text-decoration: none;
			}
			a:visited{
				color:red;
			}
			a:active{
				color:blue;
			}
			.common{
				color:aqua;
			}
			p:not(.common){
				color:cadetblue;
			}
			li:first-child{
				color:chartreuse;
			}
			li:last-child{
				color:saddlebrown;
			}
			p:only-child{
				color:olivedrab;
			}
			
			p:empty{
				font-weight: bold;
			}
			input:checked+span{
				color: red;
			}
			li:nth-child(2n+1){
				color:coral;
			}
		</style>
	</head>
	<body>
		<a href="">超链接</a>
		<p>aaaawww</p>
		<p class="common">啊啊啊啊啊啊啊啊</p>
		<p>哇啊啊啊啊啊啊啊啊啊啊</p>
		<p>哈哈哈哈哈哈哈哈哈</p>
		<input type="button" value="d"/>
		
		<p>	<a href="">绘画</a></p>
		
		<b >aaaaaann</b>
		<hr />
		<ul>
			<li></li>
			<li></li>
			<li></li>
			<p>唯一</p>
			<li></li>
			<li></li>
			<li></li>
		</ul>
		<hr />
		<ul>
			<li>1</li>
			<li>2</li>
			<li>3</li>
			<li>4</li>
			<li>5</li>
			<li>6</li>
		</ul>
		<hr />
		:<input type="radio" checked="checked" />
		爱好: 	<input type="checkbox" /><span>篮球</span>
				<input	type="checkbox"/ checked=:"checked"><span>唱跳</span>
				<input	type="checkbox"/><span>rap</span> 
	</body>
</html>
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值