Ich habe einen Fall, in dem ich Inline-CSS-Code schreiben muss, und ich möchte einen Schwebestil auf einen Anker anwenden.
Wie kann ich a:hover
Inline-CSS innerhalb des HTML-Stilattributs verwenden?
Beispielsweise können Sie CSS-Klassen in HTML-E-Mails nicht zuverlässig verwenden.
html
css
inline-styles
Amr Elgarhy
quelle
quelle
Antworten:
Kurze Antwort: Sie können nicht.
Lange Antwort: Das solltest du nicht.
Geben Sie ihm einen Klassennamen oder eine ID und verwenden Sie Stylesheets, um den Stil anzuwenden.
:hover
ist ein Pseudo-Selektor und hat für CSS nur innerhalb des Stylesheets eine Bedeutung. Es gibt kein Inline-Äquivalent (da es die Auswahlkriterien nicht definiert).Antwort auf die Kommentare des OP:
Unter Totally Pwn CSS with Javascript finden Sie ein gutes Skript zum dynamischen Hinzufügen von CSS-Regeln. Siehe auch Stylesheet ändern für einige der Theorien zu diesem Thema.
Vergessen Sie auch nicht, dass Sie Links zu externen Stylesheets hinzufügen können, wenn dies eine Option ist. Zum Beispiel,
Achtung: Die oben übernimmt gibt es einen Kopfabschnitt.
quelle
style="{color:green;} :hover { color: red; }"
und Firefox hat es geschafft, den Link grün zu färben, aber den Hover ignoriert. Chrome ignorierte beide. Fortgesetzte Tests wären ziemlich sinnlos.Sie können den gleichen Effekt erzielen, indem Sie Ihre Stile mit JavaScript in den Parametern
onMouseOver
und ändern. DiesonMouseOut
ist jedoch äußerst ineffizient, wenn Sie mehr als ein Element ändern müssen:Ich kann mich auch nicht sicher erinnern, ob dies
this
in diesem Zusammenhang funktioniert. Möglicherweise müssen Sie es mit wechselndocument.getElementById('idForLink')
.quelle
<div onMouseOver="this.style.backgroundColor='#F8F8F8'" onMouseOut="this.style.backgroundColor='#FFFFFF'"> ...
Sie könnten es irgendwann in der Vergangenheit tun . Aber jetzt (gemäß der neuesten Überarbeitung des gleichen Standards, der Kandidatenempfehlung) können Sie nicht.
quelle
<a href="http://www.w3.org/" style="{color: #900} :link {background: #ff0} :visited {background: #fff} :hover {outline: thin red solid} :active {background: #00f}">...</a>
Aber es hat nicht funktioniertIch bin sehr spät dran, aber ich war traurig zu sehen, dass niemand dies vorgeschlagen hat. Wenn Sie tatsächlich Inline-Code benötigen, ist dies möglich. Ich brauchte es für einige Hover-Buttons. Die Methode ist folgende:
In diesem Fall der Inline-Code: "Hintergrundfarbe: rot;" Ist die Schalterfarbe beim Schweben, geben Sie die gewünschte Farbe ein und dann funktioniert diese Lösung. Mir ist klar, dass dies in Bezug auf die Kompatibilität möglicherweise nicht die perfekte Lösung ist. Dies funktioniert jedoch, wenn dies unbedingt erforderlich ist.
quelle
Sie können nicht genau das tun, was Sie beschreiben, da dies
a:hover
Teil des Selektors ist und nicht der CSS-Regeln. Ein Stylesheet besteht aus zwei Komponenten:Inline-Stile haben nur Regeln. Der Selektor ist implizit das aktuelle Element.
Der Selektor ist eine ausdrucksstarke Sprache, die eine Reihe von Kriterien beschreibt, mit denen Elemente in einem XML-ähnlichen Dokument übereinstimmen.
Sie können sich jedoch nähern, da ein
style
Set technisch fast überall hingehen kann:quelle
<html> </html>
Tagmit Javascript:
a) Hinzufügen eines Inline-Stils
b) oder eine etwas schwierigere Methode - Hinzufügen von "Mouseover"
Hinweis: Mehrwortstile (dh
font-size
) in Javascript werden zusammen geschrieben :element.style.fontSize="12px"
quelle
Dies ist das beste Codebeispiel:
Moderator-Vorschlag: Halten Sie Ihre Trennung von Bedenken aufrecht.
HTML
JS
quelle
Inline-Pseudoklassendeklarationen werden in der aktuellen Iteration von CSS nicht unterstützt (obwohl sie meines Wissens in einer zukünftigen Version vorliegen können).
Im Moment ist es wahrscheinlich am besten, einfach einen Stilblock direkt über dem Link zu definieren, den Sie stylen möchten:
quelle
Wie bereits erwähnt, können Sie keine beliebigen Inline-Stile für den Hover festlegen, aber Sie können den Stil des Hover-Cursors in CSS mithilfe der folgenden Angaben im entsprechenden Tag ändern :
quelle
Hover ist eine Pseudoklasse und kann daher nicht mit einem Stilattribut angewendet werden. Es ist Teil des Selektors.
quelle
Du kannst das. Aber nicht in Inline-Stilen. Sie können
onmouseover
undonmouseout
Ereignisse verwenden:quelle
Ihren Kommentaren zufolge senden Sie trotzdem eine JavaScript-Datei. Führen Sie den Rollover in JavaScript durch. Die Methode von jQuery
$.hover()
macht es einfach, wie jeder andere JavaScript-Wrapper. Auch in reinem JavaScript ist es nicht allzu schwer.quelle
Es gibt keine Möglichkeit, dies zu tun. Sie können ein JavaScript- oder einen CSS-Block verwenden.
Möglicherweise gibt es eine JavaScript-Bibliothek, die ein proprietäres Stilattribut in einen Stilblock konvertiert. Dann ist der Code jedoch nicht standardkonform.
quelle
Ich habe gerade eine andere Lösung gefunden.
Mein Problem: Ich habe ein
<a>
Tag um einige Folien / Hauptinhaltsanzeige sowie<a>
Tags in der Fußzeile. Ich möchte, dass sie an dieselbe Stelle im IE gehen, damit der gesamte Absatz unterstrichen wirdonHover
, auch wenn es sich nicht um Links handelt: Die Folie als Ganzes ist ein Link. IE kennt den Unterschied nicht. Ich habe auch einige aktuelle Links in meiner Fußzeile, die die Unterstreichung und Farbänderung benötigenonHover
. Ich dachte, ich müsste Stile in die Fußzeilen-Tags einfügen, um die Farbe zu ändern, aber der Rat von oben legt nahe, dass dies unmöglich ist.Lösung: Ich habe den Fußzeilenlinks zwei verschiedene Klassen gegeben und mein Problem wurde gelöst. Ich konnte die
onHover
Farbänderung in einer Klasse haben, die FolienonHover
haben keine Farbänderung / Unterstreichung und konnte immer noch die externen HREFS in der Fußzeile und die Folien gleichzeitig haben!quelle
Ich stimme dem Schatten zu . Sie können das Ereignis
onmouseover
und verwendenonmouseout
, um das CSS zu ändern via JavaScript.Und sagen Sie nicht, dass JavaScript aktiviert sein muss. Es ist nur ein Stilproblem, daher spielt es keine Rolle, ob es einige Besucher ohne JavaScript gibt;) Obwohl der größte Teil von Web 2.0 mit JavaScript funktioniert. Siehe Facebook zum Beispiel (viel JavaScript) oder Myspace .
quelle
Dies ist ziemlich spät im Spiel, aber wann würden Sie JavaScript in einer HTML-E-Mail verwenden? In der Firma, für die ich derzeit arbeite (Reime mit Abodee), verwenden wir beispielsweise den kleinsten gemeinsamen Nenner für die meisten E-Mail-Marketingkampagnen - und JavaScript wird einfach nicht verwendet. Je. Es sei denn, Sie beziehen sich auf eine Art Vorverarbeitung.
Wie in einem verwandten Beitrag erwähnt: "Lotus Notes, Mozilla Thunderbird, Outlook Express und Windows Live Mail scheinen alle eine Art JavaScript-Ausführung zu unterstützen. Sonst nichts."
Link zu dem Artikel, aus dem dies entnommen wurde: [ http://en.wikipedia.org/wiki/Comparison_of_e-mail_clients]
Wie würde sich das Schweben auf mobile Geräte übertragen lassen? Deshalb gefällt mir die Antwort von oben:
Long answer: you shouldn't.
Wenn jemand mehr Einblicke in dieses Thema hat, kann er mich gerne korrigieren. Vielen Dank.
quelle
Das ist also nicht ganz das, wonach der Benutzer gesucht hat, aber ich habe diese Frage auf der Suche nach einer Antwort gefunden und mir etwas Ähnliches ausgedacht. Ich hatte eine Reihe sich wiederholender Elemente, die eine neue Farbe / einen neuen Hover für eine Registerkarte in ihnen benötigten. Ich verwende Lenker, was der Schlüssel zu meiner Lösung ist, aber möglicherweise funktionieren auch andere Vorlagensprachen.
Ich habe einige Farben definiert und sie für jedes Element an die Lenkervorlage übergeben. Oben in der Vorlage habe ich ein Stil-Tag definiert und meine benutzerdefinierte Klasse und Schwebefarbe eingefügt.
Dann habe ich den Stil in der Vorlage verwendet:
Möglicherweise benötigen Sie das nicht
!important
quelle
Sie können einen Code in verschiedenen Typen schreiben
zuerst kann ich das schreiben
html
CSS
Sie können einen anderen Weg versuchen
html
CSS
Sie können auch versuchen, in jquery zu schweben
Java-Skript
html
In diesem Code haben Sie eine Drei-Funktion in jquery. Zuerst bereiten Sie eine Funktion vor, die die Grundfunktion von jquery darstellt. Zweitens haben Sie eine Hover-Funktion in dieser Funktion, wenn Sie mit dem Mauszeiger auf den Text fahren, wird die Farbe geändert und dann die nächste Wenn Sie den Zeiger auf den Text loslassen, hat er die andere Farbe und dies ist die dritte Funktion
quelle
Mit Hacss ist das jetzt möglich .
quelle
Ich musste Javascript vermeiden, konnte aber mit serverseitigem Code arbeiten.
Also habe ich eine ID generiert, einen Stilblock erstellt und die Verknüpfung mit dieser ID generiert. Ja, es ist gültiges HTML.
quelle
Sie können die Pseudoklasse
a:hover
nur in externen Stylesheets verwenden. Daher empfehle ich die Verwendung eines externen Stylesheets. Der Code lautet:quelle
style
Tag.Sie können eine ID erstellen, indem Sie eine Klasse hinzufügen, jedoch niemals inline.
2 Zeilen, aber Sie können die Klasse überall wiederverwenden.
quelle
Mein Problem war, dass ich eine Website erstelle, die viele Bildsymbole verwendet, die beim Hover durch ein anderes Bild ausgetauscht werden müssen (z. B. werden blau-ish-Bilder beim Hover rot-ish). Ich habe die folgende Lösung dafür hergestellt:
Ich stellte einen Container mit den beiden Bildern vor. Der erste ist sichtbar und der andere ist ausgeblendet (Anzeige: keine). Wenn Sie den Mauszeiger über den Container bewegen, wird der erste ausgeblendet (Anzeige: keine) und der zweite wird erneut angezeigt (Anzeige: Block).
quelle