菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
29
0

css属性选择器有哪些?

原创
05/13 14:22
阅读数 1116

css属性选择器有哪些?

  • [attribute] 用于选取带有指定属性的元素。

    该选择器选择包含 attribute 属性的所有元素,不论 attribute 的值为何。

  • [attribute=value] 用于选取带有指定属性和值的元素。

    该选择器仅选择 attribute 属性被赋值为 value 的所有元素。

  • [attribute~=value] 用于选取属性值中包含指定词汇的元素。

    该选择器仅选择具有 attribute 属性的元素,而且要求 value 值是 attribute 值包含的被空格分隔的取值列表里中的一个。

下面几个属于 CSS3 新增语法,也被称为“伪正则选择器”,因为它们提供类似 regular expression 的灵活匹配方式。

  • [attribute|=value] 用于选取带有以指定值开头的属性值的元素,该值必须是整个单词。

    选择attribute属性的值是 value 或值以 value- 开头的元素(注意,这里的 “-” 不是一个错误,这是用来处理语言编码的)。

  • [attribute^=value] 匹配属性值以指定值开头的每个元素。

    选择 attribute 属性的值以 value 开头(包括 val)的元素。

  • [attribute$=value] 匹配属性值以指定值结尾的每个元素。

    选择 attribute 属性的值以 value 结尾(包括 value)的元素。

  • [attribute*=value] 匹配属性值中包含指定值的每个元素。

    选择 attribute 属性的值中包含子字符串 value 的元素(一个子字符串就是一个字符串的一部分而已,例如,”cat“ 是 字符串 ”caterpillar“ 的子字符串

CSS 属性选择器的最基本用法

属性选择器最基本的用法,就是通过元素的属性值去选择 DOM 元素。像这样,将选中所有带 href 属性的DOM 元素:

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<style type="text/css">
		p {
			width: 30vw;
			margin: 50px auto;
			font: 16px/2 sans-serif;
		}
		
		[href] {
			color: red;
		}
	</style>
</head>

<body>
	<p>这里是一段描述性的文案,里面有许多 a 标签,链接了许多不同的网页。
	<a href="https://developer.mozilla.org/zh-CN/docs/Web/CSS/Attribute_selectors">MDN-属性选择器</a>
	,又或者其他的
	<a href="https://developer.mozilla.org/zh-CN/docs/Learn/CSS/Introduction_to_CSS/Attribute_selectors">
	网页链接
	</a>。
	</p>
</body>

</html>

1.jpg

复杂一点点的用法

层叠选择

div [href]{
...
}

多条件复合选择

选择一个 img 标签,它含有 title 属性,并且包含类名为 logo 的元素。

img[title][class~=logo]{
...
}

伪正则写法

  • i 参数

忽略类名的大小写限制,选择包含 class 类名包含子字符串为 text,Text,TeXt... 等情况的 p 元素。 这里的 i 的含义就是正则里面参数 i 的含义,ignore,忽略大小写的意思。

p[class*="text" i] {
...
}

所以上面的选择器可以选中类似这样的目标元素:

<p class="text"></p>
<p class="nameText"></p>
<p class="desc textarea"></p>
  • g 参数

与正则表达式不一样,参数 g 在这里表示大小写敏感(case-sensitively)。然而,这个属性当前仍未纳入标准,支持的浏览器不多。

配合 :not() 伪类

还有一种比较常用的场景就是搭配 :not() 伪类,完成一些判断检测性的功能。譬如下面这个选择器,就可以选取所有没有 [href] 属性的 a 标签,添加一个红色边框。

a:not([href]){
    border: 1px solid red;
}

当然,复杂一点,我们可以搭配不仅仅一个 :not()伪类,像是这样,可以同时多个配合使用,选择一个 href, target, rel 属性都没有的 a 标签:

a:not([href]):not([target]):not([rel]){
    border: 1px solid blue;
}

示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<style type="text/css">
			body {
				padding: 30px;
			}
			a {
				font: 18px/1.5 sans-serif;
				margin-right: 20px;
				border: 1px solid black;
				padding: 5px;
				text-decoration: none;
				color: #000;
			}
			a:not([href]) {
				border: 1px solid red;
			}
			a:not([href]):not([target]):not([rel]) {
				border: 1px solid blue;
			}
		</style>
	</head>

	<body>
		<a href="#">非空 a 标签"</a>
		<a target="_blank">target="_blank"</a>
		<a>空 a 标签"</a>
	</body>
</html>

2.jpg

发表评论

0/200
29 点赞
0 评论
收藏
为你推荐 换一批