Bootstrap zum Kombinieren von Zeilen (Zeilenbereich)

127

Ich teste Twitter Bootstrap und habe mich mit Grundgerüsten mit Reihen festgefahren. Ich habe die Dokumentation mehrmals überprüft und sehe Verschachtelungsspalten, in denen Sie Spalten innerhalb einer Spalte grundsätzlich verschachteln können, aber ich kann die Möglichkeit, Zeilen zu einer zu kombinieren und sie an der Spalte neben den nicht kombinierten Zeilen auszurichten, nicht finden.

Das folgende Bild sollte veranschaulichen, was ich erreichen möchte.

Beispiel für ein Rowspan-Layout

Die einzige Problemumgehungslösung, auf die ich gestoßen bin, ist die Verwendung von Tabellen, aber diese Idee gefällt mir nicht, da ich der Ansicht bin, dass die Reaktionsfähigkeit bei der Verwendung von Tabellen nicht funktioniert.

Hat jemand eine elegante Lösung dafür? Das meiste Weblayout, das ich mache, erfordert ein hohes Maß an Flexibilität, daher wäre es großartig, wenn ich hier etwas Nützliches aufgreifen könnte.

Seong Lee
quelle

Antworten:

98

Divs werden standardmäßig vertikal gestapelt, sodass keine spezielle Behandlung von "Zeilen" innerhalb einer Spalte erforderlich ist.

