J'ai besoin de modifier bootstrap.css
pour l'adapter à mon site Web. Je pense qu'il est préférable de créer un fichier custom.css
séparé au lieu de modifier directement bootstrap.css
, notamment parce que bootstrap.css
devrait obtenir une mise à jour, je vais essayer de ré-inclure toutes mes modifications. . Je vais sacrifier un peu de temps de chargement pour ces styles, mais c'est négligeable pour les quelques styles que je domine.
Hw puis-je remplacer bootstrap.css
afin que je supprime le style d'une ancre/classe? Par exemple, si je veux supprimer toutes les règles de style pour legend
:
legend {
display: block;
width: 100%;
padding: 0;
margin-bottom: 20px;
font-size: 21px;
line-height: inherit;
color: #333333;
border: 0;
border-bottom: 1px solid #e5e5e5;
}
Je peux simplement supprimer tout cela dans bootstrap.css
, mais si ma compréhension des meilleures pratiques en matière de substitution de CSS est correcte, que dois-je faire à la place?
Pour être clair, je veux supprimer tous ces styles de légende et utiliser les valeurs CSS du parent. Donc, en combinant la réponse de Pranav, vais-je faire ce qui suit?
legend {
display: inherit !important;
width: inherit !important;
padding: inherit !important;
margin-bottom: inherit !important;
font-size: inherit !important;
line-height: inherit !important;
color: inherit !important;
border: inherit !important;
border-bottom: inherit !important;
}
(J'espérais qu'il y a un moyen de faire quelque chose comme ce qui suit :)
legend {
clear: all;
}
L'utilisation de !important
n'est pas une bonne option, car vous voudrez probablement remplacer vos propres styles à l'avenir. Cela nous laisse avec les priorités CSS.
Fondamentalement, chaque sélecteur a son propre "poids" numérique:
Entre deux styles de sélecteur, le navigateur choisira toujours celui qui a le plus de poids. L'ordre des feuilles de style n'a d'importance que lorsque les priorités sont égales - c'est pourquoi il n'est pas facile de remplacer Bootstrap.
Vous avez le choix d’inspecter les sources Bootstrap, de déterminer comment un style spécifique est défini et de copier ce sélecteur afin que votre élément ait la même priorité. Mais nous perdons un peu toute la douceur [Bootstrap] _ dans le processus.
Le moyen le plus simple de résoudre ce problème consiste à attribuer un identifiant arbitraire supplémentaire à l'un des éléments racine de votre page, comme suit: <body id="bootstrap-overrides">
De cette façon, vous pouvez simplement préfixer votre identifiant sur n'importe quel sélecteur CSS, en ajoutant instantanément 100 points de poids à l'élément et en remplaçant les définitions Bootstrap:
/* Example selector defined in Bootstrap */
.jumbotron h1 { /* 10+1=11 priority scores */
line-height: 1;
color: inherit;
}
/* Your initial take at styling */
h1 { /* 1 priority score, not enough to override Bootstrap jumbotron definition */
line-height: 1;
color: inherit;
}
/* New way of prioritization */
#bootstrap-overrides h1 { /* 100+1=101 priority score, yay! */
line-height: 1;
color: inherit;
}
Dans la section head de votre code HTML, placez votre fichier custom.css sous le fichier bootstrap.css.
<link href="bootstrap.min.css" rel="stylesheet">
<link href="custom.css" rel="stylesheet">
Ensuite, dans custom.css, vous devez utiliser le même sélecteur pour l'élément que vous souhaitez remplacer. Dans le cas de legend
, il reste simplement legend
dans votre fichier custom.css car bootstrap n'a pas de sélecteur plus spécifique.
legend {
display: inline;
width: auto;
padding: 0;
margin: 0;
font-size: medium;
line-height: normal;
color: #000000;
border: 0;
border-bottom: none;
}
Mais dans le cas de h1
par exemple, vous devez vous occuper des sélecteurs plus spécifiques comme .jumbotron h1
parce que
h1 {
line-height: 2;
color: #f00;
}
ne remplacera pas
.jumbotron h1,
.jumbotron .h1 {
line-height: 1;
color: inherit;
}
Voici une explication utile de la spécificité des sélecteurs CSS que vous devez comprendre pour savoir exactement quelles règles de style s’appliqueront à un élément. http://css-tricks.com/specifics-on-css-specificity/
Tout le reste est juste une question de copier/coller et éditer des styles.
Cela ne devrait pas affecter beaucoup le temps de chargement puisque vous remplacez des parties de la feuille de style de base.
Voici certaines des meilleures pratiques que je suis personnellement:
!important
si possible. Cela peut remplacer certains styles importants des fichiers CSS de base.Liez votre fichier custom.css en tant que dernière entrée sous le fichier bootstrap.css. Les définitions de style Custom.css remplaceront bootstrap.css
Html
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/custom.css" rel="stylesheet">
Copiez toutes les définitions de style de la légende dans custom.css et apportez des modifications (comme margin-bottom: 5px; - Ceci écrasera margin-bottom: 20px;)
Si vous envisagez d’apporter des modifications assez importantes, il peut être judicieux de les modifier directement dans bootstrap et de les reconstruire. Ensuite, vous pourriez réduire la quantité de données chargées.
Veuillez vous référer à Bootstrap sur GitHub pour le guide de construction.
Un peu tard mais ce que j'ai fait est que j'ai ajouté une classe à la racine div
puis étend tous les éléments bootstrap de ma feuille de style personnalisée:
.overrides .list-group-item {
border-radius: 0px;
}
.overrides .some-elements-from-bootstrap {
/* styles here */
}
<div class="container-fluid overrides">
<div class="row">
<div class="col-sm-4" style="background-color: red">
<ul class="list-group">
<li class="list-group-item"><a href="#">Hey</a></li>
<li class="list-group-item"><a href="#">I was doing</a></li>
<li class="list-group-item"><a href="#">Just fine</a></li>
<li class="list-group-item"><a href="#">Until I met you</a></li>
<li class="list-group-item"><a href="#">I drink too much</a></li>
<li class="list-group-item"><a href="#">And that's an issue</a></li>
<li class="list-group-item"><a href="#">But I'm okay</a></li>
</ul>
</div>
<div class="col-sm-8" style="background-color: blue">
right
</div>
</div>
</div>
Pour réinitialiser les styles définis pour legend
dans bootstrap, vous pouvez procéder comme suit dans votre fichier css:
legend {
all: unset;
}
Réf.: https://css-tricks.com/almanac/properties/a/all/
La propriété all dans CSS réinitialise toutes les propriétés de l'élément sélectionné, à l'exception des propriétés direction et unicode-bidi qui contrôlent la direction du texte.
Les valeurs possibles sont: initial
, inherit
& unset
.
Note latérale: La propriété clear
est utilisée en relation avec float
( https://css-tricks.com/almanac/properties/c/clear/ )
Voir cet exemple:
$(document).ready(function(){ $(".dropdown-toggle").css({ "color": "#212529", "background-color": "#ffc107", "border-color": "#ffc107"}); $(".multiselect-selected-text").text('Select Tags'); });
Voir https://bootstrap.themes.guide/how-to-customize-bootstrap.html
Pour les substitutions CSS simples, vous pouvez ajouter un fichier custom.css sous le fichier bootstrap.css.
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="css/custom.css">
Pour des modifications plus importantes, SASS est la méthode recommandée.
Par exemple, changeons la couleur de fond du corps en #eeeeee gris clair et changeons la couleur contextuelle principale bleue en variable $ purple de Bootstrap ...
/* custom.scss */
/* import the necessary Bootstrap files */
@import "bootstrap/functions";
@import "bootstrap/variables";
/* -------begin customization-------- */
/* simply assign the value */
$body-bg: #eeeeee;
/* or, use an existing variable */
$theme-colors: (
primary: $purple
);
/* -------end customization-------- */
/* finally, import Bootstrap to set the changes! */
@import "bootstrap";