Ist es möglich, nur das Alpha einer rgba Hintergrundfarbe beim Hover zu ändern?
Habe ich eine Reihe von <a>
tags mit unterschiedlichen rgba-hintergrund-Farben, aber den gleichen alpha. Ist es möglich, zu schreiben, eine einzige css-style, dass wird sich ändern, nur die Deckkraft der rgba-Attribut?
Ein kurzes Beispiel für den code:
<a href="#"><img src="" /><div class="brown">Link 1</div></a>
<a href="#"><img src="" /><div class="green">Link 2</div></a>
Und die Stile
a {display: block; position: relative}
.brown {position: absolute; bottom: 0; background-color: rgba(118,76,41,.8);}
.green {position: absolute; bottom: 0; background-color: rgba(51,91,11,.8);}
Was ich tun möchte, ist schreiben eine einzelne Art, die zu einer Veränderung der Opazität, wenn die <a>
ist schwebte über, aber halten Sie die Farbe unverändert.
Etwas wie
a:hover .green, a:hover .brown {background-color: rgba(inherit,inherit,inherit,1);}
Kommentar zu dem Problem
By the way, was sind Ihre
div
- Elemente in Ihrer a
- Elemente? @BoltClock HTML5 ermöglicht block-level
a
- Elemente. @mercator: Okay. Ich Folge verpasst.
@BoltClock schien Es der einfachste Weg, um code für die Wirkung, ein einzelnes
a
- tag, da-im Gegensatz zu einem um die img
und anderen rund um den text. Die Tatsache, dass es unterstützt HTML-5 ist ein schöner bonus. Wenn diese Frage gestellt wurde - dies war nicht möglich mit CSS. Nun ist diese ist möglich - mit CSS-Variablen - wie ich gezeigt habe, in meine Antwort
InformationsquelleAutor der Frage Fireflight | 2011-08-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist nun möglich mit benutzerdefinierten Eigenschaften:
Verstehen, wie das funktioniert, sehen Wie kann ich die anwenden der Deckkraft auf eine CSS-Farbe-variable?
Wenn benutzerdefinierte Eigenschaften sind nicht eine option, sehen Sie den ursprünglichen Antwort unten.
Leider Nein, hier geben die rot -, grün-und blau-Werte wieder für jede einzelne Klasse:
Kann man nur den
inherit
keyword alleine als Wert für die Eigenschaft, und selbst dann ist die Verwendung voninherit
nicht angemessen ist, hier.InformationsquelleAutor der Antwort BoltClock
Nein, es ist nicht möglich.
Könnten Sie versuchen, einen CSS-pre-processor, obwohl, wenn Sie wollen, das zu tun diese Art der Sache.
Von dem, was ich sehen konnte, zumindest WENIGER und Sass Funktionen haben, die können machen Farben mehr oder weniger transparent.
InformationsquelleAutor der Antwort mercator
Könnten Sie tun, verschiedene Dinge zu vermeiden, codieren Sie die zahlen, wenn Sie wollen. Einige dieser Methoden funktionieren nur, wenn Sie mit einem einfachen weißen hintergrund, wie Sie wirklich sind hinzufügen von weiß auf der Oberseite, anstatt die Verminderung der Deckkraft. Die erste sollte funktionieren für alles gesorgt:
position
zu relativen oder absoluten auf die<div>
tagOption 1:
::before
Pseudo-element:Option 2: weiß gif-overlay -:
Option 3:
box-shadow
Methode:Eine Variante des gif-Methode, kann aber performance-Probleme.
CodePen Beispiele: http://codepen.io/chrisboon27/pen/ACdka
InformationsquelleAutor der Antwort Chris Boon
Nein, das ist nicht möglich.
Wenn Sie verwenden möchten
rgba
, müssen Sie für jeden Wert zusammen. Gibt es keine Möglichkeit, ändern Sie nur die alpha.InformationsquelleAutor der Antwort thirtydot
Warum nicht
:hover
und geben Sie eine andere Deckkraft die hover-Klasse?InformationsquelleAutor der Antwort Diodeus - James MacFarlane
Ich hatte ein ähnliches problem. Ich hatte 18 verschiedene divs arbeiten, wie Tasten, und die jeweils mit einer anderen Farbe. Anstatt herauszufinden, die Farbcodes für die einzelnen oder verwenden Sie ein div:hover-Selektor, um die Deckkraft ändern (wirkt sich auf alle Kinder), habe ich die pseudo-Klasse :vor wie in @Chris Boon ' s Antwort.
Weil ich wollte, zu tun, die Färbung auf die einzelnen Elemente, die ich verwendet habe :vor dem erstellen eines transparenten weiß auf div :hover. Dies ist ein sehr einfaches auswaschen.
Laut CanIUse.com dies sollte so etwas wie 92% Unterstützung ab Anfang 2014. (http://caniuse.com/#feat=css-gencontent)
InformationsquelleAutor der Antwort Josiah
Update: Es ist nicht möglich, leider. Sie schreiben müssen, zwei getrennte Selektoren:
Nach den Standards des W3C, die
rgba
Eigenschaft nicht haben/unterstützeninherit
Wert.InformationsquelleAutor der Antwort jezza-tan
Stand ich vor einem ähnlichen problem. Hier ist, was ich Tat, und es funktioniert gut(
only alpha changes on hover and also the text is not affected
) durch die folgenden Schritte:1) tragen Sie einen markierten(oder eines Ihrer Wahl) - Klasse, um welches element Sie ändern möchten, hintergrund-alpha-Wert von.
2) Holen Sie sich die Hintergrundfarbe rgba
3) Speichern Sie es in eine Zeichenfolge und Sie zu manipulieren(ändern, alpha), die Sie auf hover(mouseenter und mouseleave)
HTML-Code:
CSS-Code:
Javascript-Code:
Arbeiten Fiddle:http://jsfiddle.net/HGHT6/1/
InformationsquelleAutor der Antwort Rakhi
Können Sie dies mit CSS-Variablen, obwohl es ein wenig chaotisch.
Legen Sie zuerst eine variable mit nur die RGB-Werte, um die Farbe, die Sie verwenden möchten:
Dann können Sie zuweisen, ein RGBA-Wert für eine Farbe, und ziehen Sie alles, aber den alpha-Wert dieser variable:
Dies ist nicht super schön, aber Sie können die gleichen RGB-Werte, aber unterschiedliche alpha-Werte für eine Farbe.
InformationsquelleAutor der Antwort Adam Hollett
gibt es eine alternative,Sie können eine linear-gradient hintergrund-Bild auf die ursprüngliche Farbe.
auch mit der css3-Eigenschaft filter,können Sie das auch tun,aber es scheint, dass es wird sich ändern die Farbe des Textes
hier ein jsfiddle:https://jsfiddle.net/zhangyu911013/epwyL296/2/
InformationsquelleAutor der Antwort Yu Zhang
einfache Lösung :
exemple : https://jsfiddle.net/epwyL296/14/
spielen nur mit alpha-hintergrund. wenn Sie möchten, Licht statt Dunkelheit, nur ersetzen Sie #000 auf #fff
InformationsquelleAutor der Antwort Matrix
Dies ist wohl der einfachste Weg; setzen Sie diese in Ihrer css-stylesheet:
getan!
InformationsquelleAutor der Antwort dr. null