Bootstrapで列の間にスペースを追加するにはどうすればよいですか?


202

この問題には簡単な解決策があると確信しています。基本的に、2つの列がある場合、どうすればそれらの間にスペースを追加できますか?

たとえば、htmlが次の場合:

<div class="col-md-6"></div>
<div class="col-md-6"></div>

出力は、ページの幅全体を占める、隣り合った2つの列になります。幅が1000px次に設定されているとすると、各divは500px広くなります。

100px2つの間にスペースが必要な場合、どうすればこれを達成できますか?明らかに、ブートストラップを介して自動的にdivサイズは450pxそれぞれのスペースを補うようになります

回答:


149

col-md-offset-*ここに記載されているクラスを使用して、列の間隔を空けることができます。すべての列が正しく整列するように、間隔は一定です。均等な間隔と列サイズを取得するには、次のようにします。

<div class="row">
  <div class="col-md-5"></div>
  <div class="col-md-5 col-md-offset-2"></div>
</div>

Bootstrap 4では次を使用します:offset-2またはoffset-md-2


29
列のオフセットではなく、特定のサイズの間隔が必要な場合はどうすればよいですか?
Muhammed Bhikha 2013

3
この場合、提供されているミックスインを使用して列の余白を調整することをお勧めします。ピクセルグリッドに基づいているため、その間に余分な間隔があります。
ベン

2
George-これにはオフセットクラスがあります。ただし、組み込みのガターが不十分である場合は、好みに応じてlessまたはsassから独自のバージョンのブートストラップをコンパイルしてみてください。次に、列の幅とガターをWebサイトに合わせて変更できます。ただし、空のdivを追加することは悪いことではありません。重要なのは、ユーザー(またはチーム)が一貫して使用できるものを思いつくことです。空のdivがそれを達成する方法である場合、それは問題ありません。マークアップは、エンドユーザーではなく開発者が読み取ることを目的としていることに注意してください。
Ben

24
この投稿はまったく答えではありません。質問よりはるかに大きなギャップが生じます。
セバスチャン2016年

2
Bootstrap 4では、これはoffset-md-2またはoffset-2です
Mahesh

318

私は同じ問題に直面していました。そして、以下は私にとってうまくいきました。これが誰かがここに着陸するのに役立つことを願っています:

<div class="row">
  <div class="col-md-6">
     <div class="col-md-12">
        Some Content.. 
     </div>
  </div>
  <div class="col-md-6">
     <div class="col-md-12">
        Some Second Content.. 
     </div>
  </div>
</div>

これにより、2つのdiv間のスペースが自動的にレンダリングされます。

ここに画像の説明を入力してください


主にガター幅による。
Utpal-Ur Best Pal 2016年

14
「ガター幅」とは、ブートストラップのグリッドシステムのコアで定義されたパディングとマージンの間隔を指します。つまり、2番目のdivをcol-xs-12追加することは、divを追加することと同じですwidth:100%; padding:0px 15x;
mix3d

@ sixty4bitでコードを共有してください。私はあなたを助けることができるかもしれません。
ウトパル

@ Utpal-UrBestPal、ありがとうございます!ここに要点があります:gist.github.com/davidcpell/8d344ff18d5d188115c0ff9ba6ef7d14
sixty4bit

2
この修正を使用していて機能しない場合は、@ mix3dの説明でそれが機能する理由を読んでください。
MauF 2017

73

パーティーに遅れるのはわかっていますが、パディングでボックスの間隔を空けることができます。

<div class="col-md-6 box">
        <div class="inner">Hello</div>
</div>
<div class="col-md-6 box">
        <div class="inner">Hello</div>
</div>

CSS:

.box {
    padding: 0 5px 0 5px;
}
.box .inner {
    background-color: #fff;
}

やってみる


本当にあなたが使用できないではないので、row-eq-heightそれを
グレッグ・ウォズ

13

ボーダープロパティでbackground-clipとbox-modelを使用できます

.box{
  box-model: border-box;
  border: 3px solid transparent;
  background-clip:padding-box;
}
<div class="row">
  <div class="col-xs-4 box"></div>
  <div class="col-xs-4 box"></div>
  <div class="col-xs-4 box"></div>
</div>

13

