Je veux utiliser Twitter Bootstrap, mais uniquement sur des éléments spécifiques, je dois donc trouver un moyen de préfixer toutes les classes Twitter Bootstrap avec mon préfixe, ou utiliser le moins de mixins. Je n'ai pas encore d'expérience avec cela, donc je ne comprends pas très bien comment faire cela. Voici un exemple du HTML que j'essaie de styliser:
<div class="normal-styles">
<h1>dont style this with bootstrap</h1>
<div class="bootstrap-styles">
<h1>use bootstrap</h1>
</div>
</div>
Dans cet exemple, Twitter Bootstrap h1
appliquerait un style normal aux deux , mais je veux être plus sélectif sur les zones dans lesquelles j'applique les styles Twitter Bootstrap.
twitter-bootstrap
less
Andrew
la source
la source
Réponses:
Cela s'est avéré plus facile que je ne le pensais. Less et Sass prennent en charge les espaces de noms (même en utilisant la même syntaxe). Lorsque vous incluez bootstrap, vous pouvez le faire dans un sélecteur pour l'espace de noms:
Mise à jour: pour les versions plus récentes de LESS, voici comment procéder:
Une question similaire a été répondue ici.
la source
@import
le Bootstrap d'origine. J'ai également eu des problèmes avec les modaux, je pense que parce que Bootstrap applique certaines classes à la balise body de niveau supérieur. Je ne me souviens pas si j'ai trouvé une solution. En fin de compte, je pense que j'ai fini par écrire mon propre remplacement modal.@Andrew excellente réponse. Vous voudrez également noter que bootstrap modifie le corps {}, principalement pour ajouter une police. Ainsi, lorsque vous l'espace de nom via LESS / SASS, votre fichier css de sortie ressemble à ceci: (dans bootstrap 3)
mais évidemment il n'y aura pas de balise body à l'intérieur de votre div, donc votre contenu bootstrap n'aura pas la police bootstrap (puisque tout bootstrap hérite de la police du parent)
Pour corriger, la réponse devrait être:
la source
margin: 0;
En rassemblant les réponses de @Andrew, @Kevin et @ adamj (plus quelques autres styles), si vous incluez les éléments suivants dans un fichier nommé "bootstrap-namespaced.less", vous pouvez simplement importer 'bootstrap-namespaced.less' dans n'importe quel fichier. fichier:
la source
L'ajout d'un espace de noms pour bootstrap CSS interrompra la fonctionnalité modale car le bootstrap ajoute une classe 'modal-backdrop' directement au corps. Une solution de contournement consiste à déplacer cet élément après l'ouverture du modal, par exemple:
Vous pouvez supprimer l'élément dans un gestionnaire pour l'événement 'hide.bs.modal'.
la source
this.modalService.open('myModal', {container: '#modalgoeshere'})
Utilisez la version .less des fichiers. Déterminez les fichiers dont vous avez besoin en moins, puis enveloppez ces fichiers .less avec:
Cela vous donnera la sortie de:
la source
J'ai fait un GIST avec Bootstrap 3 dans une classe nommée .bootstrap-wrapper https://gist.github.com/onigetoc/20c4c3933cabd8672e3e
J'ai commencé avec cet outil: http://www.css-prefix.com/ Et corrige le reste avec la recherche et le remplacement dans PHPstorm. Toutes les polices @ font-face sont hébergées sur maxcdn.
Exemple de première ligne
la source
L'espacement de noms rompt le div d'arrière-plan du plugin Modal, car il est toujours ajouté directement à la balise <body>, en contournant votre élément d'espacement de noms auquel les styles sont appliqués.
Vous pouvez résoudre ce problème en modifiant la référence du plugin
$body
avant d'afficher le fond:La
$body
propriété décide où la toile de fond sera ajoutée.la source
Pour mieux expliquer toutes les étapes dont parlait Andrew pour ceux qui ne savent pas ce qu'est Less. Voici un lien qui explique assez bien comment cela se fait étape par étape Comment isoler Bootstrap ou d'autres bibliothèques CSS
la source
Solution la plus simple: commencez à utiliser des classes CSS isolées de construction personnalisée pour Bootstrap.
Par exemple, pour Bootstrap 4.1, téléchargez des fichiers à partir du répertoire css4.1 -
https://github.com/cryptoapi/Isolate-Bootstrap-4.1-CSS-Themes
et enveloppez votre HTML dans un div avec la classe bootstrapiso:
Le modèle de page avec bootstrap isolé 4 sera
la source
J'ai rencontré le même problème et la même méthode que celle proposée par @Andrew n'a malheureusement pas aidé dans mon cas spécifique. Les classes Bootstrap sont entrées en collision avec des classes d'un autre framework. C'est ainsi que ce projet a été lancé https://github.com/sneas/bootstrap-sass-namespace . N'hésitez pas à l'utiliser.
la source
Comme une note supplémentaire pour tout le monde. Pour que les modaux fonctionnent avec une toile de fond, vous pouvez simplement copier ces styles depuis bootstrap3
la source
Premier clonage de bootstrap depuis github:
Exigences d'installation:
Ouvrez scss / bootstrap.scss et ajoutez votre espace de noms:
Compilez le bootstrap:
Ouvrez
dist/css/bootstrap.css
et supprimez l'espace de noms de la balisehtml
etbody
.Ensuite, copiez le contenu du dossier dist dans votre projet et vous êtes prêt.
S'amuser!
la source