Beispiel:
<a href="example.com" title="My site"> Link </a>
Wie ändere ich die Darstellung des Attributs "title" im Browser?. Standardmäßig hat es nur einen gelben Hintergrund und eine kleine Schrift. Ich möchte es größer machen und die Hintergrundfarbe ändern.
Gibt es eine CSS-Möglichkeit, das title-Attribut zu formatieren?
Antworten:
Hier ist ein Beispiel dafür:
quelle
Es scheint tatsächlich eine reine CSS-Lösung zu geben, die nur den CSS-
attr
Ausdruck, den generierten Inhalt und die Attributselektoren benötigt (was darauf hindeutet, dass sie bereits im IE8 funktioniert):Quelle: https://jsfiddle.net/z42r2vv0/2/
Update mit Eingabe von @ViROscar: Bitte beachten Sie, dass kein bestimmtes Attribut verwendet werden muss, obwohl ich im obigen Beispiel das Attribut "title" verwendet habe. Eigentlich würde ich empfehlen, das Attribut "alt" zu verwenden, da die Möglichkeit besteht, dass der Inhalt für Benutzer zugänglich ist, die nicht von CSS profitieren können.
Erneut aktualisieren Ich ändere den Code nicht, da das Attribut "title" im Grunde genommen das Attribut "tooltip" bedeutet und es wahrscheinlich keine gute Idee ist, wichtigen Text in einem Feld zu verbergen, auf das nur mit dem Mauszeiger zugegriffen werden kann, aber wenn Sie es sind Wenn Sie daran interessiert sind, diesen Text zugänglich zu machen, scheint das Attribut "aria-label" der beste Ort dafür zu sein: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-label_attribute
quelle
stacking context
. Alle Elemente mitposition
anderen als demstatic
Erstellen eines neuen Stapelkontexts und reinen CSS-Tooltips sind außerhalb nicht sichtbar und können auch nicht über diesen Stapelkontext hinausgehen. Wenn Sie also ein enges Element mit Position habenrelative
, ist Ihr CSS-Tooltip nicht sichtbar. Die einzige Lösung besteht darin, einen Tooltip an den Top- Stacking-Kontext anzuhängen (z. B.<body>
), der JavaScript benötigt.Sie können kein tatsächliches
title
Attribut formatierenWie der Text im
title
Attribut angezeigt wird, wird vom Browser festgelegt und variiert von Browser zu Browser. Es ist für eine Webseite nicht möglich, einen Stil auf den Tooltip anzuwenden, den der Browser basierend auf demtitle
Attribut anzeigt .Sie können jedoch mit anderen Attributen etwas sehr Ähnliches erstellen.
Sie können einen pseudo-Tooltip mit CSS machen und ein benutzerdefiniertes Attribut (zB
data-title
)Dafür würde ich ein
data-title
Attribut verwenden.data-*
Attribute sind eine Methode zum Speichern von benutzerdefinierten Daten in DOM-Elementen / HTML. Es gibt mehrere Möglichkeiten, auf sie zuzugreifen . Wichtig ist, dass sie per CSS ausgewählt werden können.Da Sie mit CSS Elemente mit
data-title
Attributen auswählen können, können Sie mit CSS erstellen:after
(oder:before
)content
, das den Wert des Attributs enthältattr()
.Beispiele für gestaltete QuickInfos
Größer und mit einer anderen Hintergrundfarbe (auf Anfrage der Frage):
Ausgefeilteres Styling (angepasst aus diesem Blog-Beitrag ):
Bekannte Probleme
Im Gegensatz zu einem echten
title
Tooltip ist nicht unbedingt garantiert, dass der vom obigen CSS erstellte Tooltip auf der Seite sichtbar ist (dh außerhalb des sichtbaren Bereichs). Auf der anderen Seite wird garantiert, dass es sich innerhalb des aktuellen Fensters befindet, was bei einem tatsächlichen Tooltip nicht der Fall ist.Außerdem wird der Pseudo-Tooltip relativ zu dem Element positioniert, das den Pseudo-Tooltip enthält, und nicht relativ zu der Position, an der sich die Maus auf diesem Element befindet. Möglicherweise möchten Sie genau festlegen, wo der Pseudo-Tooltip angezeigt wird. Das Erscheinen an einer bekannten Stelle relativ zum Element kann je nach Situation ein Vorteil oder ein Nachteil sein.
Sie können mit nicht
:before
oder:after
auf Elemente , die keine Container sindDiese Antwort enthält eine gute Erklärung für "Kann ich ein: vor oder: nach dem Pseudoelement in einem Eingabefeld verwenden?"
Effektiv bedeutet dies , dass Sie diese Methode nicht direkt auf Elemente wie verwenden können
<input type="text"/>
,<textarea/>
,<img>
etc. Die einfache Lösung ist es, das Element zu wickeln , die in einem kein Container ist<span>
oder<div>
und hat den pseudo-Tooltip auf den Behälter.Beispiele für die Verwendung eines Pseudo-Tooltips zum
<span>
Umschließen eines Nicht-Container-Elements:Aus dem Code in dem oben verlinkten Blog-Beitrag (den ich hier zum ersten Mal in einer Antwort gesehen habe, die ihn plagiiert hat) erschien es mir offensichtlich, ein
data-*
Attribut anstelle destitle
Attributs zu verwenden. Dies wurde auch in einem Kommentar von snostorm zu dieser (jetzt gelöschten) Antwort vorgeschlagen.quelle
input[type='text']
odertextarea
, aber ich weiß nicht warum. Kann jemand erklären?:before
und:after
Pseudo-Elemente funktionieren nicht bei Elementen, die keine Container sind. Die Antwort enthält eine gute Erklärung: Kann ich ein: vor oder: nach dem Pseudoelement in einem Eingabefeld verwenden? Um diese Methode zu verwenden, ist es wahrscheinlich am einfachsten, die Elemente, die keine Container sind, in ein<span>
oder zu verpacken,<div>
auf das Sie dasdata-title
Attribut setzen. Sie werden sie wahrscheinlich auch geben wollendisplay: inline-block;
, da sie dadurch die gleiche Größe wie das<input>
oder haben<textarea>
. Ich habe diese Antwort mit einem Beispiel aktualisiert.CSS kann das Erscheinungsbild der QuickInfos nicht ändern. Es ist browser- / betriebssystemabhängig. Wenn Sie etwas anderes möchten, müssen Sie Javascript verwenden, um Markups zu generieren, wenn Sie den Mauszeiger über das Element anstelle des Standard-Tooltips bewegen.
quelle
Ich dachte, ich würde meine 20-Zeilen-JavaScript-Lösung hier veröffentlichen. Es ist nicht perfekt, kann aber für einige nützlich sein, je nachdem, was Sie in Ihren Tooltips benötigen.
Wann man es benutzt
TITLE
definierten Attribut (dies schließt Elemente ein, die dem Dokument in Zukunft dynamisch hinzugefügt werden).TITLE
Attribut, semantisch klar).Wann NICHT verwenden
Der Code
Fügen Sie es an einer beliebigen Stelle ein. Es sollte auch dann funktionieren, wenn Sie diesen Code ausführen, bevor das DOM fertig ist (Ihre Tooltips werden erst angezeigt, wenn das DOM fertig ist).
Anpassen
Sie können die
var
Deklarationen in der zweiten Zeile ändern , um sie ein wenig anzupassen.Stil
Sie können Ihre QuickInfos jetzt mit dem folgenden CSS formatieren:
quelle
Ich habe die Antwort hier gefunden: http://www.webdesignerdepot.com/2012/11/how-to-create-a-simple-css3-tooltip/
Mein eigener Code sieht so aus. Ich habe den Attributnamen geändert. Wenn Sie den Titelnamen für das Attribut beibehalten, haben Sie am Ende zwei Popups für denselben Text. Eine weitere Änderung besteht darin, dass mein Text beim Schweben unter dem exponierten Text angezeigt wird.
quelle
Eine jsfiddle für ein benutzerdefiniertes Tooltip-Muster finden Sie hier
Es basiert auf CSS-Positionierungs- und Pseduo-Klassenselektoren
Überprüfen Sie die MDN-Dokumente auf browserübergreifende Unterstützung von Pseudoklassen
quelle
Native Tooltips können nicht gestaltet werden.
Abgesehen davon können Sie eine Bibliothek verwenden, in der schwebende Stilebenen angezeigt werden, wenn das Element bewegt wird (anstelle der nativen QuickInfos, und diese unterdrücken), ohne dass Codeänderungen erforderlich sind.
quelle
title
Attribut hat. Wenn Sie also Ihre eigene Tooltip-Implementierung einrichten, ist es besser, ein anderes Attribut (z. B.data-tip
) anstelle von zu verwendentitle
.Sie können den Standard-Browser-Tooltip nicht formatieren. Sie können jedoch Javascript verwenden, um Ihre eigenen benutzerdefinierten HTML-Tooltips zu erstellen.
quelle
Dies funktioniert auch mit allen Attributen, die Sie hinzufügen möchten, zum Beispiel:
HTML
CSS
Sehen Sie, wie es funktioniert unter: http://jsfiddle.net/vpYWE/1/
quelle
anything
ist kein gültiges HTML-Attribut. Verwenden Sie für benutzerdefinierte Attributedata-
Attribute.