Heim Web-Frontend CSS-Tutorial Schnelle und schmutzige Bootstrap überschreibt zur Laufzeit

Schnelle und schmutzige Bootstrap überschreibt zur Laufzeit

Mar 18, 2025 am 10:03 AM

Schnelle und schmutzige Bootstrap überschreibt zur Laufzeit

Bootstrap 5.2 und höher hat Lösungen für die in diesem Artikel beschriebenen Methoden bereitgestellt. Wenn Sie also Bootstrap 5.2 oder höher verwenden, können Sie CSS -Variablen direkt für benutzerdefinierte Überschreibungen verwenden.

Bootstrap, dieses altmodische Web-Front-End-Framework, wird von anderen geliebt, und manche Menschen spinnen darauf. Unabhängig davon, welche Perspektive Sie einnehmen, ist es ein leistungsstarkes UI -Framework mit einer breiten Anwendung, die meisten Menschen verstehen ihre Grundlagen und liefern höchst vorhersehbare Ergebnisse.

Bootstrap hat eine eigene Designphilosophie. Sie müssen HTML auf eine bestimmte Weise erstellen, Stile auf eine bestimmte Weise überschreiben, Kerndateien auf eine bestimmte Weise erstellen und diese auf eine bestimmte Weise in die Website einbeziehen. Normalerweise ist dies in Ordnung, wenn Ihr Kollege einen schlechten Bootstrap -Code schreibt, aber nicht alle Anwendungsfälle abdeckt.

Bootstrap wird tendenziell auf der Serverseite generiert und mag es nicht, seine Stile zur Laufzeit zu überschreiben. Wenn Sie eine Art visuelle Themenfunktionalität in Ihrer Anwendung implementieren müssen, empfiehlt Bootstrap, dass Sie bei Bedarf separate Stylesheets für jedes Thema und für jedes Thema umschalten. Dies ist eine großartige Möglichkeit, dies zu tun, wenn Sie Ihren Benutzern ein vordefiniertes Thema geben. Aber was ist, wenn Sie ein benutzerdefiniertes Thema wünschen? Sie können Ihre Anwendung so einrichten, dass Sie SASS ausführen und neue Stylesheets kompilieren und auf dem Server speichern. Dies erfordert jedoch viel Arbeit. Außerdem müssen Sie mit dem Backend -Personal und dem DevOps -Team kommunizieren, was viel Ärger hätte, wenn Sie nur die primären und sekundären Farben austauschen möchten.

Das war es, was ich damals ausgesetzt war.

Ich erstelle eine Multi-Benutzer-SaaS-Anwendung mit Django und Vue mit einem festen Layout, muss aber auch in der Lage sein, die Markenfarben für jedes Benutzerkonto zu ändern und ein automatisches Standardfarbthema zu haben. Eine weitere Anforderung ist, dass wir die Anwendung nicht jedes Mal neu einsetzen, wenn wir einen neuen Benutzer hinzufügen. Schließlich ist jeder Backend- und DevOps -Entwickler derzeit mit anderen Projekten beschäftigt, daher muss ich dies alleine beheben.

Da ich Sass zur Laufzeit nicht kompilieren möchte, kann ich Stylesheets erstellen und sie in die Seite injizieren, aber dies ist keine gute Lösung, da wir uns auf Farben konzentrieren. Das kompilierte Bootstrap -Stylesheet macht die Farbwerte als explizite hexadezimale Werte und (ich habe gerade überprüft) 23 Fälle von Hauptblau in meinem Stylesheet. Allein für die Primärfarbe muss ich jede Instanz überschreiben und dann erneut für die sekundäre Farbe, Warnfarbe, Gefahrfarbe und alle anderen Konventionen und Farben, die wir ändern möchten, erneut standardisieren. Es ist kompliziert und hat viel Arbeit. Ich will das nicht tun.

Glücklicherweise muss diese neue Anwendung nicht den Internet Explorer 11 unterstützen, was bedeutet, dass ich CSS -Variablen verwenden kann. Sie sind auch großartig, können definiert werden, nachdem das Stylesheet geladen wurde, in alle Richtungen fließt und alle gewünschten Farben verändert, oder? Bootstrap generiert diese große Liste von Variablen im: Root -Element, daher sollte dies einfach sein.

Zu diesem Zeitpunkt habe ich gelernt, dass Bootstrap nur einige seiner Werte als Variablen im Stylesheet macht und dass diese Variablenliste vollständig für die Verwendung von Endbenutzer dient. Die meisten Variablen in dieser Liste werden im restlichen Stylesheet nicht verwiesen, sodass die Neudefinition nicht auswirkt. (Es ist jedoch erwähnenswert, dass in Zukunft eine bessere Unterstützung für eine bessere Laufzeit -Variable bietet.)

