Ich suchte eine Weile, konnte aber zu meiner Überraschung kein ähnliches Problem finden.Wenn Bootstrap in mehreren SASS-Dateien verwendet wird, treten Probleme mit der Klassenüberschreibung auf. Was ist eine richtige SASS/Bootstrap-Struktur?
Ich verwende SASS und Bootstrap für eine Drupal-Installation. Ich habe eine einfache Dateistruktur:
- base.scss - Bietet Bootstrap und variable Importe.
- style.scss - die Module Projekt Importe:
style.scss
@import "base";
@import "util";
@import "node";
@import "project";
@import "breadcrumb";
@import "menu";
So natürlich alle diese [above].scss
sind vorhanden und im selben Ordner befinden.
Mein Ziel
- Ich möchte in allen separaten Dateien verwenden Bootstrap: Knoten, Projekt, Paniermehl und Menü, aber nur einmal enthalten Bootstrap.
Das Problem
- Wenn ich in einem der angegebenen Dateien
@extend .breadcrumb;
wollen ohneimport "base";
kann der Wähler .breadcrumb nicht gefunden werden. - Wenn ich
import "base";
in diesen n separaten Dateien werden Bootstrap-Selektoren n mal enthalten. Dies führt zu einem unglaublichen Durcheinander und macht das Übersteuern von Bootstrap-Selektoren kompliziert. Zum Beispiel möchte ich Bootstrap.navbar-toggle
ändern. Wenn ich dies innode.scss
tun würde, wird es durch den dann importierten Standard Bootstrap-Selektor inproject.scss
überschrieben werden.
Fragen
- Gibt es eine richtige Art und Weise Bootstrap, um nur einmal und es in mehrere anderen Dateien verwenden?
- Ich verstehe nicht wirklich, warum Problem Nr. 1 überhaupt existiert. SASS doc sagt:
Sass wird die Datei übernehmen, die Sie importieren möchten, und kombinieren es mit der Datei in die Sie importieren, so dass Sie eine einzelne CSS-Datei an den Webbrowser dienen kann.
- Also, wenn ich die oben genannten
style.scss
verwenden, dass die Einfuhren Bootstrap und nicht Import Bootstrap in den Modulen, warum der Compiler jede Bootstrap-Klasse zu lösen Fehler? Das klingt nicht wirklich nach kombiniert Importe, für mich. Oder fehlen mir einige der Grundlagen?
Vielen Dank im Voraus.
base.scss:
/*!
* Bootstrap v3.3.7 (http://getbootstrap.com)
* Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/../../bootstrap/stylesheets/bootstrap/blob/master/LICENSE)
*/
// Core variables and mixins
@import "variables";
@import "../../bootstrap/stylesheets/bootstrap/mixins";
// Reset and dependencies
@import "../../bootstrap/stylesheets/bootstrap/normalize";
@import "../../bootstrap/stylesheets/bootstrap/print";
@import "../../bootstrap/stylesheets/bootstrap/glyphicons";
// Core CSS
@import "../../bootstrap/stylesheets/bootstrap/scaffolding";
@import "../../bootstrap/stylesheets/bootstrap/type";
@import "../../bootstrap/stylesheets/bootstrap/code";
@import "../../bootstrap/stylesheets/bootstrap/grid";
@import "../../bootstrap/stylesheets/bootstrap/tables";
@import "../../bootstrap/stylesheets/bootstrap/forms";
@import "../../bootstrap/stylesheets/bootstrap/buttons";
// Components
@import "../../bootstrap/stylesheets/bootstrap/component-animations";
@import "../../bootstrap/stylesheets/bootstrap/dropdowns";
@import "../../bootstrap/stylesheets/bootstrap/button-groups";
@import "../../bootstrap/stylesheets/bootstrap/input-groups";
@import "../../bootstrap/stylesheets/bootstrap/navs";
@import "../../bootstrap/stylesheets/bootstrap/navbar";
@import "../../bootstrap/stylesheets/bootstrap/breadcrumbs";
// [...] other components
// Components w/ JavaScript
@import "../../bootstrap/stylesheets/bootstrap/modals";
@import "../../bootstrap/stylesheets/bootstrap/tooltip";
// [...]
// Utility classes
@import "../../bootstrap/stylesheets/bootstrap/utilities";
@import "../../bootstrap/stylesheets/bootstrap/responsive-utilities";
Ich benutze das "weniger" Starterkit des Drupal 8 Bootstrap Basisthemas, spezifiziert in https://sevaa.com/blog/build-drupal-8-bootstrap-subtheme-sass/. Meine Bootstrap-Dateien und Variablen werden in _base.scss_ importiert, die von _style.scss_ importiert wird und alle Module importiert. Diese funktionieren nicht ohne Importanweisungen. Ich habe auch versucht, eine neue 'test.scss' in _base.scss_ zu importieren (test.scss importiert _base.scss_ nicht). Ergebnis: 'Der Selektor" .breadcrumb "wurde nicht gefunden. In _style.scss_ können Bootstrap-Variablen und Selektoren verwendet werden. Nur die importierten Dateien haben keinen Zugriff. – Niklas
Hmm es klingt wie es ein Problem mit Ihrem base.scss ist. Haben Sie versucht, Bootstrap und Variablen direkt in style.scss ohne Basisdatei zu importieren und zu prüfen, ob Variablen und Selektoren in Modulen funktionieren? Oder prüfen, ob Variablen und Selektoren in base.scss selbst funktionieren? Gibt es auch einen Grund, das SASS Starter Kit nicht für D8 zu verwenden? – Olenka
Ich habe keine verdammte Idee, warum ich mich entschied, den Anweisungen im Tutorial blind zu folgen und das weniger Starterkit zu kopieren ... Aber ich denke nicht, dass es ein großes Problem ist, da die Dateien und das Konzept fast identisch sein sollten, seit meinem jetzigen Setup basiert auf [Bootstrap SASS] (https://github.com/twbs/bootstrap-sass) Quelldateien. Wenn Sie mein oben genanntes "test.scss" -Szenario erneut gelesen haben, habe ich Ihren Vorschlag bereits versucht, direkt in den Stil zu importieren (naja, ich habe ein anderes Modul in base.scss importiert, was im Prinzip das Gleiche ist), leider ohne Erfolg. Ich werde base.scss in den Beitrag aufnehmen. – Niklas