私はいくつかの同じHTML要素を次々に持っています:
<span>1</span>
<span>2</span>
<span>3</span>
CSSのみを使用して要素間にスペースを追加する最良の方法を探しています
[no space] [1] [space 10px] [2] [space 10px] [3] [no space]
さらに:
UPDATE
はっきりしなかったようです。次のような追加のHTMLマークアップを使用したくない
<span></span> <span></span> <span class="last_span"></span>
テーブルを使いたくない
CSSで最初と最後のスパンを自動的にターゲットにしたい
JavaScriptを使いたくない
オプションの要件:最後のスパンは親タグの最後の子にできませんが、親タグの最後のスパンになります。スパンの間に他のタグはありません。
これを行う良い方法はこれです:
span + span {
margin-left: 10px;
}
span
が前にあるすべてのspan
(つまり、最初を除くすべてのspan
にはmargin-left: 10px
が付きます。
同様の質問に対するより詳細な回答を次に示します。 ハックのない要素間のセパレーター
マージンまたはパディングを使用してください。
特定のケースでは、2番目のmargin:0 10px
でのみ<span>
を使用できます。
UPDATE
素敵なCSS3ソリューションを次に示します( jsFiddle ):
span {
margin: 0 10px;
}
span:first-of-type {
margin-left: 0;
}
span:last-of-type {
margin-right: 0;
}
Internet Explorer 9以降、:nth-child()
、:last-child
、:first-of-type
などのセレクターを使用した高度な要素選択がサポートされています。
span
はインライン要素であるという事実を利用できます
span{
Word-spacing:10px;
}
ただし、スパンに複数のテキストワードがある場合、このソリューションは機能しません。
それはとても簡単です。
1行のコードで、最初の要素を除外して要素のスタイルを設定できます。
span ~ span {
padding-left: 10px;
}
そして、クラス操作なしで完了しました。
次のように書くことができます:
span{
margin-left:10px;
}
span:first-child{
margin-left:0;
}
span:not(:last-child) {
margin-right: 10px;
}
これらのルールを親コンテナに追加します。
display: grid
grid-auto-flow: column
grid-column-gap: 10px
良いリファレンス: https://cssreference.io/
ブラウザの互換性: https://gridbyexample.com/browsers/
コンテナ内に要素をラップし、 css grid 、 無料コース などの新しいCSS3機能を使用してから、特定の問題に対して作成されたgrid-gap:value
を使用する必要があります
span{
border:1px solid red;
}
.inRow{
display:grid;
grid-template-columns:repeat(auto-fill,auto);
grid-gap:10px /*This add space between elements, only works on grid items*/
}
.inColumn{
display:grid;
grid-template-rows:repeat(auto-fill,auto);
grid-gap:15px;
}
<div class="inrow">
<span>1</span>
<span>2</span>
<span>3</span>
</div>
<div class="inColumn">
<span>4</span>
<span>5</span>
<span>6</span>
</div>
<span>
はインライン要素なので、ブロックレベルにせずに間隔を空けることはできません。これを試して
横
span{
margin-right: 10px;
float: left;
}
垂直
span{
margin-bottom: 10px;
}
すべてのブラウザと互換性があります。
span.middle {
margin: 0 10px 0 10px; /*top right bottom left */
}
<span>text</span> <span class="middle">text</span> <span>text</span>
または、マージンを設定して上書きする代わりに、次のコンボを使用してすぐに適切に設定できます。
span:not(:first-of-type) {
margin-left: 5px;
}
span:not(:last-of-type) {
margin-right: 5px;
}