我正在寻找下表的CSS选择器:
Peter | male | 34
Susanne | female | 12
是否有任何选择器来匹配所有包含“男性”的td ?
我正在寻找下表的CSS选择器:
Peter | male | 34
Susanne | female | 12
是否有任何选择器来匹配所有包含“男性”的td ?
当前回答
到2021年1月,有一些东西会做到这一点。:有()……只有一个问题:目前还没有任何浏览器支持这个功能
示例:下面的选择器只匹配直接包含子元素的元素:
a:has(> img)
引用:
https://developer.mozilla.org/en-US/docs/Web/CSS/:has
https://caniuse.com/?search=has
其他回答
如果我没看错说明书的话,没有。
您可以在元素上匹配元素中属性的名称和元素中命名属性的值。但是,我没有看到任何用于匹配元素中的内容的东西。
做这样的小过滤器:
var searchField = document.querySelector('HOWEVER_YOU_MAY_FIND_IT')
var faqEntries = document.querySelectorAll('WRAPPING_ELEMENT .entry')
searchField.addEventListener('keyup', function (evt) {
var testValue = evt.target.value.toLocaleLowerCase();
var regExp = RegExp(testValue);
faqEntries.forEach(function (entry) {
var text = entry.textContent.toLocaleLowerCase();
entry.classList.remove('show', 'hide');
if (regExp.test(text)) {
entry.classList.add('show')
} else {
entry.classList.add('hide')
}
})
})
恐怕这是不可能的,因为内容没有属性,也不能通过伪类访问。CSS3选择器的完整列表可以在CSS3规范中找到。
到2021年1月,有一些东西会做到这一点。:有()……只有一个问题:目前还没有任何浏览器支持这个功能
示例:下面的选择器只匹配直接包含子元素的元素:
a:has(> img)
引用:
https://developer.mozilla.org/en-US/docs/Web/CSS/:has
https://caniuse.com/?search=has
所有这些都是很好的答案,但我认为我可以添加一些在实际场景中对我有用的东西:利用CSS的aria-label属性。
对于那些不知道的读者:aria-label是一个属性,它与其他类似的属性一起使用,让屏幕阅读器知道什么是什么,以防有视力障碍的人在使用你的网站。许多网站将这些属性添加到包含图像或文本的元素中,作为“描述符”。
这使得它高度特定于网站,但如果你的元素包含这个,使用属性的内容选择该元素是相当简单的:
HTML:
<td aria-label="male">Male</td>
<td aria-label="female">Female</td>
CSS:
td[aria-label="male"] {
outline: 1px dotted green;
}
从技术上讲,这与使用数据属性解决方案是一样的,但如果你不是网站的作者,这也适用于你,而且这不是一些专门为支持此用例而设计的过时解决方案;它本身是相当常见的。它的一个缺点是,实际上不能保证您想要的元素将具有此属性。