Есть (по крайней мере) два способа сделать это без изменения HTML.
Первый способ заключается в том, чтобы сказать: «Дайте мне всех детей main
, которые не h2
.
Другой путь, вдохновленный комментарием chriskirknielsen , это использовать общий комбинатор братьев и сестер и получить всех братьев и сестер h2
.
Конечно, оба они предполагают, что это «все элементы на одном уровне», что вы хочу, а не «все элементы на одном уровне после указанной c точки в DOM», потому что последнее просто невозможно.
main > *:not(h2) {
margin-top:20px;
margin-bottom:20px;
border-top: 1px solid red;
}
/* OR */
h2 ~ * {
margin-top:20px;
margin-bottom:20px;
border-bottom: 1px solid green;
}
<div id="content">
<main>
<h2 > Example Title</h2>
<p>Hello World</p>
<table class="table table-striped table-responsive-md btn-table">
<tr>
<td>Example 1 </td>
<td>Example 2</td>
</tr>
</table>
</main>
</div>