2017-07-07 3 views
1

Was mache ich mehrere Klassen für die verschiedenen Elemente schafft eine eine Hover-Klasse ist und das andere ist die nicht-Version schwebte. Nur ein oder zwei Dinge ändern sich zwischen den beiden Klassen und ich möchte nicht die gesamte Klasse kopieren und einfügen und nur eine Zeile ändern müssen.Kann ich von einer Klasse zur anderen erben in CSS

Also, was ich möchte tun, sagen

.hoverOff { 
background-color: green; 
font-size: 14pt; 
border: 2px; 
width: 150px; 
} 

Und dann habe ich eine schweben über Klasse

.hoverOn { 
background-color: red; 
} 

ich alles andere aus der hoverOff Klasse und einzige Änderung erben wollen die Hintergrundfarbe. Kann ich mit CSS so erben und geerbte Stile in der neuen Klasse übersteuern? So wie es jetzt aussieht, kopiere ich einfach die gesamte Klasse, benenne sie um und ändere eine Zeile. Scheint ziemlich überflüssig und archaisch für mich.

+2

Elemente in der dom mehrere Klassen haben. Erstellen Sie eine nur mit dem Hover-Effekt, der nur gemeinsam und dann verschiedenen Klassen mit dem, was ändert sich zwischen den Elementen –

+0

Ich glaube, jemand schon danach gefragt: https: // Stackoverflow.com/questions/5417356/inherit-css-class – Aksh

+0

nur eine Anmerkung mehr als alles andere - 'Hintergrund-Farbe' kann auf 'Hintergrund verkürzt werden und IMO ist es besser, hexcode oder rgba Farbcodes anstelle der Namen – ThisGuyHasTwoThumbs

Antwort

1

In reinem CSS, verwenden Sie einfach beiden Klassen in Ihrem ersten Selektor:

.hoverOff, 
.hoverOn { 
    font-size: 14pt; 
    border: 2px; 
    width: 150px; 
} 
.hoverOff { 
    background-color: green; 
} 
.hoverOn { 
    background-color: red; 
} 

Wie auch immer, wenn Sie einige JS erweiterte Magie tun, würde ich empfehlen, :hover zu verwenden, wie in this answer angegeben.

+0

nicht sicher, warum Downvote das würde funktionieren – ThisGuyHasTwoThumbs

+0

@ThisGuyHasTwoThumbs Ich hatte einen Tippfehler, als ich zuerst veröffentlicht. – zessx

+1

Weil [this] (https://stackoverflow.com/a/44974489/1541563) die richtige Route ist. –

4

Sie können tun, was Sie in der Frage beschreiben, aber es ist viel einfacher, nur CSS zu verwenden, um den Hover-Status für Sie mit dem :hover Pseudo-Selektor zu kümmern. Versuchen Sie folgendes:

.foo { 
 
    background-color: green; 
 
    font-size: 14pt; 
 
    border: 2px; 
 
    width: 150px; 
 
} 
 

 
.foo:hover { 
 
    background-color: red; 
 
}
<div class="foo"> 
 
    Hover over me 
 
</div>

1

die gesamte Klasse Kopieren sollte die letzte Option sein, wenn eine Option überhaupt.

Was ich tun würde, ist so etwas wie dieses:

.element { 
    background-color: green; 
    font-size: 14pt; 
    border: 2px; 
    width: 150px; 
} 

.element.on { 
    background-color: red; 
} 

.element:hover kann mehr Sinn machen; Meine Antwort ist mehr über das Teilen von CSS-Stilen.

.element.on, .element.off { 
    background-color: green; 
    font-size: 14pt; 
    border: 2px; 
    width: 150px; 
} 

.element.on { 
    background-color: red; 
} 

Schließlich CSS Pre-Compiler Sprachen haben Funktionen wie Mixins in weniger, in dem Sie eine Klasse mit Namen einer anderen Klasse zuordnen:

Alternativ können Sie die gleichen Stile, um mehrere Klassen wie folgt vergeben .

1

Wenn Sie die Vererbung im wahrsten Sinne des Wortes betrachten wollen Besuche CSS variables. Obwohl ich diese im Produktionscode nicht verwenden würde, dann ist es ein interessantes Feature, das einige coole Dinge ermöglicht:

.foo { 
 
    --bg-color: green; 
 
    background-color: var(--bg-color); 
 
    font-size: 14pt; 
 
    border: 2px; 
 
    width: 150px; 
 
} 
 

 
.foo:hover { 
 
    --bg-color: red; 
 
}
<div class="foo"> 
 
    Hover over me 
 
</div>

Verwandte Themen