Ich möchte also, dass mein Bootstrap -Stylesheet mit CSS -Variablen gerendert wird, die eher auf der Serverseite als auf dem statischen Farbwert betrieben werden können, was ausschließlich unmöglich ist. Wenn Sie die Farbvariable auf eine CSS -Variable festlegen, kompiliert SASS nicht. Es gibt einige clevere Tricks, um Sass dies zu machen (eine hier und eine weitere), aber sie erfordern verzweigte Bootstrap, und das Aussteigen aus dem Upgrade -Pfad gibt meiner App eine gewisse Anfälligkeit, die ich nicht hinzufügen möchte. Wenn ich ganz ehrlich bin, ist der wahre Grund, warum ich diese Lösungen nicht implementiere, dass ich nicht herausfinden kann, wie ich entweder mit meinem Sass -Compiler zusammenarbeiten kann. Aber Sie mögen besseres Glück haben.

Ich denke, es lohnt sich, meinen bevorzugten Workflow hier zu erklären. Ich bevorzuge es, Sass lokal auf meiner Entwicklungsmaschine zu führen, um das Stylesheet zu erstellen und das kompilierte Stylesheet an das Repository zu senden. Best Practice -Empfehlungen sollten Stylesheets während des Einsatzes kompilieren, was korrekt ist, aber ich arbeite für ein wachsendes, ständig verstandenes Startup. Ich benutze SASS, weil es mir gefällt, aber es ist offensichtlich ein Thema in meiner Arbeit und ich habe nicht die Zeit, die Fähigkeit oder die mentale Kraft, meine Sass -Builds in unsere verschiedenen Einsatzpipelines zu integrieren.

Es ist auch eine Art legaler böse Selbstverteidigung: Ich möchte nicht, dass unsere vollständigen Stack-Entwickler mit meinen aufwändigen Stilen in Kontakt treten und anfangen, alles zu schreiben, was sie wollen. Also! Sie konnten mich nur um Hilfe bitten, und genau so wollte ich.

All dies heißt: Wenn ich das Stylesheet nicht dazu bringen kann, mit den darin enthaltenen Variablen zu rendern, kann mich nichts daran hindern, es in das Stylesheet zu injizieren , nachdem das Stylesheet zusammengestellt wurde .

Erleben Sie die Kraft der Suche und Ersatz!

