додати атрибут заголовка з css


78

Як додати title = 'обов'язковий' з css до наступного

     <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;
}

5
Для всіх, хто читатиме це в майбутньому, ви можете створювати власні підказки за допомогою CSS, використовуючи псевдоелементи, ви можете вказати текстове значення в користувацькому data-*атрибуті або contentвластивості. Дивіться цю відповідь - stackoverflow.com/questions/1055581/…
Джош Крозьє

Для тих, хто хоче використовувати для цього вбудовані підказки браузера, stackoverflow.com/a/46889216/1709903
Слава,

Відповіді:


65

Ви не можете. CSS - це мова презентацій. Він не призначений для додавання вмісту (за винятком дуже тривіального з :beforeі :after).


74

Ну, хоча насправді неможливо змінити атрибут заголовка, можна повністю показати підказку з css. Ви можете перевірити робочу версію за адресою http://jsfiddle.net/HzH3Z/5/ .

Що ви можете зробити, це стилізувати ярлик: після селектора і надати йому display: none та встановити його вміст із css. Потім ви можете змінити атрибут display на display: block on label: hover: after, і він відобразиться. Подобається це:

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;
}

8
+1, ви навіть можете використовувати атрибути даних як джерело підказки. Приклад скрипки . (Таким чином, ваш вміст залишається в HTML, а ваш CSS знову використовується лише для того, щоб повідомити браузеру, як його показати).
Каміло Мартін


4
Це має бути прийнятою відповіддю. Питання було, по суті, як я можу додати підказку за допомогою css? Це відповідає йому найкраще.
Earl3s

3
Я б уникав подібного, коли інформація важлива, оскільки в іншому випадку вона буде недоступна для читачів екрану та користувачів a11y.
stephenmurdoch

Я згоден @stephenmurdoch, що, безумовно, викликає занепокоєння.
Dolf Andringa,

19

Квентін правильний, цього не можна зробити за допомогою CSS. Якщо ви хочете додати titleатрибут, ви можете зробити це за допомогою JavaScript. Ось приклад використання jQuery:

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

Я спробував $ (". Обов'язковий"). Attr ('заголовок', 'обов'язковий'); якимось чином назва не відображається
Радєєв

Так, але це було зроблено на моїй базовій сторінці, де може бути включена й інша сторінка, я не знаю, чому вона не працює
Раджеєв,

1
Ви можете опублікувати посилання? важко сказати, не бачачи цього. спробуйте включити вищезазначене $(document).ready(function() {та, });щоб jquery чекав, поки документ (і, отже, цільовий елемент) завантажиться перед запуском.
ньютрон

3

Можна з jQuery:

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

3

Як запропонували Квентін та інші, це не можна повністю зробити з css (частково це зробити з атрибутом вмісту css). Натомість для досягнення цього слід використовувати javascript / jQuery,

JS:

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

або за допомогою jQuery:

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


3

Це можна імітувати за допомогою HTML і CSS

Якщо ви дійсно хочете, щоб працювали підказки, що застосовуються динамічно, це (не настільки зручне для продуктивності та архітектури) рішення може дозволити вам використовувати підказки, відтворені браузером, не вдаючись до JS. Я можу уявити ситуації, коли це було б краще, ніж JS.

Якщо у вас є фіксована підмножина значень атрибутів заголовка, ви можете генерувати додаткові елементи на стороні сервера і дозволяти браузеру читати заголовок з іншого елемента, розташованого над вихідним, за допомогою CSS.

Приклад:

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>

Примітка: Це не рекомендується для великомасштабних програм через непотрібний HTML, можливі повторення вмісту та той факт, що ваші додаткові елементи для підказки викрадуть події миші (виділення тексту тощо)



0

З одного боку, заголовок корисний як підказка під час наведення миші на елемент. Це можна вирішити за допомогою CSS-> element :: after. Але це набагато важливіше як допоміжний засіб для людей із вадами зору (веб-сайт без інвалідів). І для цього він ПОВИНЕН бути включений як атрибут у елемент HTML. Все інше - мотлох, дрянь, ідіотські речі ...!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.