div {
  height:50px;
}
.short-div {
  height:25px;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />

<div class="container">
  <h1>Responsive Bootstrap</h1>
  <div class="row">
    <div class="col-lg-5 col-md-5 col-sm-5 col-xs-5" style="background-color:red;">Span 5</div>
    <div class="col-lg-3 col-md-3 col-sm-3 col-xs-3" style="background-color:blue">Span 3</div>
    <div class="col-lg-2 col-md-2 col-sm-3 col-xs-2" style="padding:0px">
      <div class="short-div" style="background-color:green">Span 2</div>
      <div class="short-div" style="background-color:purple">Span 2</div>
    </div>
    <div class="col-lg-2 col-md-2 col-sm-3 col-xs-2" style="background-color:yellow">Span 2</div>
  </div>
</div>
<div class="container-fluid">
  <div class="row-fluid">
    <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6">
      <div class="short-div" style="background-color:#999">Span 6</div>
      <div class="short-div">Span 6</div>
    </div>
    <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6" style="background-color:#ccc">Span 6</div>
  </div>
</div>

Hier ist die Geige .

Paul Keister
quelle
2
Vielen Dank. Das habe ich gesucht! Ich wünschte, die Bootstrap-Dokumentation würde dies zusätzlich unter Verschachtelungsspalten erwähnen, da der Ansatz im Grunde der gleiche ist.
Seong Lee
1
In Ihrem Beispiel definieren Sie 1row=25px, 2row=50px. Kannst du das überspannte Div so hoch wie die gesamte Reihe machen? versuchte hinzuzufügen, .row{height:100%;}aber es ging nicht.
Tomer W
Ja, @carter, das ursprüngliche Beispiel war nicht mit Bootstrap 3 kompatibel. Ich habe es korrigiert.
Paul Keister
1
Das Beispiel hat Dachrinnen in der zweiten Reihe, die seltsam aussehen.
Connie DeCinko
83

Sie sollten die Bootstrap-Spaltenverschachtelung verwenden.

Siehe Bootstrap 3 oder Bootstrap 4 :

<div class="row">
    <div class="col-md-5">Span 5</div>
    <div class="col-md-3">Span 3<br />second line</div>
    <div class="col-md-2">
        <div class="row">
            <div class="col-md-12">Span 2</div>
        </div>
        <div class="row">
            <div class="col-md-12">Span 2</div>
        </div>
    </div>
    <div class="col-md-2">Span 2</div>
</div>
<div class="row">
    <div class="col-md-6">
        <div class="row">
            <div class="col-md-12">Span 6</div>
            <div class="col-md-12">Span 6</div>
        </div>
    </div>
    <div class="col-md-6">Span 6</div>
</div>

http://jsfiddle.net/DRanJ/125/

(Vergrößern Sie im Geigenbildschirm Ihren Testbildschirm, um das Ergebnis anzuzeigen, da ich Spalte - * verwende und dann Spalten mit reaktionsfähigen Stapeln verwende.)

Hinweis : Ich bin nicht sicher, ob BS2 das Verschachteln von Spalten zulässt , aber in der Antwort von Paul Keister wird das Verschachteln von Spalten nicht verwendet. Sie sollten es verwenden und vermeiden, CSS neu zu erfinden, während Bootstrap gut funktioniert.

Die Spaltenhöhe ist automatisch. Wenn Sie eine zweite Zeile hinzufügen (wie in meinem Beispiel), passt sich die Spaltenhöhe an.

Alcalyn
quelle
10
Dies sollte die akzeptierte Antwort sein, da es mit Bootstrap sofort funktioniert und keine CSS-Optimierung erfordert
cheenbabes
Die akzeptierte Antwort ist besser lesbar. Es enthält ein Code-Snippet und einen Link zu JSfiddle und IMHO. Paul Keisters Beispiele sind klarer als die Beispiele von Alcalyn. Deshalb denke ich, dass Paul Keisters als akzeptierte Antwort beibehalten werden sollte, zumindest bis die Antwort von Alcalyn verbessert ist.
NaXa
1
@Alcalyn in meinem Browser (Chrome) führt die verknüpfte Geige aus Ihrer Antwort nicht zum erwarteten Ergebnis (siehe Bild in der Frage). Das tatsächliche Ergebnis sind alle Divs, die in einer Spalte ausgerichtet sind.
NaXa
1
Wenn Sie eine einzelne Spalte mit allen ausgerichteten Bereichen sehen, liegt dies an der -md-Antwortregel. Sie müssen Ihren Bildschirm vergrößern, um das erwartete Ergebnis zu sehen. Wenn Ihre Bereiche auf kleineren Bildschirmen als Spalten angezeigt werden sollen, ersetzen Sie sie -md-durch -sm-oder -xs-. Dies ist eine Haltepunktfrage (siehe bootstrapdocs.com/v3.0.3/docs/css/#grid ).
Alcalyn
12

Hinweis: Dies war für Bootstrap 2 (relevant, als die Frage gestellt wurde).

Sie können dies erreichen, indem Sie row-fluideine flüssigkeitsbasierte (prozentuale) Zeile in einer vorhandenen Zeile erstellen block.

<div class="row">
   <div class="span5">span5</div>
   <div class="span3">span3</div>
   <div class="span2">
      <div class="row-fluid">
         <div class="span12">span2</div>
         <div class="span12">span2</div>
      </div>
   </div>
   <div class="span2">span2</div>
</div>
<div class="row">
   <div class="span6">
      <div class="row-fluid">
         <div class="span12">span6</div>
         <div class="span12">span6</div>
      </div>
   </div>
   <div class="span6">span6</div>
</div>

Hier ist ein JSFiddle-Beispiel .

Ich habe bemerkt, dass es einen merkwürdigen linken Rand gibt, der für die Bereiche innerhalb des row-fluidnach dem ersten erscheint (oder nicht erscheint) . Dies kann mit einer kleinen CSS-Optimierung behoben werden (es ist dasselbe CSS, das auf das erste Kind angewendet wird und auf diejenigen nach dem ersten Kind erweitert wird):

.row-fluid [class*="span"] {
    margin-left: 0;
}
pickypg
quelle
Vielen Dank für Ihre Mühe, aber es sieht so aus, als müsste eine Zeile keine Zeilenflüssigkeit verwenden, um dies zu erreichen, wie in meiner ausgewählten Antwort vorgeschlagen. Ich weiß es wirklich zu schätzen!
Seong Lee
1
Sehr wahr, aber vergessen row-fluidSie nicht, wann es Zeit ist, die inneren Reihen zu unterteilen.
Pickypg
7

Überprüfen Sie dieses. hoffe es wird voll für dich helfen.

http://jsfiddle.net/j6amM/

.row-fix { margin-bottom:20px;}

.row-fix > [class*="span"]{ height:100px; background:#f1f1f1;}

.row-fix .two-col{ background:none;}

.two-col > [class*="col"]{ height:40px; background:#ccc;}

.two-col > .col1{margin-bottom:20px;}
Manish Sharma
quelle
1

Pauls Antwort scheint den Zweck des Bootstraps zu vereiteln; das, auf das Ansichtsfenster / die Bildschirmgröße zu reagieren.

Durch das Verschachteln von Zeilen und Spalten können Sie das gleiche Ergebnis erzielen und gleichzeitig die Reaktionsfähigkeit beibehalten.

Hier finden Sie eine aktuelle Antwort auf dieses Problem.

<div class="container-fluid">
  <h1>  Responsive Nested Bootstrap </h1> 
  <div class="row">
    <div class="col-md-5" style="background-color:red;">Span 5</div>
    <div class="col-md-3" style="background-color:blue;">Span 3</div>
    <div class="col-md-2">
      <div class="row">
        <div class="container" style="background-color:green;">Span 2</div>
      </div>
      <div class="row">
        <div class="container" style="background-color:purple;">Span 2</div>
      </div>
    </div>
    <div class="col-md-2" style="background-color:yellow;">Span 2</div>
  </div>
  
  <div class="row">
    <div class="col-md-6">
      <div class="row">
        <div class="container" style="background-color:yellow;">Span 6</div>
      </div>
      <div class="row">
        <div class="container" style="background-color:green;">Span 6</div>
      </div>
    </div>
    <div class="col-md-6" style="background-color:red;">Span 6</div>
  </div>
</div>

Sie können den Codepen hier anzeigen.

vasavest
quelle
0

div {
  height:50px;
}
.short-div {
  height:25px;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />

<div class="container">
  <h1>Responsive Bootstrap</h1>
  <div class="row">
    <div class="col-lg-5 col-md-5 col-sm-5 col-xs-5" style="background-color:red;">Span 5</div>
    <div class="col-lg-3 col-md-3 col-sm-3 col-xs-3" style="background-color:blue">Span 3</div>
    <div class="col-lg-2 col-md-2 col-sm-3 col-xs-2" style="padding:0px">
      <div class="short-div" style="background-color:green">Span 2</div>
      <div class="short-div" style="background-color:purple">Span 2</div>
    </div>
    <div class="col-lg-2 col-md-2 col-sm-3 col-xs-2" style="background-color:yellow">Span 2</div>
  </div>
</div>
<div class="container-fluid">
  <div class="row-fluid">
    <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6">
      <div class="short-div" style="background-color:#999">Span 6</div>
      <div class="short-div">Span 6</div>
    </div>
    <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6" style="background-color:#ccc">Span 6</div>
  </div>
</div>

SUDIP SINGH
quelle
Dies funktioniert bei mir nicht mit <div class = "col-sm-2"> <div class = "col-lg-4 col-md-4 col-sm-4 col-xs-4" style = "background- Farbe: gelb; "> <input type =" file "id =" imgInp "name =" img "accept =". png, .jpg, .jpeg "> <! - <input type =" text "src =" "class =" form-control "id =" imgName "size =" 40 "> </ input> -> <img id =" img-upload "src =" "alt =" Transporter "width =" 300% " height = "50%" class = "abgerundeter Kreis" /> </ div> </ div> </ div>
SUDIP SINGH
2
Bitte fügen Sie eine Erklärung zu Ihrem Code hinzu. Damit OP und zukünftige Leser Ihre Antwort leicht verstehen können.
Sangam Belose