Хакерский способ с использованием только +
селектора и без необходимости nth-*
селекторов, и он может работать с любым смежным набором элементов одного типа.
Возможно, вам придется настроить различные значения, используемые впсевдоэлементы в зависимости от ситуации:
div {
padding: 10px;
border: solid 2px;
border-radius: 10px;
display: inline-block;
position: relative;
}
div + div:before,
div + div:after {
content: "";
position: absolute;
top: -2px;
bottom: -2px;
width: 8px;
border: 2px solid;
background: #fff;
}
div + div:before {
border-left: 0;
right: calc(100% + 4px);
}
div + div:after {
border-right: 0;
left: -2px;
}
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<span>--</span>
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<span>--</span>
<div>1</div>
<div>2</div>
<span>---</span>
<div>1</div>
В случае, если у вас будет только один непрерывный набор элементов одного типа в контейнере, вы можете попробовать это.Хитрость заключается в том, чтобы избежать сокращенной версии border-radius
, чтобы она могла работать с одним элементом:
div {
padding: 10px;
border: solid 2px;
display: inline-block;
position: relative;
}
div:first-of-type {
border-top-left-radius: 10px;
border-bottom-left-radius: 10px;
}
div:last-of-type {
border-top-right-radius: 10px;
border-bottom-right-radius: 10px;
}
<section>
<span>---</span>
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<span>---</span>
</section>
<section>
<span>---</span>
<div>1</div>
<div>2</div>
<span>---</span>
</section>
<section>
<span>---</span>
<div>1</div>
<span>---</span>
</section>