【发布时间】:2017-05-16 11:15:56
【问题描述】:
有没有什么方法可以完成兄弟选择器的所有组合,而不必一一写出来?
假设我想在第二个元素中使用font-size: 30px;,任何元素都可以是a、b 或span。
我通常会写:
a + b, b + a, a + span, span + a, b + span, span + b {
font-size: 30px;
}
但这会导致n*(n-1) 组合!
我期待这样的事情:
{a,b,span} + {a,b,span} {
font-size: 30px;
}
如果没有其他选择,请告诉我最好的选择是否始终确保包含的元素始终是我想要的类型,以便我可以使用 *:
* + * {...}
CSS 解决方案(如果可能),或 SCSS(如果它导致更清洁或唯一可能的解决方案)。
编辑:
你们中的一些人建议nth-child。虽然这对一两种格式有好处,但这不是我的目标(我的错,应该更好地指定它)。
我的意思是为包含不同格式的长 div 文本提供结果。即:
<div class="text">
<span>The weather</span> <i>is</is> <img src... /> <b>nice</b> <span>today</span>
</div>
所以,我最初的想法是将我想要格式化的那些更改为<div class="whatever">,这样我就可以将div 专注于某个类。但话又说回来,像{ span, i, b } 这样的东西是最理想的。
【问题讨论】:
-
这个怎么样? jsfiddle.net/0zguo1jr/1
-
@VincentG 这不是理想的解决方案,我必须始终确保
a旁边的元素是我要格式化的类型。 -
您可以使用
* > :nth-child(2)或:nth-child(2),但这会导致继承/级联问题,除非您真的希望每个第二个孩子(无限制)都被设计。 -
@DavidThomas Ugh 是的:/,我宁愿确保所有元素的类型都正确,而不是必须对每个
nth-child进行硬编码
标签: css sass css-selectors