我一直在使用ID加后代样式规则,以使div的所有后代没有填充且没有边距。但是我注意到它比ID选择器中的样式更具体。
我有多个div。有没有一种方法可以使其不那么具体?
在下面的示例中,由于ID + *更具体,因此未应用填充和边框:
#list1item1 {
padding-left: 10px;
outline: 1px dashed green;
}
#list2item1 {
padding-left: 20px;
outline: 1px dashed blue;
}
#GroceryList1 {
left: 40px;
top: 20px;
position: absolute;
}
#GroceryList2 {
left: 200px;
top: 20px;
position: absolute;
}
#GroceryList1 * {
margin: 0;
padding: 0;
outline: none;
}
#GroceryList2 * {
margin: 0;
padding: 0;
outline: none;
}
<div id="GroceryList1">
<ol>
<li id="list1item1">Bread
<li>Stick of Butter
<li>Gallon of milk
</ol>
</div>
<div id="GroceryList2">
<ol>
<li id="list2item1">Bread
<li>Stick of Butter
<li>Gallon of milk
</ol>
</div>
如果不切换到类,是否可以选择div的所有后代,而常规ID选择器更具体?
最佳答案
您可以使用以GroceryList
字符串开头的属性选择器(但不能使用字符串后面的数字)。
[id^=GroceryList] * {
margin: 0;
padding: 0;
outline: none;
}
这不会覆盖您定义的更具体的填充规则。
#list1item1 {
padding-left: 10px;
outline: 1px dashed green;
}
#list2item1 {
padding-left: 20px;
outline: 1px dashed blue;
}
#GroceryList1 {
left: 40px;
top: 20px;
position: absolute;
}
#GroceryList2 {
left: 200px;
top: 20px;
position: absolute;
}
[id^=GroceryList] * {
margin: 0;
padding: 0;
outline: none;
}
<div id="GroceryList1">
<ol>
<li id="list1item1">Bread
<li>Stick of Butter
<li>Gallon of milk
</ol>
</div>
<div id="GroceryList2">
<ol>
<li id="list2item1">Bread
<li>Stick of Butter
<li>Gallon of milk
</ol>
</div>
关于html - 有没有一种方法可以使此ID加上后代CSS规则不太具体?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56843174/