В конце каждого типа сообщения в моей теме Tumblr у меня есть этот код:
<p class="permalink">
<a href="{Permalink}">{NoteCountWithLabel}</a>
{block:HasTags} # filed under:
{block:Tags}
<a href="{TagURL}">{Tag}</a>
{/block:Tags}
{/block:HasTags}
</p>
(Я знаю, что
это не совсем групповой акт. Это был мой четырехсекундный обходной путь, и это не цель этого вопроса, так что терпите меня!)
На пост с несколькими тегами, который дает:
Если я просто добавлю запятую после {Tag}
создания <a href="{TagURL}">{Tag},</a>
, я получу:
Последний тег имеет постороннюю запятую, и посты с одним тегом также показывают дополнительную запятую при этом методе.
Как добавить правильное количество запятых?
Обновление :
Ответ Джереми ниже сделал то, что я хотел. Но, пытаясь придумать, чтобы быть «совместимым со стандартами» (хотя я не знаю, почему кто-то, использующий IE8, прочитал бы мой tumblr), я попытался реализовать предложение w3d. Теперь CSS выглядит так:
a.tag:before {
content:", ";
}
a.tag:first-child:before {
content:"";
}
Результат сейчас:
( Примечание: разрыв строки не связан - я специально добавил это. )
Так. Что пошло не так?
источник
,
вероятно, является пробелом, который появляется после</a>
в вашей разметке / теме. Вы можете попробовать удалить это. Первая запятая все еще присутствует? Попробуйте изменить,content:"";
чтобыcontent:"%";
посмотреть, если%
показывает? (Хотя из вашего комментария к моему ответу я вижу, что это может не иметь никакого эффекта ?!)Ответы:
У меня есть другая идея.
Это добавит диапазон с классом «tagtail» после каждого тега.
Затем добавьте этот CSS:
Это выберет каждый якорь тега, который идет после диапазона тега (то есть каждый, кроме первого). Таким образом, мы избавляемся от необходимости использовать селекторы first-child или last-child .
ОБНОВИТЬ:
Если вы хотите убедиться, что запятые оформлены отдельно от якоря, я думаю, вы могли бы также сделать:
а затем стиль как:
Тем не менее, это может потребовать доработки, потому что браузеры отличаются переопределением правил.
источник
{block:Tags}<span class="taghead">, </span><a class="tag" href="{TagURL}">{Tag}</a>{/block:Tags}
а затем стиль это как:span.taghead { display:none; } a.tag + span.taghead { display:inline; }
. Тем не менее, это может потребовать доработки, потому что браузеры отличаются переопределением правил.tagtail
Метод рендеринга пробел перед запятой, но это немногоtaghead
немного делает меня очень счастливым сейчас. Вы можете добавить свой комментарий обратно в ответ?Попробуйте немного хитрости CSS (чтобы заставить его работать в IE 8, вам нужно указать <! DOCTYPE> в верхней части документа).
Затем добавьте следующий CSS:
Он использует псевдо-селектор : после и свойство малоиспользуемого содержимого, чтобы добавить запятую после факта. Второе правило переопределяет свойство содержимого для последнего тега в последовательности.
источник
last-child
псевдокласс даже в режиме соответствия стандартам (т. Е. С DOCTYPE). Вам нужно будет использоватьfirst-child:before
для поддержки IE8 (и IE7).Исходя из ответа @ Джереми ... Для поддержки IE8 (и IE7) вам нужно будет использовать
first-child
псевдокласс, а неlast-child
. IE8 не поддерживаетlast-child
даже в совместимом со стандартами режиме (т. Е. С DOCTYPE).РЕДАКТИРОВАТЬ: Тем не менее, небольшая оговорка с этим подходом заключается в том, что вам, вероятно, придется удалить любые дополнительные пробелы, которые появляются после закрытия
</a>
в вашей разметке / теме.РЕДАКТИРОВАТЬ: Скриншот вывода скрипта в Safari 5.0 на OS X:
источник
a.tag:before { content:", ";}
иa.tag:first-child:before { content:"# tagged: ";}
, но это приводит к ряду тегов, которые просто говорят, Mareen Fischinger , New York City , Times Square
. Гектометр Этот комментарий сбивает с толку. Я обновлю вопрос.Основываясь на
:before
предложении в предыдущих ответах. Если вы работаете со списком тегов, вполне возможно, что вы разместите их в списке. Если вы используете каждыйli
тег с тегом,:before
а не с тегом внутриli
тега - каждый тег будет первым потомкомli
тега, однако только одинli
тег будет первым потомком тегаul
orol
! Я использую список описания, так как я хотел добавить теги вd
тег t, так что это относится и кd
тегу d.Однако использование списка описания имеет дополнительную сложность. Первый
dd
тег никогда не является первым дочерним элементомdl
тега, этоdt
тег, поэтому вам нужно использовать егоnth-child(2)
для таргетинга. Недостатком использованияnth-child(2)
является то, что опять-таки он не совместим с IE 8, поэтому эта проблема снова возникает.Вот мое решение.
Также из предыдущих ответов они предполагают, что использование пробела в content (
content: ", ";
) работает. Это работает? Я не могу заставить его работать, но "\ 00a0" будет.источник