382 votes

Supprimer le rembourrage des colonnes dans Bootstrap 3

Problème :

Suppression du padding/margin à droite et à gauche de col-md-* dans Bootstrap 3.

Code HTML :

<div class="col-md-12">
    <h2>OntoExplorer<span style="color:#b92429">.</span></h2>

    <div class="col-md-4">
        <div class="widget">
            <div class="widget-header">
                <h3>Dimensions</h3>
            </div>

            <div class="widget-content" id="">
                <div id='jqxWidget'>
                    <div style="clear:both;margin-bottom:20px;" id="listBoxA"></div>
                    <div style="clear:both;" id="listBoxB"></div>

                </div>
            </div>
        </div>
    </div>

    <div class="col-md-8">
        <div class="widget">
            <div class="widget-header">
                <h3>Results</h3>
            </div>

            <div class="widget-content">
                <div id="map_canvas" style="height: 362px;"></div>
            </div>
        </div>
    </div>

</div>

Sortie souhaitée :

Actuellement, ce code ajoute un padding/margin à droite et à gauche des deux colonnes. Je me demande ce qu'il me manque pour supprimer cet espace supplémentaire sur les côtés ?

Avis :

Si je supprime "col-md-4", les deux colonnes s'étendent à 100% mais je veux qu'elles soient côte à côte.

8 votes

Pour Bootstrap 4, utilisez pl-0 pr-0 c'est-à-dire <div class="col-7 pl-0 pr-0">

2 votes

Encore plus court, px-0 qui comprend à la fois la gauche et la droite.

497voto

MackieeE Points 3699

Vous utiliseriez normalement .row pour envelopper deux colonnes, et non .col-md-12 - c'est une colonne qui englobe une autre colonne. Après tout, .row n'a pas les marges supplémentaires et le rembourrage qu'une col-md-12 et réduit également l'espace qu'une colonne introduirait avec des marges négatives à gauche et à droite.

<div class="container">
    <div class="row">
        <h2>OntoExplorer<span style="color:#b92429">.</span></h2>

        <div class="col-md-4 nopadding">
            <div class="widget">
                <div class="widget-header">
                    <h3>Dimensions</h3>
                </div>
                <div class="widget-content">
                </div>
            </div>
        </div>

        <div class="col-md-8 nopadding">
            <div class="widget">
                <div class="widget-header">
                    <h3>Results</h3>
                </div>
                <div class="widget-content">
                </div>
            </div>
        </div>
    </div>
</div>

si vous vraiment Si vous voulez supprimer les marges, ajoutez une classe pour filtrer les marges de chaque colonne enfant.

.nopadding {
   padding: 0 !important;
   margin: 0 !important;
}

0 votes

Est-il vraiment nécessaire d'ajouter .without-padding à la classe du conteneur ? Je dirais que l'ajout de .nopadding au div .col-md-8 avec le code CSS que vous avez fourni est suffisant.

63 votes

