170 votes

Comment faire en sorte qu'une colonne Bootstrap couvre plusieurs lignes ?

J'essaie de comprendre comment réaliser la grille suivante avec Bootstrap.

Je ne sais pas comment créer la case (numéro 1) qui s'étend sur deux rangées. Les cases sont générées par programme dans l'ordre où elles sont disposées. La case 1 est un message de bienvenue.

enter image description here

Avez-vous des idées sur la meilleure façon de procéder ?

1 votes

twitter.github.io/bootstrap/scaffolding.html#gridSystem Vous pouvez utiliser le système de grille Bootstrap.

1 votes

Donc créer 2 rangées, plutôt que 3, en imbriquant les 2 rangées dans la première ? Cela pourrait être problématique lorsque les boîtes sont générées par programme.

1 votes

Je ne sais pas si ça marcherait, mais est-ce que le fait d'ajouter l'élément pull-left classe pour que toutes les boîtes fonctionnent ? cela ne donnera pas à la boîte 1 la même hauteur que 2 + 4, mais cela devrait lui permettre de fonctionner lorsque vous définissez la hauteur.

177voto

mastergalen Points 692

Pour Bootstrap 3 :

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>

<div class="row">
    <div class="col-md-4">
        <div class="well">1
            <br/>
            <br/>
            <br/>
            <br/>
            <br/>
        </div>
    </div>
    <div class="col-md-8">
        <div class="row">
            <div class="col-md-6">
                <div class="well">2</div>
            </div>
            <div class="col-md-6">
                <div class="well">3</div>
            </div>
        </div>
        <div class="row">
            <div class="col-md-6">
                <div class="well">4</div>
            </div>
            <div class="col-md-6">
                <div class="well">5</div>
            </div>
        </div>
    </div>
</div>
<div class="row">
    <div class="col-md-4">
        <div class="well">6</div>
    </div>
    <div class="col-md-4">
        <div class="well">7</div>
    </div>
    <div class="col-md-4">
        <div class="well">8</div>
    </div>
</div>

Pour Bootstrap 2 :

<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.2/css/bootstrap.min.css" rel="stylesheet"/>

<div class="row-fluid">
    <div class="span4"><div class="well">1<br/><br/><br/><br/><br/></div></div>
    <div class="span8">
        <div class="row-fluid">
            <div class="span6"><div class="well">2</div></div>
            <div class="span6"><div class="well">3</div></div>
        </div>
        <div class="row-fluid">
            <div class="span6"><div class="well">4</div></div>
            <div class="span6"><div class="well">5</div></div>
        </div>
    </div>
</div>
<div class="row-fluid">
    <div class="span4">
        <div class="well">6</div>
    </div>
    <div class="span4">
        <div class="well">7</div>
    </div>
    <div class="span4">
        <div class="well">8</div>
    </div>
</div>

Voir la démo sur JSFiddle (Bootstrap 2) : http://jsfiddle.net/SxcqH/52/

0 votes

Comment faire pour que les cases quatre et cinq remplissent la hauteur de la rangée au fur et à mesure que la case un grandit ?

2 votes

0 votes

Cet exemple ne fonctionne pas tout à fait, le bord inférieur de la première colonne est légèrement désaligné par rapport au reste.

21voto

disrvptor Points 778

Comme le suggèrent les commentaires, la solution consiste à utiliser des espaces/rangs imbriqués.

<div class="container">
    <div class="row">
        <div class="span4">1</div>
        <div class="span8">
            <div class="row">
                <div class="span4">2</div>
                <div class="span4">3</div>
            </div>
            <div class="row">
                <div class="span4">4</div>
                <div class="span4">5</div>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="span4">6</div>
        <div class="span4">7</div>
        <div class="span4">8</div>
    </div>
</div>

0 votes

C'est mieux que la réponse par le code uniquement, IMO.

2voto

Shareef Hadid Points 21

Je pense que la partie concernant la façon d'étendre les rangées a été répondue de manière approfondie (c'est-à-dire en imbriquant les rangées), mais j'ai également rencontré le problème de mes rangées imbriquées qui ne remplissent pas leur conteneur. Bien que la flexbox et les marges négatives soient une option, une solution beaucoup plus simple consiste à utiliser la fonction prédéfinie h-50 sur le row contenant les boîtes 2, 3, 4 et 5.

Note : J'utilise Bootstrap-4 Je voulais juste partager parce que j'ai rencontré le même problème et j'ai trouvé cette solution plus élégante :). le même problème et j'ai trouvé cette solution plus élégante :)

1voto

James Jeffery Points 1620

L'exemple ci-dessous semble fonctionner. Il suffit de définir une hauteur sur le premier élément

<ul class="row">
    <li class="span4" style="height: 100px"><h1>1</h1></li>
    <li class="span4"><h1>2</h1></li>
    <li class="span4"><h1>3</h1></li>
    <li class="span4"><h1>4</h1></li>
    <li class="span4"><h1>5</h1></li>
    <li class="span4"><h1>6</h1></li>
    <li class="span4"><h1>7</h1></li>
    <li class="span4"><h1>8</h1></li>
</ul>

Je ne peux pas m'empêcher de penser que c'est la mauvaise utilisation d'une rangée.

1voto

Ps Naidu Points 33
<div class="row">
  <div class="col-4 alert alert-primary">
     1
  </div>
  <div class="col-8">
    <div class="row">
      <div class="col-6 alert alert-primary">
        2
      </div>
      <div class="col-6 alert alert-primary">
        3
      </div>
      <div class="col-6 alert alert-primary">
        4
      </div>
      <div class="col-6 alert alert-primary">
        5
      </div>
    </div>
  </div>
</div>
<div class="row">
  <div class="col-4 alert alert-primary">
    6
  </div>
  <div class="col-4 alert alert-primary">
    7
  </div>
  <div class="col-4 alert alert-primary">
    8
  </div>
</div>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X