我有一个html页面,其div包含 s1 s , s2 等 id ,等等。
<div id="sections">
<div id="s1">...</div>
<div id="s2">...</div>
...
</div>
我想将css属性应用于这些section / div的子集(取决于id)。但是,每次添加 div 时,我都必须像这样单独添加css。
//css
#s1{
...
}
在css中是否存在类似正则表达式的东西,我可以使用它来将样式应用于一组 divs 。
答案 0 :(得分:153)
您可以管理选择那些没有任何形式的正则表达式的元素,如前面的答案所示,但是直接回答问题,是的,您可以在选择器中使用正则表达式:
#sections div[id^='s'] {
color: red;
}
这就是说#sections div中选择任何div元素,其ID以字母's'开头。
请参阅fiddle here。
答案 1 :(得分:22)
ID用于标识唯一元素。应用于它的任何样式也应该对该元素是唯一的。如果您要将样式应用于许多元素,则应该为它们添加一个类,而不是依赖于ID选择器......
<div id="sections">
<div id="s1" class="sec">...</div>
<div id="s2" class="sec">...</div>
...
</div>
和
.sec {
...
}
或者在您的特定情况下,您可以选择父容器中的所有分区,如果其中没有其他内容,则如下所示:
#sections > div {
...
}
答案 2 :(得分:16)
作为this answer的补充,您可以使用$
来获取最终匹配,并使用*
来获取值名称中的任何位置。
匹配任何地方:.col-md
,.left-col
,.col
,.tricolor
等。
[class*="col"]
开头匹配:.col-md
,.col-sm-6
等
[class^="col-"]
结尾处匹配:.left-col
,.right-col
等
[class$="-col"]
答案 3 :(得分:9)
首先,有许多方法可以匹配HTML文档中的项目。应谨慎使用ID匹配。
首先从此引用开始,查看一些可用的选择器/模式,您可以使用它们将样式规则应用于元素。
http://www.w3.org/TR/selectors/
这些选择器中的大多数都适用于IE 9和所有其他现代浏览器;重要的选择器在IE 8中工作(结果将因IE 7及更低版本而异)。
其次,除非您确实需要通过ID明确命名项目,否则请考虑使用层级选择器。这使代码更清晰。
匹配DIV
的直接后代的所有#sections
。
#sections > DIV
匹配DIV
的直接或间接后代的所有#sections
。
#sections DIV
匹配第一个DIV
,它是#sections
的直接后裔。
#sections > DIV:first-child
将DIV
与特定属性匹配。
#sections > DIV[foo="bar"]
答案 4 :(得分:4)
您只需向每个DIV添加一个类,并以这种方式将规则应用于该类:
HTML:
<div class="myclass" id="s1">...</div>
<div class="myclass" id="s2">...</div>
CSS:
//css
.myclass
{
...
}
答案 5 :(得分:0)
尝试我的通用CSS正则表达式
(([a-z]{5,6}.*?\))|([\d.+-]?)(?![a-z\s#.()%])(\d?\.?\d?)?[a-z\d%]+)|(url\([/"'][a-z:/.]*['")]\))|(rgb|hsl)a?\(\d+%?,?\s?\d+%?,?\s?\d+%?(,\s?\d+\.?\d?)?\)|(#(\w|[\d]){3,8})|([\w]{3,8}(?=.*-))
答案 6 :(得分:0)
当我要获取包含所需字符的所有字符串时,通常使用*
。
*
替换所有字符。
在SASS或CSS中使用的类似于[id*="s"]
,它将获取ID为“ s ......”的所有DOM元素。
/* add red color to all div with id s .... elements */
div[id^="s"] {
color: red;
}
答案 7 :(得分:-5)
还有另一种在css中选择特定元素的简单方法......
#s1, #s2, #s3 {
// set css attributes here
}
如果您只有几个元素可供选择,并且不想打扰课程,这也很容易。