Как расставить запятые между тегами на CSS?
Иногда проще что-то сделать на чистом CSS, чем на серверной стороне. Например, расставить запятые между тегами. Попробуем разделить подчеркнутые теги-ссылки на чистом CSS.
Вот ссылка:
a { color:blue; text-decoration: underline; }
Добавим after-правило (это очевидно):
a:after { content: ","; padding-right: 5px; }
Теперь есть две проблемы. Во-первых, запятые у нас идут после всех ссылок, включая последнюю. А там хочется иметь ничего. Эта проблема решается легко:
p>a:last-of-type:after {content: none;}
Вместо p можно использовать любой селектор, определяющий расположение группы тегов.
Во-вторых, так как у ссылки text-decoration: underline;
, то и запятые получатся подчеркнутыми, что не очень красиво. Можно нагуглить вот такое решение этой проблемы:
a { color:blue; text-decoration: underline; } a:after { content: ","; text-decoration: none; display: inline-block; // работают только в паре padding-right: 5px; }
... и оно почти хорошо, но из-за display: inline-block;
теперь запятые приобретают неприятное желание при первой возможности оторваться от предшествующего слова и перепрыгнуть на следующую строчку.
Итак, не буду томить, решение заключается в замене text-decoration на border. Вот окончательный код:
a { color:blue; border-bottom: 1px solid blue; } a:after { content: ","; padding-right: 5px; border-bottom: 1px solid #FFF; } p > a:last-of-type:after {content: none;}
Недостаток решения в том, что мы должны знать цвет фона всей этой конструкции (#FFF;), и этот фон должен быть сплошным.
Причина этих ограничений в том, что элемент after идет не после тега (как все время хочется думать), а после контента тега. Таким образом наш border уже применен ко всей ссылке вместе с запятой, а предложенным хаком мы просто закрашиваем его сверху другим цветом.