Alles, was wir tun müssen, ist in Bootstrap zu gehen und die Farben zu finden, die wir ersetzen möchten, die sich bequem im Root -Stil oben auf dem zusammengestellten Stylesheet befinden:

 <code>:root { --bs-blue: #002E6D; --bs-indigo: #6610F2; // ... other variables }</code>
Nach dem Login kopieren

Holen Sie sich den Wert von zum Beispiel-BS-Primary, dem altmodischen Bootstrap Blue. Ich verwende Gulp, um meine Stylesheets zu kompilieren. Schauen wir uns also die Sass -Task -Funktion in gulpFile.js an:

 var gulp = require ('gulp');
var sass = require ('gulp-sass') (erfordert ('sass');
var Sourcemaps = Request ('gulp-sourcemaps');
var gulpreplace = required ('gulp-replace');

Funktion SassCompile () {
  return gulp.src ('static/sass/project.scss')
    .pipe (Sourcemaps.init ())
    .pipe (sass ({outputStyle: 'erweitert'}))
    .Pipe (Sourcemaps.Write ('.'))
    .Pipe (gulpreplace (/#002e6d/ig, 'var (-ct-primary)')))
    .pipe (gulp.dest ('static/css/'));
}
exports.sass = sasscompile;
Nach dem Login kopieren

Kompilieren Sie das Stylesheet und sehen Sie es dann an.

 :Wurzel {
  --BS-Blue: var (-CT-Primary);
  --BS-Indigo: #6610f2;
  // ... andere Variablen
}
Nach dem Login kopieren

Großartig, ok, wir haben jetzt ein komplettes Stylesheet, das einen variablen Wert erfordert, um Blau darzustellen. Beachten Sie, dass es sowohl die Hauptfarbe als auch "Blau" ändert. Dies ist keine subtile Technik. Ich nenne es aus einem bestimmten Grund schnell und rau Wenn Sie beispielsweise "Blue" und "Haupt" als separate Werte halten möchten, gehen Sie in Ihre SASS und definieren Sie die Variablen $ blau und $ primärer SASS in verschiedenen Werten neu, dann können Sie sie so separat finden und ersetzen.

Als nächstes müssen wir den neuen Standard -Variablenwert in der Anwendung definieren. Dies im HTML -Header zu tun ist sehr einfach:

<link href="/static/css/project.css" rel="stylesheet">
<style>
  :root {
    --ct-primary: #002E6D;
  }
</style>
Nach dem Login kopieren

Führen Sie es aus und alles wird auftauchen. Alles, was blau sein muss, ist blau. Wiederholen Sie diesen Vorgang ein paar Mal und Sie können plötzlich viele Farben im Bootstrap -Stylesheet steuern. Dies sind die Variablen, die ich dem Benutzer zur Verfügung gestellt habe, und deren Standardfarbwerte:

 -CT-Primary: #002E6D;
--CT-Primary-Hover: #00275d;
// ... andere Variablen
Nach dem Login kopieren

Jetzt beginnt der Spaß! Von hier aus können Sie diese Standardwerte bei Bedarf direkt manipulieren oder einen Sekunde hinzufügen: Root -Stil unter den Standardwerten, um nur die gewünschten Farben zu überschreiben. Oder geben Sie wie ich ein Textfeld in das Benutzerprofil ein, das den Root -Stil in Ihren Titel ausgibt, und überschreiben Sie, was Sie brauchen. Schauen Sie, Sie können jetzt die Bootstrap zur Laufzeit überschreiben, ohne das Stylesheet neu zu kompilieren oder sich verrückt zu machen.

Dies ist sicherlich keine elegante Lösung, aber es löst einen sehr spezifischen Anwendungsfall, den Entwickler seit Jahren zu lösen versuchen. Und dies hat sich für mich als sehr effiziente Lösung erwiesen, bevor Bootstrap beschloss, die Variablen zur Laufzeit leicht zu überschreiben.

Das obige ist der detaillierte Inhalt vonSchnelle und schmutzige Bootstrap überschreibt zur Laufzeit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Gestapelte Karten mit klebriger Positionierung und einem Schuss Sass Gestapelte Karten mit klebriger Positionierung und einem Schuss Sass Apr 03, 2025 am 10:30 AM

Neulich habe ich dieses besonders schöne Stück von der Website von Corey Ginnivan entdeckt, auf der eine Sammlung von Karten aufeinander stapelt.

Google -Schriftarten variable Schriftarten Google -Schriftarten variable Schriftarten Apr 09, 2025 am 10:42 AM

Ich sehe, dass Google -Schriftarten ein neues Design (Tweet) ausgelöst haben. Im Vergleich zur letzten großen Neugestaltung fühlt sich dies viel iterativer an. Ich kann den Unterschied kaum erkennen

So erstellen Sie einen animierten Countdown -Timer mit HTML, CSS und JavaScript So erstellen Sie einen animierten Countdown -Timer mit HTML, CSS und JavaScript Apr 11, 2025 am 11:29 AM

Haben Sie jemals einen Countdown -Timer für ein Projekt benötigt? Für so etwas ist es möglicherweise natürlich, nach einem Plugin zu greifen, aber es ist tatsächlich viel mehr

Warum werden die lila abgeschnittenen Bereiche im Flex -Layout fälschlicherweise als 'Überlaufraum' betrachtet? Warum werden die lila abgeschnittenen Bereiche im Flex -Layout fälschlicherweise als 'Überlaufraum' betrachtet? Apr 05, 2025 pm 05:51 PM

Fragen zu lila Schrägstrichen in Flex -Layouts Bei der Verwendung von Flex -Layouts können Sie auf einige verwirrende Phänomene stoßen, wie beispielsweise in den Entwicklerwerkzeugen (D ...

Wie wähle ich ein untergeordnetes Element mit dem erstklassigen Namen über CSS aus? Wie wähle ich ein untergeordnetes Element mit dem erstklassigen Namen über CSS aus? Apr 05, 2025 pm 11:24 PM

Wenn die Anzahl der Elemente nicht festgelegt ist, wählen Sie das erste untergeordnete Element des angegebenen Klassennamens über CSS aus. Bei der Verarbeitung der HTML -Struktur begegnen Sie häufig auf verschiedene Elemente ...

HTML -Datenattributehandbuch HTML -Datenattributehandbuch Apr 11, 2025 am 11:50 AM

Alles, was Sie schon immer über Datenattribute in HTML, CSS und JavaScript wissen wollten.

Ein Beweis für das Konzept, um Sass schneller zu machen Ein Beweis für das Konzept, um Sass schneller zu machen Apr 16, 2025 am 10:38 AM

Zu Beginn eines neuen Projekts erfolgt die SASS -Zusammenstellung im Blinzeln eines Auges. Dies fühlt sich gut an, besonders wenn es mit Browsersync kombiniert ist, das nachlädt

See all articles