No final de cada tipo de post no meu tema do Tumblr, eu tenho esse código:
<p class="permalink">
<a href="{Permalink}">{NoteCountWithLabel}</a>
{block:HasTags} # filed under:
{block:Tags}
<a href="{TagURL}">{Tag}</a>
{/block:Tags}
{/block:HasTags}
</p>
(Eu sei que a parte
não é exatamente um ato de classe. Foi a minha solução alternativa de quatro segundos, e não é o objetivo dessa pergunta, então tenha paciência comigo!)
Em uma postagem com várias tags, isso gera:
Se eu adicionar uma vírgula depois {Tag}
, ao fazê-lo <a href="{TagURL}">{Tag},</a>
, recebo:
A última tag possui uma vírgula estranha, e as postagens com apenas uma tag também mostrariam a vírgula extra nesse método.
Como adiciono o número certo de vírgulas?
Atualização :
A resposta de Jeremy abaixo fez o que eu queria. Mas, em uma tentativa de obter uma fantasia "compatível com os padrões" (embora eu não saiba por que alguém usando o IE8 leria meu tumblr), tentei implementar a sugestão do w3d. Então agora o CSS se parece com:
a.tag:before {
content:", ";
}
a.tag:first-child:before {
content:"";
}
O resultado é agora:
( nb: a quebra de linha não está relacionada - eu adicionei isso de propósito. )
Assim. O que deu errado?
fonte
,
provavelmente é o espaço em branco que ocorre após o</a>
na sua marcação / tema. Você pode tentar remover isso. A primeira vírgula ainda está presente? Tente mudarcontent:"";
paracontent:"%";
apenas para ver se%
mostra? (Embora eu ver a partir de seu comentário sobre a minha resposta de que isso pode não ter qualquer efeito ?!)Respostas:
Eu tenho outra ideia.
Isso adicionará uma extensão à classe "tagtail" após cada tag.
Em seguida, adicione este css:
Isso selecionará todas as âncoras de tags que vêm após um período de tagtail (então, todas, exceto a primeira). Dessa forma, evitamos a necessidade de usar os seletores de primeiro filho ou último filho .
ATUALIZAR:
Se você deseja garantir que as vírgulas tenham um estilo separado da âncora, suponho que você também possa:
e depois estilize-o como:
No entanto, isso pode precisar de ajustes porque os navegadores diferem nas regras de substituição.
fonte
{block:Tags}<span class="taghead">, </span><a class="tag" href="{TagURL}">{Tag}</a>{/block:Tags}
e estilo, em seguida, como:span.taghead { display:none; } a.tag + span.taghead { display:inline; }
. No entanto, isso pode precisar de ajustes porque os navegadores diferem nas regras de substituição.tagtail
método estava renderizando um espaço antes da vírgula, mas essetaghead
pouquinho está me deixando muito feliz agora. Considere adicionar seu comentário novamente à resposta?Experimente alguns truques CSS (para que ele funcione no IE 8, você precisa especificar um <! DOCTYPE> na parte superior do documento).
Em seguida, adicione o seguinte CSS:
Ele usa o pseudo-seletor : after e a propriedade de conteúdo pouco usada para adicionar a vírgula após o fato. A segunda regra substitui a propriedade content da última tag na sequência.
fonte
last-child
pseudo-classe, mesmo no modo compatível com os padrões (ou seja, com um DOCTYPE). Você precisará usarfirst-child:before
para oferecer suporte ao IE8 (e IE7).Seguindo a resposta de @ Jeremy ... Para dar suporte ao IE8 (e IE7), você precisará usar a
first-child
pseudo classe, em vez delast-child
. O IE8 não suportalast-child
, mesmo no modo compatível com os padrões (ou seja, com um DOCTYPE).EDIT: No entanto, uma pequena ressalva nessa abordagem é que você provavelmente precisará remover qualquer espaço em branco adicional que aparecer após o fechamento
</a>
da sua marcação / tema.EDIT: Captura de tela da saída do violino no Safari 5.0 no OS X:
fonte
a.tag:before { content:", ";}
ea.tag:first-child:before { content:"# tagged: ";}
, mas resulta em uma linha de tags que apenas diz, Mareen Fischinger , New York City , Times Square
. Hum. Este comentário é confuso. Vou atualizar a pergunta.Aproveitando a
:before
sugestão nas respostas anteriores. Se você estiver trabalhando com uma lista de tags, é bem possível que você as coloque em uma lista. Se você usar cadali
tag com:before
e não a tag dentro dali
tag - cada tag será o primeiro filho dali
tag, no entanto, apenas umali
tag será o primeiro filho da tagul
ouol
! Estou usando uma lista de descrição, pois queria colocar "Tags" nad
tag t, para que o mesmo se aplique àd
tag d.No entanto, a utilização de uma lista de descrição possui uma complexidade adicional. A primeira
dd
tag nunca é o primeiro filho dadl
tag, é adt
tag, então você precisa usánth-child(2)
-lo para segmentá-la. A desvantagem de usarnth-child(2)
é que, novamente, não é compatível com o IE 8, para que esse problema ocorra novamente.Aqui está a minha solução.
Também a partir das respostas anteriores, eles sugerem que o uso de um espaço no conteúdo (
content: ", ";
) funciona. Funciona? Não consigo fazê-lo funcionar, mas "\ 00a0" funcionará.fonte