ma mise en page cassée lorsque j'ai implémenté bootstrap à mi-chemin de mon projet, corrigée avec quelques modifications css, et que j'avais commenté ceci
/**,
*:before,
*:after {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}*/
dans bootstrap.css, cela affectera-t-il son noyau? Je veux juste utiliser le système de grille dans mon projet ..
Oui, ne fais pas ça. Supprimer le box-sizing: border-box
ruinerait votre grille. Voir aussi: Pourquoi Bootstrap 3 est-il passé à box-sizing: border-box?
Un exemple pour montrer ce qui se passe:
<div class="container" style="background-color:lightblue;">
<div class="row" style="background-color:red;">
<div class="col-sm-6" style="background-color:orange"><p style="background-color:green">Content</p></div>
<div class="col-sm-6" style="background-color:orange"><p style="background-color:green">Content</p></div>
</div>
</div>
<br>
<div class="container nonborderbox" style="background-color:lightblue;">
<div class="row" style="background-color:red;">
<div class="col-sm-6" style="background-color:orange"><p style="background-color:green">Content</p></div>
<div class="col-sm-6" style="background-color:orange"><p style="background-color:green">Content</p></div>
</div>
</div>
Avec:
.nonborderbox *
{
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
}
Ce qui précède entraînera:
Avec box-sizing: border-box
, la construction Gutter par remplissage sera hors du calcul de la largeur de votre colonne.
Essayez de comprendre la grille de Bootstrap et le box-sizing: border-box
et de comprendre pourquoi cela ruinerait votre mise en page. Résolvez ces problèmes ou envisagez de ne pas utiliser Bootstrap du tout pour votre projet.
J'ai le même problème et bootstrap 3 détruit mes mises en page existantes et les widgets tiers. Voici quelque chose que j'ai essayé par ordre croissant de difficulté et de stabilité.
Coffre-fort que si vous n'utilisez pas d'autres composants d'amorçage
Ajoutez le css suivant après le chargement du css de bootstrap:
*,
*:before,
*:after {
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
}
.container .row *,
.container .row *:before,
.container .row *:after {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
Ceci utilisera la taille border-box
uniquement pour les éléments du système de grille. Cela ne fonctionnera pas si vous avez des widgets personnalisés dans la grille car ils auraient toujours appliqué border-box
.
Coffre-fort que si vous n'utilisez pas d'autres composants d'amorçage
Vous pouvez également ajouter une classe col
personnalisée à chaque div de colonne sur laquelle un col-*-*
est déjà appliqué de la manière suivante:
<div class="container">
<div class="row">
<div class="col-md-3 col">Grid still works</div>
<div class="col-md-9 col">:)</div>
</div>
</div>
Ensuite, utilisez le css suivant:
*,
*:before,
*:after {
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
}
.container .row .col,
.container .row .col:before,
.container .row .col:after {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
Cela fonctionne bien si vous devez UNIQUEMENT utiliser le système de grille bootstrap dans votre projet. Toutefois, si vous avez l'intention d'utiliser d'autres composants d'amorçage, je ne recommande pas cette approche, car d'autres composants d'amorçage dépendraient de la définition de border-box
.
Une méthode encore meilleure serait simplement de remplacer la taille de la boîte par content-box
sur un élément parent spécifique pour un widget comme celui-ci:
.your-custom-widget-class *,
.your-custom-widget-class *:before,
.your-custom-widget-class *:after {
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
}
Cette approche offre la meilleure compatibilité en aval avec les futurs composants d'amorçage, même si elle semble fonctionner pour vous maintenant.
Ajoutez ceci dans votre mixin ou dans vos variables less et assurez-vous qu’il se charge après scaffolding.lessIl réinitialise la taille de la boîte bs3 et l’applique à nouveau pour des éléments spécifiques et pour tous les éléments obligatoires BS3. J'ai constaté que la plupart des dégâts causés par le dimensionnement par défaut de la boîte BS3 sont appliqués à
a,ul,li
La magie
* {
.box-sizing(content-box);
}
form,
div,
img,
table,
th,
tr,
td,
p,
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section,
summary,
audio,
canvas,
progress,
video,
[class^="container-"],
[class^="container-"] *,
[class^="col-"],
[class^="col-"] *,
[class^="form-"],
[class^="form-"] *,
[class^="bg-"],
[class^="bg-"] *,
[class^="navbar"],
[class^="navbar"] *,
[class^="nav"],
[class^="nav"] *,
[class^="row"],
[class^="row"] * {
.box-sizing(border-box);
}
J'ai utilisé une combinaison des solutions ci-dessus pour répondre à mes besoins .__ (je n'ai utilisé que le système de grille, tout le reste était déjà là)
/* *,
*:before,
*:after {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
*/
[class^="container-"],
[class^="container-"] *,
[class^="col-"],
[class^="col-"] *,
[class^="row"],
[class^="row"] * {
box-sizing:border-box;
}
La grille prenait trop de marge et de rembourrage donc j'ai remplacé tous les
padding-right:15px;
padding-left:15px;
margin-left=-15px;
margin-right=-15px;
à (j'ai commenté les marges)
.row {
/* margin-left: -15px;
margin-right: -15px;*/
}
et
.col, .col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
position: relative;
min-height: 1px;
padding-left: 5px;
padding-right: 5px;
}