Je crée généralement 3 classes supplémentaires dans mon CSS personnalisé à savoir, .padding-0 qui fixe les rembourrages gauche et droit (uniquement) à 0 ; .padding-sm qui fixe le padding à 2px et .padding-md qui fixe le padding à 5px. Le padding habituel est de 15px (sauf s'il est personnalisé), donc ces classes supplémentaires sont suffisantes.

0 votes

D'ailleurs .row a déplacé sa nouvelle ligne

223voto

martinedwards Points 601

Bootstrap 4 a ajouté .classe sans-guttes .

Bootstrap 3.4 a ajouté .row-no-gutters class

Bootstrap 3 : J'ajoute toujours ce style à mon Bootstrap LESS / SASS :

.row-no-padding {
  [class*="col-"] {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}

Ensuite, dans le HTML, vous pouvez écrire :

<div class="row row-no-padding">

Si vous souhaitez cibler uniquement les colonnes enfants, vous pouvez utiliser le sélecteur enfant (Merci John Wu).

.row-no-padding > [class*="col-"] {
    padding-left: 0 !important;
    padding-right: 0 !important;
}

Vous pouvez également vouloir supprimer le rembourrage uniquement pour certaines tailles de périphériques (exemple SASS) :

/* Small devices (tablets, 768px and up) */
@media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
  .row-sm-no-padding {
    [class*="col-"] {
      padding-left: 0 !important;
      padding-right: 0 !important;
    }
  }
}

Vous pouvez supprimer la partie max-width de la requête média si vous voulez qu'elle prenne en charge les petits appareils vers le haut.

0 votes

Comment ajouter ceci dans SASS ?

10 votes

Il s'agit d'une simple feuille de style CSS, à l'exception de l'imbrication (qui se trouve également dans SASS), qui devrait donc fonctionner de la même manière.

0 votes

Fonctionne parfaitement dans un environnement réactif.

46voto

phoeb Points 111

Réduire uniquement le remplissage des colonnes ne suffira pas, car vous augmenterez la largeur de la page, ce qui la rendra inégale par rapport au reste de votre page, par exemple la barre de navigation. Vous devez également réduire la marge négative sur la ligne. Prenons l'exemple LESS de @martinedwards :

.row-no-padding {
  margin-left: 0;
  margin-right: 0;
  [class*="col-"] {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}

0 votes

Ce n'est un problème que lorsque votre ligne ne se trouve pas dans un conteneur ou dans une autre colonne. Les marges négatives compensent simplement le rembourrage de ces éléments.

0 votes

J'avais besoin !important pour les deux marges pour que cela fonctionne

22voto

Vitaliy Silin Points 31

Spécifiquement pour le mixin SASS :

@mixin no-padding($side) {
    @if $side == 'all' {
        .no-padding {
            padding: 0 !important;
        }
    } @else {
        .no-padding-#{$side} {
            padding-#{$side}: 0 !important;
        }
    }
}

@include no-padding("left");
@include no-padding("right");
@include no-padding("top");
@include no-padding("bottom");
@include no-padding("all");

Ensuite, en HTML, vous pouvez utiliser

.no-padding-left
.no-padding-right
.no-padding-bottom
.no-padding-top
.no-padding - to remove padding from all sides

Bien sûr, vous pouvez @inclure uniquement les déclarations dont vous avez besoin.

0 votes

J'essaie d'utiliser ce mixin (merci pour cela) dans cette situation et le padding ne fonctionne pas. .banners-home { @include make-row(); .banner-comprar,.banner-pq{ @include no-padding("all"); @include make-xs-column(6); @include make-sm-column(6); @include make-md-column(6); @include make-lg-column(6); } .banner-simulador{ @include no-padding("all"); @include make-xs-column(12); @include make-sm-column(12); @include make-md-column(12); @include make-lg-column(12); } }

0 votes

J'ai trouvé ce qui ne va pas. Je dois créer un autre mixin pour que cette solution fonctionne. Au fait, merci pour le mixin SASS :)

0 votes

Je viens de créer ceci @mixin nopadding{ padding:0!important; } dans mon _mixin.scss puis ajoutez @include nopadding; au code ci-dessus. :)

10voto

link Points 940

Une autre solution, réalisable uniquement si vous compilez bootstrap à partir de ses sources LESS, consiste à redéfinir la variable qui définit le remplissage des colonnes.

Vous trouverez la variable dans le variables.less fichier : il s'appelle @grid-gutter-width .

C'est décrit comme ça dans les sources :

//** Padding between columns. Gets divided in half for the left and right.
@grid-gutter-width:         30px;

Mettez-le à 0, compilez bootstrap.less et inclure le résultat bootstrap.css . Vous avez terminé. Cela peut être une alternative à la définition d'une règle supplémentaire, si vous utilisez déjà des sources d'amorçage comme moi.

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