Limiter le champ d'application du bootstrap styles
Comment puis-je limiter l'amorce juste à la portée d'un div? J'ai besoin de nid du lancement de la feuille de style à l'intérieur d'une application ExtJS spécifiquement pour les divs et les deux s'affrontent depuis qu'ils ont besoin de leur propre corps, ul, li,, etc.
J'essaie d'éviter de montage bootstrap.css manuellement (ou de le garder à un minimum), de sorte qu'il peut être facilement mis à jour.
- Ne serait-il pas plus propre à juste dépouiller les styles que vous voulez à la place de, y compris le plein de bootstrap de la feuille de style?
- Je suis d'accord qu'il serait plus propre, mais alors il serait plus difficile de mise à niveau de bootstrap versions, ne serait-il pas?
- Vous pouvez télécharger une version personnalisée de l'amorçage à droite sur la page de documentation, tout ce que vous avez à faire est d'effacer les choses que vous ne voulez pas et télécharger ce dont vous avez besoin. Vous pouvez la trouver ici: twitter.github.com/bootstrap/download.html .. donc, chaque fois qu'il y a une mise à jour, vous pouvez simplement faire de même et de le re-télécharger ce dont vous avez besoin.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez fourche le bootstrap repo et le changement
bootstrap.less
pour envelopper le bootstrap styles:Puis, dans la racine de l'amorçage de projet, exécutez
make
pour générer lebootstrap.css
fichier.Vous perdrez le mondial de styles de bootstrap affecte le corps et les balises html, mais vous ne pourriez pas vouloir eux de toute façon.
Et puis, dans votre application, donner le conteneur dans lequel vous souhaitez que le
.bootstrap-scope
classe.make.bat
(en supposant que vous êtes sous windows), je viens de consulter ce repo github.com/TheCopartnery/... et cela fonctionne bien. Espérons que cela aide.Depuis le résultat de la modification de moins/bootstrap.moins n'était pas assez bien pour moi (voir pourquoi en bas de post), j'ai fini par filtrage de bootstrap.css :
Depuis bootstrap.css est généré, on peut aussi le faire à l'aveuglette (solution similaire à Alexey, mais aussi de la manipulation de quelques cas de coin):
Comme pour la modification de moins/bootstrap.css et de l'appel de grunt pour générer dist/css/bootstrap.css (Andrew Homeyer de la solution), il ne semble pas travailler proprement (dans le bootstrap 3 au moins) pour certains cas:
divers mixin comme .faire-grille-colonnes (de less/mixins.xml) finissent mal de préfixe. Exemple:
l'utilisation de "&", au MOINS est limitée:
devient
au lieu de ce que nous voulons:
Il est moyen moyen beaucoup plus facile de parvenir à cette légitime exigence: remplacer }retour chariot et SAUT de ligne avec la valeur précédente et de votre contexte de classe. Il est très facile de à la par exemple Sublime:
Sélectionnez }\r\n
Alt + F3 (pour sélectionner toutes les occurrences)
Remplacer par }\r\n.bootstrap-portée
Sélectionner ,\r\n
Alt + F3 (pour sélectionner toutes les occurrences)
Remplacer par ,\r\n.bootstrap-portée
Que c'est! Il sera assez facile de le mettre à jour à l'avenir depuis le remplacement prend environ une minute. Espère que ma réponse a aidé.
Si vous avez la structure suivante:
Et que vous souhaitez limiter le champ d'application de bootstrap, vous devez mettre dans votre mystyles.moins (droit chemin):
Nous avons pour importer le fichier de bootstrap.fichier css au lieu de bootstrap.moins, mais à l'aide de la (moins) @import option afin de traiter le fichier en tant que Moins de fichiers, quelle que soit l'extension de fichier. Ainsi, vous obtiendrez la bonne css, par exemple:
Mais si vous importez des fichiers d'amorce moins de fichiers, vous obtiendrez une manière incorrecte css délimités (de manière erronée):
Ainsi, vous obtiendrez la mauvaise étendue css, par exemple:
Expansion sur @Andrew Homeyer réponse:
J'ai eu l'étendue de style de bootstrap de travail dans mon Reactjs application en procédant de la manière suivante:
less/bootstrap.less
à partir de la source téléchargé le suivant:.bootstrap-scope {...pasted all @imports here...}
grunt dist
et copiés sur le nouveau dist dossier dans mon projetdans App.js
import './styling/bootstrap/css/bootstrap.min.css';
.Discussion similaire ici
pas besoin de fourche/modifier l'original de bootstrap.
Juste envelopper de ses importations dans votre fichier comme ceci (sass dans mon cas):
J'ai créé le fichier "bootstrap-portée-limites.scss" (que j'ai d'importation où j'ai besoin de bootstrap):
avis important!
veuillez garder à l'esprit que bootstrap a certains styles de carrosserie qui ne serait pas appliquée lors de l'utilisation d'une telle approche. Mais il vous donne une capacité de contrôle de bootstrap avec JS par l'ajout du "bootstrap à l'intérieur" de la classe de l'élément pour activer ou désactiver le bootstrap pour l'ensemble de la page si certains contenu dynamique a utiliser bootstrap ou pas.
une autre préoccupation que vous devriez connaître: certains plugins qui remplacent bootstrap styles peuvent avoir des problèmes depuis bootstrap styles avec une nouvelle classe wrapper devenir plus fort (plus spécifique) et ne peut être remplacée par déballé plugins.
pour webpack cas je vous recommande d'utiliser ce chargeur: https://www.npmjs.com/package/wrap-css-loader pour envelopper l'ensemble, que vous pouvez utiliser comme une partie de votre application (div?) plus tard
Expansion sur @jtlindsey réponse. Si vous souhaitez utiliser bootstrap 4, vous devez faire quelques petits changements.
Au lieu de modifier
less/bootstrap.less
vous devez modifierscss/bootstrap.scss
ensuite, vous devez exécuter cette commande dans l'ordre:
Et la nouvelle bootstrap.min.css est généré dans le dossier dist.
Ici, vous pouvez avoir plus d'informations:
https://getbootstrap.com/docs/4.0/getting-started/build-tools/
La seule chose que je sais de qui est certainement pire que ce script est de bootstrap lui-même, mais c'est probablement encore va être la meilleure réponse ici pour un peu de temps:
prefix="#bs431"; cat bootstrap.css | while IFS='' read -r line; do if echo "$line" | egrep -i '(\{|,)$' | egrep -iv '\@media' | wc -l | egrep -iq '^0$'; then echo "$line"; else echo "$line" | perl -pe 's/^(\s+)?/\1'"$prefix"' /g' | perl -pe 's/, (\.|#|\[|[a-zA-Z]{1})/, '"$prefix"' \1/g'; fi; done | perl -pe 's/'"$prefix"' :root/'"$prefix"'/g' > bootstrap.scoped.css