69 votes

Mise en page pleine largeur avec twitter bootstrap

J'essaie de réaliser une mise en page similaire à celle-ci : http://dribbble.com/shots/829195-Slate/attachments/86422

Mon projet utilise Twitter Bootstrap avec un design réactif. Est-il possible de mettre en œuvre une mise en page pleine largeur avec Bootstrap ?

Le problème est que, d'après ce que j'ai lu, les mises en page fluides seront supprimées dans bootstrap 3.0, et le responsive design a des largeurs fixes.

1 votes

Si vous voulez une mise en page pleine largeur, il suffit de définir votre conteneur extérieur à 100%, à moins que je ne manque quelque chose ?

0 votes

Les span's ont des largeurs fixes ex : 570px. Même si j'ajoute 100%, ils ne couvriront pas toute la page. <div class='row'><div class='span12'></div></div> ne couvrira pas toute la page.

0 votes

Il n'aura une largeur fixe que si on lui demande d'en avoir une (par exemple dans le CSS). Changez 570px, en un pourcentage. Si vous souhaitez obtenir de l'aide, il serait bon d'afficher le code et même un lien pour voir où se situe le problème.

127voto

zmt Points 381

Vous trouverez un excellent tutoriel ici : bootstrap-3-grid-introduction et la réponse à votre question est <div class="container-fluid"> ... </div>

7 votes

Je ne comprends pas bien pourquoi la réponse affirme que le nom de la classe doit être .container-liquid alors que la véritable classe Bootstrap est en fait .container-fluid . Vérifiez vos sources : getbootstrap.com/css/#grid

4 votes

Si quelqu'un utilise une page Layout (_Layout.cshtml), ajoutez container-fluid à la div qui contient @RenderBody()

42voto

Michael Points 1009

Comme la réponse acceptée n'est pas sur la même planète que BS3, je vais partager ce que j'utilise pour obtenir des capacités presque complètes.

Tout d'abord, c'est de la triche. La largeur n'est pas vraiment fluide - mais elle semble l'être - en fonction de la taille de l'écran qui affiche le site.

Le problème avec BS3 et les sites à largeur fluide est qu'ils ont adopté cette approche "mobile first", qui exige qu'ils définissent chaque largeur d'écran jusqu'à ce qu'ils considèrent comme un écran de bureau (1200px). Je travaille sur un ordinateur portable avec un écran de 1900px de large - donc je me retrouve avec 350px de chaque côté du contenu à ce que BS3 pense être une largeur de bureau.

Ils ont défini 10 largeurs d'écran (en réalité seulement 5, mais bon). Je ne me sens pas vraiment à l'aise pour les modifier, car ce sont des largeurs courantes. J'ai donc choisi de définir des largeurs supplémentaires pour que BS puisse choisir la largeur de la classe conteneur.

La façon dont j'utilise BS est de prendre tous les fichiers LESS fournis par Bootstrap, d'omettre le fichier variables.less pour fournir les miens, et d'en ajouter un à la fin pour remplacer les choses que je veux changer. Dans mon fichier less, j'ajoute ce qui suit pour obtenir deux paramètres de largeur d'écran courants :

@media screen and (min-width: 1600px) {
    .container {
        max-width: (1600px - @grid-gutter-width);
    }
}
@media screen and (min-width: 1900px) {
    .container {
        max-width: (1900px - @grid-gutter-width);
    }
}

Ces deux paramètres servent d'exemple pour ce que vous devez faire pour obtenir différentes largeurs d'écran. Ici, vous obtenez la pleine largeur à 1600px, et 1900px. En deçà de 1600, BS revient à la largeur de 1200px, puis à 768px et ainsi de suite jusqu'à la taille du téléphone.

Si vous avez plus à soutenir, créez simplement plus de déclarations d'écran @media comme celles-ci. Si vous créez plutôt le CSS, vous devrez déterminer la largeur de la gouttière utilisée et la soustraire de la largeur d'écran cible.

Mise à jour :

Bootstrap 3.0.1 et en haut (jusqu'à présent) - il suffit de paramétrer @container-large-desktop a 100%

2 votes

Pourquoi omettre variables.less ? ne pouvez-vous pas simplement ajouter ceci à la fin ? Simple curiosité

0 votes

Merci d'avoir clarifié ce point et d'avoir fourni une solution de contournement simple. J'ai trouvé cela frustrant dans BS3.

0 votes

@Phil : Je n'omets pas variables.less, j'utilise le mien au lieu de la version d'usine. Et oui, je l'ajoute à la fin.

11voto

Nick Tomlin Points 4258

Mise à jour :

Bootstrap 3 est sorti depuis que la réponse à cette question a été donnée en janvier. Si vous êtes un utilisateur de BS3, veuillez vous référer à la page BS3. documentation . Pour ceux qui sont encore sous BS2, la réponse initiale reste valable. Si vous êtes intéressé par le passage de 2 à 3, consultez la page migration guide.

Réponse originale :

A partir du bootstrap 2 docs :

Rendez n'importe quelle ligne "fluide" en changeant .row en .row-fluid. Les classes de colonnes restent les mêmes, ce qui permet de passer facilement d'une grille fixe à une grille fluide. grilles fluides.

Code

<div class="row-fluid">
  <div class="span4">...</div>
  <div class="span8">...</div>
</div>

Ceci, en conjonction avec la définition de la largeur de votre conteneur à une valeur fluide, devrait vous permettre d'obtenir la disposition souhaitée.

3 votes

Il sera supprimé dans la version 3.0 mais c'est bon.

1 votes

Comme Omega l'a noté dans les commentaires, le système de grille va utiliser des unités de pourcentage à l'avenir. À moins que vous ne puissiez attendre la sortie de Bootstrap 3 pour commencer le développement, utilisez les mesures fluides dans 2. Il y a tellement d'autres changements à venir dans 3 qu'essayer de rendre 2 "compatible en avant" va être plus difficile que cela ne vaut la peine IMHO. Mais je comprends votre douleur : )

7voto

Maciej Gurban Points 1787

Depuis la dernière version de Bootstrap (3.1.x), le moyen d'obtenir une mise en page fluide est d'utiliser les éléments suivants .container-fluid classe.

Ver Grille Bootstrap pour référence

4voto

carpeliam Points 1528

Dans Bootstrap 3, les colonnes sont spécifiées à l'aide de pourcentages. (Dans Bootstrap 2, ce n'était le cas que si une colonne/espace se trouvait à l'intérieur d'une zone .row-fluid mais ce n'est plus nécessaire et cette classe n'existe plus). Si vous utilisez un élément .container alors @Michael a tout à fait raison de dire que vous serez coincé avec une mise en page à largeur fixe. Cependant, vous devriez vous en sortir si vous évitez simplement d'utiliser un élément .container.

<body>
  <div class="row">
    <div class="col-lg-4">...</div>
    <div class="col-lg-8">...</div>
  </div>
</body>

La marge pour le corps est déjà de 0, donc vous devriez être en mesure d'aller jusqu'au bord. (Les colonnes ont toujours un padding de 15px des deux côtés, donc vous devrez peut-être en tenir compte dans votre conception, mais cela ne devrait pas vous arrêter, et vous pouvez toujours personnaliser cela lorsque vous téléchargez Bootstrap).

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