列間のスペースに関しても同様の問題がありました。根本的な問題は、ブートストラップ3と4の列がマージンではなくパディングを使用していることです。したがって、2つの隣接する列の背景色は互いに接触しています。

私の問題に合った解決策を見つけました。列の間隔を空けて、他のグリッドシステムと同じ幅の幅を維持しようとするほとんどの人にとって、おそらくうまくいくでしょう。

これが最終的な結果でした

ここに画像の説明を入力してください

列間にドロップシャドウのギャップがあると問題がありました。列の間に余分なスペースは必要ありませんでした。ガターを「透明」にして、サイトの背景色が2つの白い列の間に表示されるようにしました。

これは2つの列のマークアップです

<div class="row">
    <div class="col-sm-7">
        <div class="raised-block">
            <h3>Facebook</h3>
        </div>
    </div>
    <div class="col-sm-5">
        <div class="raised-block">
            <h3>Tweets</h3>
        </div>
    </div>
</div>

CSS

.raised-block {
    background-color: #fff;
    margin-bottom: 10px;
    margin-left: 0;
    margin-right: -0.625rem; // for us 0.625rem == 10px
    padding-left: 0.625rem;
    padding-right: 0.625rem;
}
@media (max-width: 33.9em){ // this is for our mobile layout where columns stack
    .raised-block {
        margin-left: -0.625rem;
    }
}
.row [class^="col-"]:first-child>.raised-block {
    // this is so the first column has no margin so it will not be "indented"
    margin-left: -0.625rem;
}

このアプローチでは、「行」クラスのブートストラップが使用するのと同じように、負のマージンを持つ内部divが必要です。そして、このdivは「レイズドブロック」と呼ばれ、列の直接の兄弟でなければなりません。

この方法でも、列内に適切なパディングが得られます。スペースを作成することで機能するように見えるソリューションを見たことがありますが、残念なことに、それらが作成する列には行の両側に余分なパディングがあり、グリッドレイアウトが設計されたように行が細くなってしまいます。画像を希望の外観で見ると、2つの列を合わせると、1つの大きい列よりも小さくなり、グリッドの自然な構造が崩れます。

このアプローチの主な欠点は、各列のコンテンツをラップする追加のマークアップが必要になることです。私たちにとってこれは機能します。特定の列だけが目的の外観を実現するために列の間にスペースを必要としたためです。


11

これにより、2つの列の間にスペースができます。デフォルトの幅を変更したい場合は、ミックスインでデフォルトのブートストラップの幅を変更できます。または、インラインCSSスタイルを使用して幅を指定することもできます。

<div class="col-md-5 pull-left"></div>
<div class="col-md-5 pull-right"></div>

4
これのセマンティクスは、@ Muhammedが求めているものとは正確には異なります。プル左、プル右の列の順序の変更を追加しています。
Luchux 2014

9

以下にコード化されたcol-xs- * div内でcol-xs- *クラスを使用して、列間の間隔を達成できます。すべての列が正しく並ぶように、間隔は一定です。均等な間隔と列サイズを取得するには、次のようにします。

<div class="container">
    <div class="col-md-3 ">
        <div class="col-md-12 well">
            Some Content..
        </div>
    </div>
    <div class="col-md-3 ">
        <div class="col-md-12 well">
            Some Second Content..
        </div>
    </div>
    <div class="col-md-3 ">
        <div class="col-md-12 well">
            Some Second Content..
        </div>
    </div>
    <div class="col-md-3 ">
        <div class="col-md-12 well">
            Some Second Content..
        </div>
    </div>
    <div class="col-md-3 ">
        <div class="col-md-12 well">
            Some Second Content..
        </div>
    </div>
    <div class="col-md-3 ">
        <div class="col-md-12 well">
            Some Second Content..
        </div>
    </div>
    <div class="col-md-3 ">
        <div class="col-md-12 well">
            Some Second Content..
        </div>
    </div>
    <div class="col-md-3 ">
        <div class="col-md-12 well">
            Some Second Content..
        </div>
    </div>
</div>

6

ブートストラップの.form-groupクラスを使用します。あなたの場合はこのように:

<div class="col-md-6 form-group"></div>
<div class="col-md-6 form-group"></div>

1
ここでマージンボトムはどのように役立ちますか?
Elisabeth

