#书摘 #css #前端
《CSS 选择器世界》6.3 属性值正则匹配选择器
属性值正则匹配选择器包括下面3种:
这3种属性选择器就完全是字符匹配了,而非单词匹配。其中,尖角符号`^`、美元符号`$`以及星号`*`都是正则表达式中的特殊标识符,分别表示**前匹配、后匹配和任意匹配**。
1.
- 这种选择器可以匹配中文,如果匹配的中文不包含特殊字符(如空格等),则引用中文的引号是可以省略的,例如:
- 理论上可以匹配空格,但由于IE浏览器会自动移除属性值首尾的空格,因此会有兼容性问题
例如,下面的样式可以对HTML格式进行验证:
实际开发中,开头正则匹配属性选择器用得比较多的地方是**判断`<a>`元素的链接地址类型**,也可以用来显示对应的小图标,例如:
2.
该选择器的使用细节和
**在实际开发中,结尾正则匹配属性选择器用得比较多的地方是判断`<a>`元素的链接的文件类型**,也可以用来显示对应的小图标。例如:
3.
它也可以用来匹配链接元素是否是外网地址,例如:
《CSS 选择器世界》6.3 属性值正则匹配选择器
属性值正则匹配选择器包括下面3种:
[attr^="val"]
[attr$="val"]
[attr*="val"]
这3种属性选择器就完全是字符匹配了,而非单词匹配。其中,尖角符号`^`、美元符号`$`以及星号`*`都是正则表达式中的特殊标识符,分别表示**前匹配、后匹配和任意匹配**。
1.
[attr^="val"]
[attr^="val"] 表示**匹配attr属性值以字符val开头的元素**。例如:
<!-- 匹配 -->
<div attr="val"></div>
<!-- 不匹配 -->
<div attr="text val"></div>
<!-- 匹配 -->
<div attr="value"></div>
<!-- 匹配 -->
<div attr="val-ue"></div>
- 这种选择器可以匹配中文,如果匹配的中文不包含特殊字符(如空格等),则引用中文的引号是可以省略的,例如:
[title^=我] {}
- 理论上可以匹配空格,但由于IE浏览器会自动移除属性值首尾的空格,因此会有兼容性问题
例如,下面的样式可以对HTML格式进行验证:
/*高亮类属性值包含多余空格的元素*/
[class^=" "] {
outline: 1px solid red;
}
实际开发中,开头正则匹配属性选择器用得比较多的地方是**判断`<a>`元素的链接地址类型**,也可以用来显示对应的小图标,例如:
/* 链接地址 */
[href^="http"],
[href^="ftp"],
[href^="//"] {
background: url(./icon-link.svg) no-repeat left;
}
/* 网页内锚链 */
[href^="#"] {
background: url(./icon-anchor.svg) no-repeat left;
}
/* 手机和邮箱 */
[href^="tel:"] {
background: url(./icon-tel.svg) no-repeat left;
}
[href^="mailto:"] {
background: url(./icon-email.svg) no-repeat left;
}
2.
[attr$="val"]
[attr$="val"] 表示**匹配attr属性值以字符val结尾的元素**。例如:
<!-- 匹配 -->
<div attr="val"></div>
<!-- 匹配 -->
<div attr="text val"></div>
<!-- 不匹配 -->
<div attr="value"></div>
<!-- 不匹配 -->
<div attr="val-ue"></div>
该选择器的使用细节和
[attr^="val"] 的一致,这里不再赘述。**在实际开发中,结尾正则匹配属性选择器用得比较多的地方是判断`<a>`元素的链接的文件类型**,也可以用来显示对应的小图标。例如:
/* 指向PDF文件 */
[href$=".pdf"] {
background: url(./icon-pdf.svg) no-repeat left;
}
/* 下载zip压缩文件 */
[href$=".zip"] {
background: url(./icon-zip.svg) no-repeat left;
}
/* 图片链接 */
[href$=".png"],
[href$=".gif"],
[href$=".jpg"],
[href$=".jpeg"],
[href$=".webp"] {
background: url(./icon-image.svg) no-repeat left;
}
3.
[attr*="val"]
[attr*="val"] 表示**匹配attr属性值包含字符val的元素**。例如:
<!-- 匹配 -->
<div attr="val"></div>
<!-- 匹配 -->
<div attr="text val"></div>
<!-- 匹配 -->
<div attr="value"></div>
<!-- 匹配 -->
<div attr="val-ue"></div>
它也可以用来匹配链接元素是否是外网地址,例如:
a[href*="//""]:not([href*="example.com"]) {}
https://memo.cosine.ren/m/326