2016-12-20 4 views
0

Um die Größe meiner CSS-Datei zu reduzieren, wollte ich einige Befehle wie background-size faktorisieren. Lassen Sie uns sagen, dass ich viel Abschnitte wie dieses:Können Hintergrundeinstellungen nicht vom Hintergrundbild getrennt werden?

#interlude { 
    background: url(https://.../unsplash.jpg) no-repeat center fixed; 
    -webkit-background-size: cover; 
    -moz-background-size: cover; 
    -o-background-size: cover; 
    background-size: cover; 
} 

Im Einsatz:

<div id="interlude"></div> 

Wenn ich viele verschiedene „Zwischenspiel“ divs haben, werden alle größenbezogene Linien in CSS dupliziert. Ich möchte so etwas bekommen:

#interlude { 
    background: url(https://.../unsplash.jpg) no-repeat center fixed; 
} 
.bw-back-cover { 
    -webkit-background-size: cover; 
    -moz-background-size: cover; 
    -o-background-size: cover; 
    background-size: cover; 
} 

In diesem Fall wird bw-back-cover Klasse nur einmal erklärt. Aber es funktioniert nicht und ich weiß nicht, ob das normal ist oder nicht.

Beiden Fälle auf Codepen

+0

Sie können nicht mehrere Interlude's divs haben. Zumindest nicht mit der gleichen 'ID'. – Ionut

+0

@crazymatt, scheint es von dem Codepen, der da ist. – Ionut

+0

Ja, ich sah es später, also entfernte ich meinen Kommentar. Für eine schnelle und dreckige Korrektur können Sie die ID-Klasse überschreiben, wenn Sie Ihrer Klasse die "wichtige" Regel hinzufügen, aber ich kann sie nicht wirklich empfehlen. – crazymatt

Antwort

3

Im Fall Ihrer CodePen, die Stenografie background Eigenschaft überschreiben alle Hintergrund bezogenen Eigenschaften, nicht nur diejenigen, angegeben - so background-size ignoriert wird, weil background eine höhere Priorität hat (auf einer ID vs. einer Klasse).

Es gibt zwei Möglichkeiten, dies zu beheben.

1) Der einfache Weg ist !important zu jeder Zeile der background-size Eigenschaft hinzuzufügen, so dass sie nicht durch die background Stenografie überschrieben werden. (Allerdings würde ich die zweite Lösung unter vorschlagen, wie !important schwierig ist, außer Kraft zu setzen, wenn nötig.) Code:

.bw-back-cover { 
    -webkit-background-size: cover !important; 
    -moz-background-size: cover !important; 
    -o-background-size: cover !important; 
    background-size: cover !important; 
} 

2) Der Reiniger fix wäre Eigenschaften Ihres Hintergrunds zu spalten, anstatt die Kurz der Verwendung, so background-size wird nicht überschrieben. Code:

#interlude { 
    background-image: url(https://.../unsplash.jpg); 
    background-repeat: no-repeat; 
    background-position: center; 
    background-attachment: fixed; 
} 
+1

Obwohl ich deine Erklärung hasse, ist dies die richtige Antwort. Es gibt nichts "hacky" über **! Wichtig ** Diese Art von Szenario ist der genaue Grund, warum der Anruf existiert. Er sollte alle seine normalen Anrufe auf seine IDs setzen und dann ein Klassen-Setup mit dem wichtigen Tag haben. Der Punkt, dass die Klasse speziell darauf ausgerichtet ist, nur ein bestimmtes Stück zu ändern, ist der Grund, warum die! Wichtig ist. Die Namenskonvention stimmt auch gut mit der Art der Einrichtung für einen wichtigen Anruf überein. – jjeining

+1

Danke @JonUleis, arbeitete wie ein Charme. Akzeptiert – paradise

+0

@jjeining Du hast Recht - wenn diese Klasse nur zu dem Zweck existiert, irgendeinem Element 'Hintergrundgröße' hinzuzufügen, dann ist '! Wichtig' hier nicht hacky. Ich bin nur daran gewöhnt, den Gebrauch davon zu entmutigen, weil es schwer zu überschreiben ist, aber Sie haben Recht, dass dies eine Situation ist, in der das nicht anwendbar ist. –

Verwandte Themen