12
このハックを嫌うために意図的にログインしました。
szdrnja

13
このハックを嫌うために意図的にログインすることについてのコメントに賛成投票するために、私は意図的にログインしました。
Adam Spiers

私は意図的にログインして、意図的にログインすることについてのコメントを賛成投票するだけで、このハックを嫌うように意図的にログインすることについてコメントを賛成投票しています。
ブラック

5

Bootstrap 4のドキュメントによると、親には負のマージンmx-n*を、子には正のパディングを与える必要がありますpx-*

<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet" />
<div class="row mx-n5">
  <div class="col px-5">
    <div class="p-3 border bg-light">Custom column padding</div>
  </div>
  <div class="col px-5">
    <div class="p-3 border bg-light">Custom column padding</div>
  </div>
</div>


私にとって最も効果的なのは(行間の垂直方向の間隔)<div class="row mt-n4"><div class="col-3 pt-4">です。
ギャビン

4

col-md-?内で、別のdivを作成し、そのdivに画像を配置します。

<div class="row">
  <div class="col-md-8">
     <div class="thumbnail">
       <img src="#"/>
     </div>
  </div>
  <div class="col-md-4">
     <div class="thumbnail">
       <img src="#"/>
     </div>
  </div>   
</div>

<style>
  thumbnail{
     padding:4px;
           }
</style>

4

Bootstrap 4、custom.scssファイル、次のコードを追加できます。

$grid-gutter-width-base: 20px;

$grid-gutter-widths: ( xs: $grid-gutter-width-base, 
sm: $grid-gutter-width-base, 
md: $grid-gutter-width-base, 
lg: $grid-gutter-width-base, 
xl: $grid-gutter-width-base
);

デフォルトでは$ grid-gutter-width-base:30px;


1
詳しく説明してもらえますか?うまくいかない
セルバ・ガナパティ

2
@SelvaGanapathiこれらの変数を変更した後に再コンパイルする必要があります:getbootstrap.com/docs/4.0/layout/grid/#customizing-the-grid
gbjbaanb

Bootstrap 4では、これはoffset-md-2またはoffset-2です
Mahesh

2

これを3列で行う方法を理解する必要がありました。divの角を丸くしたいと思っていて、間隔を機能させることができませんでした。マージンを使いました。私の場合、画面の90%がdivで埋められ、10%がマージンで埋められると考えました。

html:

<div class="row">
  <div id="orange" class="col-md-4">
    <h1>Orange Div</h1>
  </div>
  <div id="green" class="col-md-4">
    <h1>Green Div</h1>
  </div>
  <div id="aqua" class="col-md-4">
    <h1>Aqua Div</h1>
  </div>
</div>

およびCSS:

#orange {
    background-color:orange;
    border-radius: 30px;
    padding: 20px;
    margin: 2.5% 2.5% 0 2.5%;
    width:30%;
}
#green {
    background-color:green;
    border-radius: 30px;
    padding: 20px;
    margin: 2.5% 0 0 0;
    width:30%;
}
#aqua {
    background-color:#39F;
    border-radius: 30px;
    padding: 20px;
    margin: 2.5% 2.5% 0 2.5%;
    width: 30%;
}

モバイルデバイス用に正しくサイズ変更するために、CSSで幅を30%からwidth:92.5%;下に変更しました@media (max-width:1023px)


2

ブートストラップを使用しているので、応答性を高めたいと思います。その場合は、たとえば「px」などの固定サイズを使用しないでください。

他のソリューションの回避策として、両方の列を「col-md-6」ではなく「col-md-5」にすることを提案し、次に列を含む親要素「row」にクラス「justify-content」を追加します-between "は、ここにブートストラップドキュメント確認できるように、中央に空き領域を配置します。

このソリューションは、もちろん「col-md-x」を調整する3つ以上の列にも有効です。

それが役に立てば幸い ;)


1

シンプルです.. col- *に右、左の実線のボーダーを追加する必要があります。

それは次のようになります:http : //i.stack.imgur.com/CF5ZV.png

HTML:

<div class="row">
     <div class="col-sm-3" id="services_block">

     </div>
     <div class="col-sm-3" id="services_block">

     </div>
     <div class="col-sm-3" id="services_block">

     </div>
     <div class="col-sm-3" id="services_block">

     </div>
