Titelattribut aus CSS hinzufügen

77

So fügen Sie title = 'obligatorisch' von CSS zu den folgenden hinzu

     <label class='mandatory'>Name</label>

.mandatory
{
background-image:url(/media/img/required.gif);
background-position:top right;
background-repeat:no-repeat;
padding-right:10px;
font-weight:bold;
}
Rajeev
quelle
4
Für alle, die dies in Zukunft lesen, können Sie benutzerdefinierte QuickInfos mit CSS mithilfe von Pseudoelementen erstellen. Sie können entweder den Textwert in einem benutzerdefinierten data-*Attribut oder die contentEigenschaft angeben . Siehe diese Antwort - stackoverflow.com/questions/1055581/…
Josh Crozier
Für alle, die dafür integrierte Tooltips im Browser verwenden möchten
Slava

Antworten:

65

Das kannst du nicht. CSS ist eine Präsentationssprache. Es ist nicht zum Hinzufügen von Inhalten gedacht (mit Ausnahme der sehr trivialen mit :beforeund :after).

QUentin
quelle
72

Nun, obwohl es nicht möglich ist, das title-Attribut zu ändern, ist es möglich, einen Tooltip vollständig aus CSS anzuzeigen. Eine funktionierende Version finden Sie unter http://jsfiddle.net/HzH3Z/5/ .

Was Sie tun können, ist das Label zu formatieren: Nach Auswahl und geben Sie es an: Keine, und legen Sie den Inhalt von CSS fest. Anschließend können Sie das Anzeigeattribut in display: block on label: hover: after ändern und es wird angezeigt. So was:

label:after{
    content: "my tooltip";
    padding: 2px;
    display:none;
    position: relative;
    top: -20px;
    right: -30px;
    width: 150px;
    text-align: center;
    background-color: #fef4c5;
    border: 1px solid #d4b943;
    -moz-border-radius: 2px;
    -webkit-border-radius: 2px;
    -ms-border-radius: 2px;
    border-radius: 2px;
}
label:hover:after{
    display: block;
}
Dolf Andringa
quelle
8
+1 können Sie sogar Datenattribute als Quelle für den Tooltip verwenden. Beispiel Geige . (Auf diese Weise bleibt Ihr Inhalt in HTML, und Ihr CSS wird erneut nur verwendet, um dem Browser mitzuteilen, wie er angezeigt werden soll.)
Camilo Martin
1+ Hier ist eine ähnliche Antwort mit benutzerdefinierten data-*Attributen für Content stackoverflow.com/questions/1055581/… , die auch die Positionierung unterstützt.
Josh Crozier
4
Dies sollte die akzeptierte Antwort sein. Die Frage war im Wesentlichen, wie ich einen Tooltip mit CSS hinzufügen kann. Dies beantwortet es am besten.
Earl3s
3
Ich würde so etwas vermeiden, wenn die Informationen wichtig sind, da sie sonst Bildschirmlesern und Benutzern nicht zur Verfügung stehen.
Stephenmurdoch
Ich stimme @stephenmurdoch zu, das ist definitiv ein Problem.
Dolf Andringa
19

Quentin ist richtig, es kann nicht mit CSS gemacht werden. Wenn Sie ein titleAttribut hinzufügen möchten , können Sie dies mit JavaScript tun. Hier ist ein Beispiel mit jQuery:

$('label').attr('title','mandatory');
Newtron
quelle
Ich habe es versucht $ (". Obligatorisch"). Attr ('title', 'obligatorisch'); Irgendwie taucht der Titel nicht auf
Rajeev
Ja, ich habe es getan, aber dies wurde auf meiner Basisseite gemacht, wo eine andere Seite enthalten sein kann. Ich weiß nicht, warum es nicht funktioniert
Rajeev
1
Kannst du einen Link posten? schwer zu sagen, ohne es zu sehen. Versuchen Sie, das Obige mit $(document).ready(function() {und zu versehen, });damit die Abfrage wartet, bis das Dokument (und damit das Zielelement) geladen wurde, bevor Sie es ausführen.
Newtron
3

Mit jQuery geht das:

$(document).ready(function() {
    $('.mandatory').each(function() {
        $(this).attr('title', $(this).attr('class'));
    });
});
Metaforce
quelle
3

Es ist möglich, dies mit HTML & CSS nachzuahmen

Wenn Sie wirklich wirklich möchten, dass dynamisch angewendete Tooltips funktionieren, können Sie mit dieser (nicht so leistungs- und architekturfreundlichen) Lösung vom Browser gerenderte Tooltips verwenden, ohne auf JS zurückgreifen zu müssen. Ich kann mir Situationen vorstellen, in denen dies besser wäre als JS.

Wenn Sie eine feste Teilmenge der Titelattributwerte haben, können Sie zusätzliche Elemente serverseitig generieren und den Browser mithilfe von CSS den Titel eines anderen Elements über dem ursprünglichen Element lesen lassen.

Beispiel:

div{
  position: relative;
}
div > span{
  display: none;
}

.pick-tooltip-1 > .tooltip-1, .pick-tooltip-2 > .tooltip-2{
  display: block;
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
}
<div class="pick-tooltip-1">
  Hover to see first tooltip
  <span class="tooltip-1" title="Tooltip 1"></span>
  <span class="tooltip-2" title="Tooltip 2"></span>
</div>

<div class="pick-tooltip-2">
  Hover to see second tooltip
  <span class="tooltip-1" title="Tooltip 1"></span>
  <span class="tooltip-2" title="Tooltip 2"></span>
</div>

Hinweis: Es wird nicht für große Anwendungen empfohlen, da unnötiges HTML, mögliche Wiederholungen von Inhalten und die Tatsache, dass Ihre zusätzlichen Elemente für den Tooltip Mausereignisse (Textauswahl usw.) stehlen würden.

Slava
quelle
2

Wie Quentin und andere vorgeschlagen haben, kann dies nicht vollständig mit CSS durchgeführt werden (teilweise mit dem Inhaltsattribut von CSS). Stattdessen sollten Sie Javascript / jQuery verwenden, um dies zu erreichen.

JS:

document.getElementsByClassName("mandatory")[0].title = "mandatory";

oder mit jQuery:

$('.mandatory').attr('title','mandatory');

Glücklich
quelle
1

Während dies mit CSS derzeit nicht möglich ist, gibt es einen Vorschlag zur Aktivierung dieser Funktionalität mit dem Namen Cascading Attribute Sheets .

ᆼ ᆺ ᆼ
quelle
0

Einerseits ist der Titel als Tooltip hilfreich, wenn Sie die Maus über das Element bewegen. Dies könnte mit CSS-> element :: after gelöst werden. Als Hilfsmittel für Sehbehinderte ist es jedoch viel wichtiger (themenfreie Website). Und dafür MUSS es als Attribut in das HTML-Element aufgenommen werden. Alles andere ist Müll, Pfusch, Idioten ...!

Kira-Bianca
quelle