<body> <main> <section> ... </section> <aside> ... </aside> </main> </body>
问题在于,并不是所有页面都有< aside>
我需要选择< section>并给它一个最大宽度:500px;仅在< aside>存在.默认值为{max-width:1000px; }(当< aside>不存在)
不同于Selector for one tag directly followed by another tag;用户[询问]想要“B”的所有时间.此外,在这个问题中,用户想要选择“B”(而不是“A”)
>我需要样式< section>只有< aside>存在.
>我无法更改HTML的顺序> _<
>只能用CSS完成?
>我需要什么选择器或如何设置?
>如果不能用CSS完成(我宁愿只用CSS),我该怎么做呢?
解决方法
您可以通过使用技巧来检查< section>元素是< main>中唯一的元素.如果那里还有其他的元素,这将不起作用.在你的情况下,它应该像这样工作(http://jsfiddle.net/Ljm323qb/2/):
section { max-width: 500px; } /* The STAR of the show */ section:only-child { max-width: 1000px; }
如本代码所示:http://codepen.io/omarjuvera/pen/ByXGyK?editors=110
兄弟选择器上的一般东西
有一个选择器将选择一个兄弟姐妹,紧跟着元素(https://developer.mozilla.org/en-US/docs/Web/CSS/Adjacent_sibling_selectors)
还有〜选择器选择所有以下兄弟姐妹(https://developer.mozilla.org/en-US/docs/Web/CSS/General_sibling_selectors)
您可以通过将< aside> < section>之前的元素元素并使用兄弟选择器.
这里有一个例子:http://jsfiddle.net/Ljm323qb/1/
快速浏览未来
很快这将是可能的,有一个新的:有伪类(http://dev.w3.org/csswg/selectors-4/#relational)你可以调用main:has(> aside)>部分{…},但我们必须等待,不幸的是