</div>

CSS:

div#services_block {
   height: 355px;
   background-color: #33363a;
   border-left:3px solid white;
   border-right:3px solid white;
}

8
同じページで複数のIDを使用しないでください。CSSの使用方法に関する知識がまったくありません。代わりにクラスを使用してください。
LowFieldTheory 2016年

1

私はこの投稿が少し古いことを知っていますが、これと同じ問題に遭遇しました。私のhtmlの例。

<div class="row">
    <div class="col-xs-3">
        <div class="form-group">
            <label asp-for="FirstName" class="control-label"></label>
            <input asp-for="FirstName" class="form-control" />
            <span asp-validation-for="FirstName" class="text-danger"></span>
        </div>
    </div>
    <div class="col-xs-3">
        <div class="form-group">
            <label asp-for="LastName" class="control-label"></label>
            <input asp-for="LastName" class="form-control" />
            <span asp-validation-for="LastName" class="text-danger"></span>
        </div>
    </div>            
</div>

グループ間にスペースを作成するために、負のマージンを5減らして、私のsite.cssファイルで-15pxのブートストラップのマージンを上書きしました。

これが私がしたことです...

.form-group {
    margin-right: -10px;
}

これが他の誰かの役に立つことを願っています。


1

私はモバイルで1列、タブレットの縦方向から2列、中央で等間隔に(列内にグリッドが追加されたパディングなしで)必要でした。間隔ユーティリティを使用して、数を省略して達成できますcol-md

    <div class="container-fluid px-0">
        <div class="row no-gutters">
            <div class="col-sm-12 col-md mr-md-3" style="background-color: orange">
                <p><strong>Column 1</strong></p>
            </div>
            <div class="col-sm-12 col-md ml-md-3" style="background-color: orange">
                <p><strong>Column 1</strong></p>
            </div>
        </div>
    </div>

0

cssを使用して背景と同じ色のボーダーを追加するだけではどうですか?私はこれが初めてなので、たぶんそれをしない理由があるのか​​もしれませんが、試してみるとよさそうです。


5
スタックオーバーフローへようこそ。質問の詳細や説明が必要な場合は、回答ではなくコメントを使用してください。
β.εηοιτ.βε

背景が単色ではなく画像/テクスチャを使用している場合、これは明らかです。
Charles Watson

0

列間の特定の幅の間隔を取得するにpaddingは、標準のBootstrapのレイアウトで設定する必要があります。

@import url('https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css');

/* Check breakpoint at http://getbootstrap.com/css/#grid-media-queries */
@media (min-width: 992px) { 
  .space-100-px > .row > .col-md-6:first-child {
    padding: 0 50px 0 0; /* The first half of 100px */
  }
  .space-100-px > .row > .col-md-6:last-child {
    padding: 0 0 0 50px; /* The second half of 100px */
  }
}

/* The result will be easier to see. */ 
.space-100-px img {
  width: 100%;
  height: auto;
}
<div class="container-fluid space-100-px">
  <div class="row">
    <div class="col-md-6">
      <img src="http://placehold.it/450x100?text=Left" alt="Left">
    </div>
    <div class="col-md-6">
      <img src="http://placehold.it/450x100?text=Right" alt="Right">
    </div>
  </div>
</div>


0

これは役に立ちます。

.list-item{
  margin-right:-10px;
   margin-top:10px;
    margin-bottom: 10px;
    border: 1px solid #eee;
    padding: 0px;
  }
<div class="col-md-4">
  <div class="list-item">
      <h2>Your name</h2> 
  </div>
</div>
<div class="col-md-4">
   <div class="list-item"></div>
</div>

ボックスの右側の余白を増やしたり減らしたりする場合は、list-itemのmargin-rightプロパティを編集します。

出力例

ここに画像の説明を入力してください


0

wrap要素の周りの白い境界線

.padding-pls{
  border-left: 13px solid white;
  border-right: 13px solid white;
}
.row .col-md-6:first-child>.padding-pls {
  border-left: 0px solid white;
}
.row .col-md-6:last-child>.padding-pls {
  border-right: 0px solid white;
}

