ScottS のソリューションよりも少し単純な別のソリューションを次に示します。::before
またはの配置や使用を必要とせず、代わりに最後の表示項目を超えて伸びない::after
という事実に依存しています。::first-line
マークアップ
<div class="itemContainer">
<div class="item">1</div><div
class="item">2</div><div
class="item">3</div><div
class="item">4</div><div
class="item">5</div><div
class="item">6</div><div
class="item">7</div><div
class="item">8</div><div
class="item">9</div><div
class="item">10</div>
</div>
このソリューションは要素間の空白に敏感であるため、連続する.item
の間の改行/スペースを削除する必要があることに注意してください。上記のタグ名とクラスの間を改行して、読みやすくしました。
CSS
.itemContainer {
overflow: hidden;
height: 70px; /* .item's offset height + margin */
/* you can constrain the width of this any way you like */
}
.itemContainer::first-line {
font-size: 70px; /* needs to be at least as big as .wrap height */
line-height: 0px; /* fixes oddities in Firefox */
background: black; /* "border" color */
}
.item {
display: inline-block;
vertical-align: text-top; /* this minimizes the font-size required above */
margin: 10px; /* include desired "border" size of .itemContainer */
box-shadow: 0 0 0 9px white; /* spread = desired margin */
background: white; /* needs an opaque background */
/* reset font-size and line-height */
font-size: 1rem;
line-height: 1.5;
/* set your item size and borders however you like */
height: 50px;
width: 50px;
border: 1px solid red;
box-sizing: border-box;
}
.item::first-line {
font-size: 1rem; /* fix IE precedence */
}
.item + .item {
margin-left: 0; /* inline-block margins don't collapse */
}
結果
Safari、Chrome、Firefox、IE 11 でテスト済み。