Vertikaler Raum beim Stapeln von Spalten in Bootstrap 3


68

Wenn Spalten im mobilen Modus gestapelt werden, möchte ich einen vertikalen Abstand zwischen den Spalteninhalten. Wie kann ich das tun?

Siehe jsfiddle unter http://jsfiddle.net/tofutim/3sWEN/ und variieren Sie die Breite der Ausgabe. Vor dem zweiten Lorem ipsum sollte ein gewisser Abstand bestehen.

Geben Sie hier die Bildbeschreibung ein

<div class="container">
    <div class="well well-lg" style="margin:10px">
    <div class="row">
        <div class="col-sm-6">
            <p>"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."</p>
            <form>               
                <input type="textbox" class="form-control" placeholder="Username"></input>
                <input type="password" class="form-control" placeholder="Password"></input>                     
            </form>
        </div>
        <div class="col-sm-6">
            <p>"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."</p>
            <form role="form">
                <div class="form-group">  
                    <button class="form-control btn btn-default">Push me</button>
                <input type="textbox" class="form-control" placeholder="Username"></input>
                <input type="password" class="form-control" placeholder="Password"></input>            
                </div>
            </form>
        </div>
    </div>
    </div>
</div>

Antworten:


63

Ein Weg wäre mit CSS, das col-*bei kleineren Geräten / Breiten den unteren Rand erhöht.

@media (max-width: 768px) {

  [class*="col-"] {
      margin-bottom: 15px;
  }

}

Eine andere Möglichkeit besteht darin, eine hinzuzufügen div, die nur auf kleineren Geräten / Breiten sichtbar ist.

 <div class="col-sm-6">
    <div class="hidden-lg hidden-md hidden-sm">&nbsp;</div>
        ...

Demo: http://bootply.com/92276


Update 2019

Bootstrap 4 verfügt jetzt über Abstandsdienstprogramme , die verwendet werden können.

Siehe auch: Hinzufügen eines Abstands zwischen vertikal gestapelten Spalten in Bootstrap 4


Fügt das am Ende der letzten Spalte einen zusätzlichen Rand hinzu?
Tofutim

1
Ja, die CSS-Lösung funktioniert. Es kann eine Möglichkeit geben, einen Pseudo-Selektor zu verwenden, um das letzte Kind auf Rand 0 zu setzen.
Zim

1
Falls der letzte Spaltenrand nicht gewünscht wird, können Sie diese :not(:last-child)[class*="col-"]:not(:last-child){ margin-bottom: 15px; }
Auswahlkombination

3
Hier ist eine kürzere HTML-Spacer-Lösung, die zwischen Spalten steht. <div class="visible-xs-block form-group"></div>Sie hat eine geringere Höhe als ein normaler Text-Div und sah für mich natürlicher aus.
Duvrai

47

Verwenden Sie .form-groupfür die Spalten

Das ist der Bootstrap-Weg. Andere erwähnte CSS-Hacks funktionieren möglicherweise, sind jedoch nicht der beabsichtigte Weg, um das zu erreichen, was Sie wollen. Das Hacken von Bootstraps-CSS kann später zu mehr Arbeit führen, wenn Sie Ihre Bootstrap-Version ändern.

Bootply-Beispiel: http://www.bootply.com/4cXfQkTCAm#


8
Up-Voting dies, weil es Bootstrap Weg ist
Splendonia

5
Aber es wird nicht nur beim Stapeln, sondern immer angezeigt, und das ist nicht das, wonach OP gefragt hat.
Furgas

14

Ich wollte, dass es funktioniert, wenn meine Spalten mit weniger als 991 Pixel gestapelt sind und alle außer dem ersten Kind betreffen, also habe ich es gesetzt

@media (max-width: 991px) { 
  [class*="col-"]:not(:first-child){
      margin-top: 40px;
  }
}

1
Aber checkout @ Sams Antwort unten! Die Bootstrap-Methode hierfür ist die Verwendung von .form-group für die Spalten. Diese CSS-Hacks können in zukünftigen Versionen von Bootstrap zu Problemen führen.
Digs

9

Ein einfacher Bootstrap4, kein zusätzliches CSS, Hacks oder Mixin-Lösung wäre so etwas wie:

<div class="row">
    <div class="col-md-3 mb-3 mb-md-0">
    ....
    </div>
    <div class="col-md-9 mb-3 mb-md-0">
    ....
    </div>
</div>

Dies fügt einen Rand-Boden (mb-3) hinzu, setzt ihn jedoch auf Null, wenn er nicht gestapelt ist (mb-md-0).

Da Medienabfragen für Abstandsdienstprogramme wie "mb-3" für "alles über" (Mindestbreite) gelten, müssen Sie das Gegenteil tun und es auf 0 (mb-XX-0) zurücksetzen, wenn es nicht gestapelt ist. In diesem Fall setzen wir es auf "md" (sm), also setzen wir den Rand 0 an diesem Haltepunkt.

Hier ist eine Gabelung Ihrer jsfiddle, die den Rand nur auf Mobilgeräten enthält. Die Stile "mb-3 mb-md-0" in Spalten zeigen die vorgeschlagene Lösung. (Jsfiddle-Version hier: http://jsfiddle.net/cb9oc064/10/ )

@import url('https://getbootstrap.com/dist/css/bootstrap.css');
<div class="container">
    <div class="well well-lg" style="margin:10px">
    <div class="row">
        <div class="col-sm-6 mb-3 mb-md-0">
            <p>"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."</p>
            <form>   
            <div class="form-group"> 
                <input type="textbox" class="form-control " placeholder="Username"></input>
                </div>    
                <div class="form-group"> 
                <input type="password" class="form-control " placeholder="Password"></input>   
                </div>
            </form>
        </div>
        <div class="col-sm-6 mb-3 mb-md-0">
            <p>"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."</p>
            <form role="form">
                <div class="form-group">  
                    <button class="form-control btn btn-default">Push me</button>
                <input type="textbox" class="form-control" placeholder="Username"></input>
                </div>
                <div class="form-group mb-3 ">
                <input type="password" class="form-control" placeholder="Password"></input>            
                </div>
            </form>
        </div>
    </div>
    </div>
</div>



0

Fügen Sie jeder Zeile einen negativen oberen Rand hinzu und kontern Sie diesen Rand in jeder Spalte wie folgt:

.row {
  margin-top: -10px;
}
[class^='col'], [class*=' col'] {
  margin-top: 10px;
}

Nachdem die Spalten gestapelt wurden, erhalten sie den vertikalen Rand zwischen ihnen.

Funktioniert auf allen Bildschirmgrößen.


1
Alternativ können Sie den Selektor umschreiben als*[class^=col]
Nick Kamer

Wahr! Danke @Ziao!
Jsruok

-1

Versuchen Sie, span anstelle von div mit Bootstrap-Klassen zu verwenden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.