仅在元素旁边存在某个元素时才将样式应用于元素

Ada*_*her 8 css html5 css3

<section>在几个页面上使用标签,但在一个页面上我使用的是<aside>标签前面的<section>标签.

在我<section>紧跟一个a的情况下<aside>,我想对两者都应用一个宽度,并使该部分向左浮动,并且向右浮动.

基本上,如果我有一个<section>,<aside>我希望风格像这样工作:

section {
    width: 500px;
    float: left;
    padding: 8px;
}

aside {
    padding:8px; 
    width:400px;
    float:right;
}
Run Code Online (Sandbox Code Playgroud)

如果我只有<section>我希望它像:

section {
    padding: 8px;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法可以用CSS3中的条件语句或伪类来完成这个,而不必使用JavaScript,自定义类或单独的CSS文件?

Lin*_*ell 13

这只适用<section/><aside/>:

<aside>content</aside>
<!-- if there is another node in between, use the '~' selector -->
<section>content</section>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您可以使用aside ~ sectionaside + section:

section {
    padding: 8px;
}
aside + section {
    width: 500px;
    float: left;
}
Run Code Online (Sandbox Code Playgroud)

在所有其他情况下,您将不得不使用JavaScript,因为这些选择器仅在一个方向上工作,从上到下.

使用CSS4可能有一种方法使用带有子组合子的选择器主题,但那是未来. 此选择器已从规范中删除.