CSS - Reihenfolge

Thema: CSS - Reihenfolge

Stichworte:
  1. karo68:

    Standard CSS - Reihenfolge

    Hallo,

    ich möchte die bootstrap.min.css über contao-theme-plus einbinden. Zusätzlich habe ich eine internes stylesheet, um die bootstrap-Klasssen zu überschreiben. Daher soll das interne stylesheet nach (und nicht vor) der bootstrap.min.css geladen werden. Ist es irgendwie möglich, die Reihenfolge festzulegen, wenn ich contao-theme-plus benutze?

    Gruß
    Karsten
     
  2. monaco:

    Standard

    Hallo,

    ich habe ein ähnliches Problem. Habe auch die bootstrap-css wie folgt eingebunden:
    PHP-Code: [Ansicht]
    <link href="assets/components/bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen"
    Zudem habe ich eine eigene interne CSS-Datei definiert. Leider werden aber die Vorgaben dieser nicht überschrieben.

    Wo kann ich denn die entsprechende Reihenfolge der CSS-Dateien definieren, damit das Überschreiben klappt?
    Seien wir realistisch, versuchen wir das Unmögliche
     
  3. monaco:

    Standard

    Kann es sein, dass eine interne CSS-Datei die eingebundene CSS-Datei im head-Bereich wie in meinem Beispiel
    PHP-Code: [Ansicht]
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css"
    nicht überschreibt?
    Seien wir realistisch, versuchen wir das Unmögliche
     
  4. Avatar von tab

    tab:

    Standard

    Das interne CSS ist ja ebenfalls im <head> eingebunden. Insofern wird es wohl drauf ankommen, was da im <head> zuerst drinsteht im fe_page Template bzw nachher im Seitenquelltext. Das hier sollte die Zeile in fe_page sein, welche die von Contao zusammengefassten Stylesheets einbindet.
    PHP-Code: [Ansicht]
      <?php echo $this->stylesheets?>
     
  5. Avatar von Spooky

    Spooky:

    Standard

    Zitat Zitat von monaco Beitrag anzeigen
    ich habe ein ähnliches Problem. Habe auch die bootstrap-css wie folgt eingebunden:
    PHP-Code: [Ansicht]
    <link href="assets/components/bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen"
    Warum machst du das überhaupt so? Warum befindet sich die bootstrap.min.css dort? Wenn du die Datei schon lokal hast, wieso bindest du sie über "Zusätzliche head-Tags" ein, statt bei den Stylesheets?



    Zitat Zitat von monaco Beitrag anzeigen
    Zudem habe ich eine eigene interne CSS-Datei definiert. Leider werden aber die Vorgaben dieser nicht überschrieben.

    Wo kann ich denn die entsprechende Reihenfolge der CSS-Dateien definieren, damit das Überschreiben klappt?
    Ob eine CSS Definition überschrieben wird oder nicht hängt von der Specifity ab und von der Reihenfolge. Im fe_page Template findest du im <head> folgendes:
    PHP-Code: [Ansicht]
      <?php echo $this->viewport?>
      <?php echo $this->framework?>
      <?php echo $this->stylesheets?>
      <?php echo $this->mooScripts?>
      <?php echo $this->head?>
    Bei <?php echo $this->stylesheets; ?> werden die im Layout definierten Stylesheets ausgegeben, bei <?php echo $this->head; ?> werden unter anderem die Sachen ausgegeben, die du bei "Zusätzliche head-Tags" angegeben hast. Daher wird dein einternes Stylesheet auch vor der von dir definierten bootstrap.min.css ausgegeben.
     
  6. monaco:

    Standard

    oh je, danke für den Hinweis tab und spooky. Ich habe das falsche Template ausgewählt.
    Jetzt funktionierst!
    Seien wir realistisch, versuchen wir das Unmögliche
     
  7. Avatar von Doro

    Doro:

    Standard

    ich würd das gerne nochmal zusammenfassen und meine 2cents dazu geben,
    da ich in das Problem auch reingelaufen bin und ich glaube ich weiss auch warum

    Zitat Zitat von Spooky Beitrag anzeigen
    Warum machst du das überhaupt so? Warum befindet sich die bootstrap.min.css dort? Wenn du die Datei schon lokal hast, wieso bindest du sie über "Zusätzliche head-Tags" ein, statt bei den Stylesheets?
    als Dummy bin ich auch den Weg gegangen und hab mir das Video auf Vimeo angesehen.
    Dort wird es genau so gezeigt, die components/bootstrap in den assets ordner und über die Zusätzlichen <head>-Tags einbinden.

    Dadurch ist aber ein Ändern der Ladereihenfolge im Template wirkungslos, denn dann ist die Ladereihenfolge eben so festgelegt, dass die eigenen/custom.css immer von bootstrap überschrieben werden.
    spät kam mir dann die Erkenntnis, dass die bootstrap.min.css eben lokal eingebunden werden sollte, sodass sie mit den eigenen CSS-Anweisungen überschrieben werden kann.
     
  8. karo68:

    Standard

    also ich habe es jetzt folgendermaßen gelöst:
    Ich kopiere die bootstrap.min.css in mein file-Verzeichnis und binde diese dann als externes Stylesheet ein. Dann wähle ich "externe stylesheets zuerst laden" aus. Somit kann ich die CSS-Anweisungen dann überschreiben, s. Anhang.
    bootstrap-css.jpg
     
  9. Avatar von Doro

    Doro:

    Standard

    ja genau so habe ich es dann jetzt auch gemacht, nachdem ich mich erstmal verlaufen hatte:-)
     
  10. mj1985:

    Standard

    Wieso so kompliziert?

    Wenn ihr das aktuelle Contao-Bundle nutzt, dann müsst ihr doch sowieso die components/bootstrap laden oder ein externes Stylesheet einbinden.
    Danach geht ihr wie folgt vor, Bootstrap als CSS-Datei über Theme+ einbinden, danach ein weiteres CSS einbinden (eurer eigenes).
    Über Theme+ -> Neues CSS (File) -> Quelle: Assets. Dann im Unterordner CSS eure CSS-Datei auswählen.
    Nun habt ihr in Theme+ CSS zwei Einträge, erst Bootstrap, dann euer CSS.
     
  11. Avatar von Doro

    Doro:

    Standard

    nöööh, hat sich ja niemand beschwert dass es kompliziert sei lieber mj1985
    mir war nur deutlich geworden warum ich, und offenbar vor mir monaco, in das Problem mit der Ladereihenfolge geraten sind.
    und ich hatte gedacht, bevor es jemand anderem ebenso ergeht, fasse ich es mal zusammen, war eigentlich nur gut gemeint und überhaupt keine Beschwerde.
    Nix weiter:-)
     
  12. webstar:

    Standard

    Das Video zeigt einfach nur eine Variante um schnell an einen Prototypen zu kommen.

    Bei realen Projekten würde ich nie auf die Components-Variante zurückgreifen, sondern Im Theme-Ordner mit einer individuell angepassten Variante arbeiten. Dank Less oder Sass lassen sich ja sehr leicht Teilkomponenten verwenden und über die Variablen das Standardverhalten schon leicht anpassen.

    Wenn die Dateien kann im Theme-Ordner unter files liegen, lassen sich die Dateien auch wieder über den Contao-Weg einbinden. Auch wenn für mich hier immer Theme+ zum Einsatz kommt.