Проверка атрибута заголовка CSS, если он не пуст, и добавление содержимого

моя цель: проверить, не пуст ли атрибут title; если это не так, то должно быть добавлено значение этого атрибута title плюс дефис. С другой стороны, если атрибут title пуст, то " - " не следует добавлять вообще.

вот мой текущий код CSS:

div:hover::before{content:attr(title):not(attr(title)="") " - ";}

но это работает не так, как ожидалось.

например:

<div title="My username">some text</div>

при наведении курсора должно отображаться следующее:

мой логин - какой-то текст

но если:

<div title="">some text</div>

или (без названия на div):

<div>some text</div>

тогда дисплей при наведении должен быть:

текст

можно ли это исправить?

1 ответов


вы можете использовать селекторы атрибутов в сочетании с attr() функция для выполнения этого. The attr() функция просто захватывает значение данного атрибута - она не поддерживает никаких условных операторов.

обратите внимание, что я использую [title=""] и :not([title]) для учета как пустых атрибутов заголовка, так и отсутствия атрибута заголовка в целом. Вы можете опустить :not() часть, в том числе [title] в вашем первом правиле вместо этого, но это не работает в Интернете E-извините, я имел в виду, что это не работает в Chrome.

div:hover::before {
    content: attr(title) " - ";
}

div[title=""]:hover::before, div:not([title]):hover::before {
    content: none;
}
<div title="My username">some text</div>
<div title="">some text</div>
<div>some text</div>