最初と最後の子に境界線なし

    <div class="row">
      <div class="col-md-6">
        <div class="col-md-12 padding-pls">
          Keci
        </div>
      </div>
      <div class="col-md-6">
        <div class="col-md-12 padding-pls">
          Keci
        </div>
      </div>
  </div>

0
    <div class="col-md-12 no_padding header_row"></div>



    <div class="second_row">
        <div class="col-md-4 box_shadow"></div>
        <div class="col-md-8 no_padding_right">
            <div class="col-md-12 box_shadow"></div>
        </div>
    </div>


    body{
    background:#F0F0F0;
}

.main_holder{
    min-height: 600px;
    margin-top: 40px;
    height: 600px;
}
.box_shadow{
    box-shadow: 0 1px 2px rgba(0,0,0,.1);
    background: white;
    height: auto;
    min-height: 500px;
}

.no_padding{
    padding: 0px !important;
}

.no_padding_right{
    padding-right: 0px !important;
}

.header_row{
    height: 60px;
    background: #00796B;
    -webkit-box-shadow: 0px 0px 9px 1px rgba(143,140,143,1);
    -moz-box-shadow: 0px 0px 9px 1px rgba(143,140,143,1);
    box-shadow: 0px 0px 9px 1px rgba(143,140,143,1); 
}

.second_row{
    position: relative;
    width: 100% !important;
    top: 20px;
}

2
何がなぜ役立つのかについて少し散文します。
Uwe Allner、2016年

0
<div class="col-md-6">
    <div class="inner">
        <!-- Put the col-6 elements in the inner div -->
    </div>
</div>

デフォルトでは、これにより、外側のdiv内に必要と思われる方法でパディングが提供されます。さらに、カスタムCSSを使用してパディングを変更することもできます。



0

ブートストラップ4

ドキュメントは言う(ここ):

行は列のラッパーです。各列には、それらの間のスペースを制御するための水平パディング(ガターと呼ばれる)があります。このパディングは、マージンが負の行で打ち消されます。このようにして、列のすべてのコンテンツが左側に視覚的に配置されます。

したがって、正しい答えは次のとおりですcol。sのpadding-left / rightを、あなたrowのmargin-left / right を引いた値に設定します。とても簡単です。

#my-row {
  margin-left: -80px;
  margin-right: -80px;
}

#my-col {
  padding-left: 80px;
  padding-right: 80px;
}

デモ:https : //codepen.io/frouo/pen/OqGaWN

カスタム間隔の列


0

ここに画像の説明を入力してください

ブートストラップ4-ネストされた行を使用して列を分離します。

<div class="container">
    <div class="row bg-info p-3">

        <!-- left column -->
        <div class="col-8 ">
            <div class="col-12 bg-light p-3">
                Lorem ipsum dolor sit amet consectetur adipisicing elit. Porro error enim, perferendis rerum, sit laudantium alias esse quas quae mollitia illum suscipit veritatis distinctio facere officia ullam repellendus accusamus odio!
            </div>
        </div>

        <!-- right column -->
        <div class="col-4 ">
            <div class="col-12 bg-light p-3">
                Lorem ipsum dolor sit amet consectetur adipisicing elit. Porro error enim, perferendis rerum, sit laudantium alias esse quas quae mollitia illum suscipit veritatis distinctio facere officia ullam repellendus accusamus odio!
            </div>
        </div>
    </div>
</div>

多分@estaniによって提供された答えを使用することは、bootstrap4でこれを行うより「古典的な」方法ですか?
ソディメル

0

クラスを作成して使用:

マージン:1.5em .5em; max-width:calc(50%-1em)!重要;

ここで、最大幅の1emは、左マージンと右マージンを合計したものと同じです。


-1

これは、それを行う1つの方法とその動作でもあります。次のURLを確認してくださいhttps://jsfiddle.net/sarfarazk/ofgqm0sh/

<div class="container">
 <div class="row">
  <div class="col-md-6">
    <div class="bg-success">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
    </div>
  </div>
  <div class="col-md-6">
    <div class="bg-warning">Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.
    </div>
  </div>
</div>
</div>

-2

margin-leftを使用する方法です。

<div style="margin-left:-2px" class="col-md-6"></div>
<div style="margin-left:2px" class="col-md-6"></div>

完璧に動作します


いいえ、それは応答性を壊しません。
クラッシャー

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.