Smooth Übergang zwischen zwei (Klasse) und (Klasse): Hover

8

Gibt es ein Skript / einen Weg, der normales CSS :hover weicher macht?

Idee wäre, dass Sie zwei Klassen vielleicht mit Gradienten Hintergrund bekommen, und das Skript würde die Klassen reibungslos tauschen. So würden die Farbverläufe wie auf Knopfdruck aussehen. Sollte automatisch sein, also rufen Sie den Trigger: $('.someclass').SmoothTransition(); und es würde automatisch die .someclass:hover als zweite Klasse verwenden.

Kopfgeld bearbeiten

Das ist eigentlich eine sehr interessante Frage, die von mir teilweise beantwortet wurde. Das Problem mit meiner Antwort ist, dass es nur für eine durchgehende Hintergrundfarbe funktioniert und nicht mit CSS-Gradienten oder anderen spezifischen Parametern arbeitet.

Dieses Skript sollte in jeder jQuery-Entwicklerbibliothek ein Muss sein. Also, ich biete 150 Rep für jeden, der einen Weg finden oder eine gute Ressource finden kann, die dies tun kann.

Wenn Ihre Methode (einzelnes jQuery-Plugin) für alle diese Beispiele funktioniert, haben Sie gewonnen!

Beispiele: Ссылка

Moderne Tage bearbeiten

Da diese Frage im Jahr 2011 beim Übergang der CSS gestellt wurde, war kommerzielles Spiel keine Option. Dann verstehe, warum in dieser Frage alles auf JS und nicht auf CSS fokussiert ist. Aus diesen Antworten entwickelte ich ein JS-Skript, das zu der Zeit perfekt war. Es ist nicht mehr, CSS-Übergänge sind jetzt die ultimative Lösung, so dass die richtige Antwort wieder akzeptiert wurde.

    
Kalle H. Väravas 23.07.2011, 14:15
quelle

6 Antworten

19

Sie können css3-Übergänge verwenden, um das zu erreichen.

Ein Beispiel:

%Vor%

Sie können das hier lebend hier überprüfen.

Das Beispiel wurde mit statischen Farben angegeben, aber Sie können auch css3-Verläufe verwenden:

%Vor%     
bluefoot 23.07.2011, 14:19
quelle
3

Ссылка

Funktioniert in Chrome, Safari für Windows und Opera. Firefox und IE haben eine schlechte Unterstützung für CSSRules-Objekte, daher sind die Ergebnisse bestenfalls zweifelhaft. Ich werde weiter daran arbeiten, um zu sehen, ob ich die Probleme beheben kann.

Die CSS-Stile müssen auch optimiert werden. Da im letzten Beispiel dem :hover Selektor keine Hintergrundfarbe zugewiesen wurde, gibt es keine Hintergrundfarbe für das neue Element.

Wenn jemand Ideen für dieses Zeug hat, würde ich sie gerne hören.

BEARBEITEN: BEHOBEN

Ссылка

Das funktioniert besser. Ich durchsuche alle css-Regeln für :hover selectors, dann speichere ich den CSS-Text, der dieser Regel zugeordnet ist, und die non: hover-Regel als JavaScript-Objekt, das in $().css() eingefügt werden kann. Danach berechne ich die tatsächliche "Hover-Klasse" mit $.extend() , um die Hover-Klasse auf die normale Klasse zu erweitern. Wenn in der Klasse :hover kein Hintergrund definiert ist, wird auf diese Weise immer noch der Hintergrund der normalen Klasse angezeigt.

Schließlich erstelle ich ein Element und positioniere es direkt unter dem ursprünglichen Element, befreie das, was CSS den Hover macht, füge meinen normalen Stil zum Original hinzu und meinen berechneten Hover-Stil für das neue Element darunter.

Danach müssen wir lediglich die Deckkraft bei Mausereignissen animieren. Einfach!

    
btleffler 20.10.2011 20:08
quelle
1

Ссылка Dieses Projekt ermöglicht Transformationen in allen gängigen Browsern mit Ausnahme von ie7 und ie6. Es hat progressive Verbesserung für diese 2 Browser

    
Keith.Abramo 18.10.2011 18:09
quelle
0

Also die Lösung, nach der ich gesucht habe, ist diese:

%Vor%

Sehen Sie sich die Live-Demo an: Ссылка

HINWEIS: Funktioniert nicht mit CSS3-Gradienten. Aber immer noch ..

    
Kalle H. Väravas 24.07.2011 06:26
quelle
0

Es ist wirklich hart, aber ich habe eine Geige , die (theoretisch) in verschiedenen Browsern funktionieren sollte mit welchem ​​Bild auch immer du willst. Gerade jetzt ist es ein bisschen hacky (lese extrem), aber es ist ein guter Anfang und wird vielleicht Leute auf dem Weg zu einer vollständigen Antwort bringen. Außerdem funktioniert es im Moment nicht, wenn Sie es schnell machen. Die Schaltfläche muss vollständig ein- oder ausgeblendet werden, bevor die Maus das Element verlässt. Wie gesagt, hacky aber ein Anfang.

    
Ktash 22.10.2011 03:41
quelle
-1

Ich habe endlich den ULTIMATIVEN Weg gefunden, einen fließenden Übergang beim Schweben zu haben. Ich hoffe, dass dies anderen mit dem gleichen Problem helfen wird. Meine aktuellen Tests zeigen, dass dies zu 100% für alle Beispiele funktioniert, die ich mir vorstellen kann. Funktioniert für Hyperlinks und normale Container.

Laden Sie von GitHub herunter

Dieses Plugin hat 3 Optionen.

  • showSpeed: [Nummer] - Leichtigkeit der Animationsgeschwindigkeit
  • hideSpeed: [Nummer] - einfache Animationsgeschwindigkeit
  • includeText: [boolean] - bestimmt, ob der HTML-Code aus dem Element verwendet wird

Wenn Sie Ideen haben, wie Sie dieses Plugin optimieren können, kontaktieren Sie mich oder hinterlassen Sie einen Kommentar:)

    
Kalle H. Väravas 16.11.2011 05:49
quelle

Tags und Links