Na końcu każdego wpisu w moim motywie Tumblr mam następujący kod:
<p class="permalink">
<a href="{Permalink}">{NoteCountWithLabel}</a>
{block:HasTags} # filed under:
{block:Tags}
<a href="{TagURL}">{Tag}</a>
{/block:Tags}
{/block:HasTags}
</p>
(Wiem, że ten
fragment nie jest dokładnie aktem klasowym. To było moje cztery drugie obejście i nie jest to celem tego pytania, więc proszę o wyrozumiałość!)
W poście z wieloma tagami daje:
Gdybym tylko dodać przecinek po {Tag}
, co <a href="{TagURL}">{Tag},</a>
, mam:
Ostatni znacznik ma obcy przecinek, a posty z tylko jednym znacznikiem pokazywałyby dodatkowy przecinek również w tej metodzie.
Jak dodać odpowiednią liczbę przecinków?
Aktualizacja :
Poniższa odpowiedź Jeremy'ego zrobiła, co chciałem. Ale próbując uzyskać fantazję „zgodności ze standardami” (chociaż nie wiem, dlaczego ktoś używający IE8 czytałby mój tumblr), próbowałem wdrożyć sugestię w3d. Teraz CSS wygląda następująco:
a.tag:before {
content:", ";
}
a.tag:first-child:before {
content:"";
}
Wynik jest teraz:
( nb: podział linii nie ma związku - dodałem to celowo. )
Więc. Co poszło nie tak?
źródło
,
to prawdopodobnie biała spacja występująca po</a>
znaczniku / motywie. Możesz spróbować to usunąć. Pierwszy przecinek jest nadal obecny? Spróbuj zmienić,content:"";
abycontent:"%";
zobaczyć, czy%
programy? (Chociaż z twojego komentarza do mojej odpowiedzi wynika, że może to nie mieć żadnego efektu ?!)Odpowiedzi:
Mam inny pomysł.
To doda przęsło z klasą „tagtail” po każdym znaczniku.
Następnie dodaj ten css:
Spowoduje to wybranie każdej kotwicy tagu, która pojawia się po rozpiętości tagtail (czyli każda oprócz pierwszej). W ten sposób unikamy konieczności używania selektorów pierwszorzędnego lub ostatniego .
AKTUALIZACJA:
Jeśli chcesz się upewnić, że przecinki są stylizowane niezależnie od zakotwiczenia, myślę, że możesz także:
a następnie nadaj jej styl:
Może to jednak wymagać dostosowania, ponieważ przeglądarki różnią się nadrzędnymi regułami.
źródło
{block:Tags}<span class="taghead">, </span><a class="tag" href="{TagURL}">{Tag}</a>{/block:Tags}
a następnie styl to tak:span.taghead { display:none; } a.tag + span.taghead { display:inline; }
. Może to jednak wymagać dostosowania, ponieważ przeglądarki różnią się nadrzędnymi regułami.tagtail
Metodę renderowania spację przed przecinkiem, ale to trochętaghead
nieco czyni mnie bardzo szczęśliwy teraz. Zastanawiasz się nad dodaniem komentarza do odpowiedzi?Wypróbuj sztuczki CSS (aby uruchomić go w IE 8, musisz określić <! DOCTYPE> na górze dokumentu).
Następnie dodaj następujący CSS:
Wykorzystuje pseudo-selektor : after i mało używaną właściwość content, aby dodać przecinek po fakcie. Druga reguła zastępuje właściwość content dla ostatniego znacznika w sekwencji.
źródło
last-child
pseudoklasy nawet w trybie zgodnym ze standardami (tj. Z DOCTYPE). Musisz użyćfirst-child:before
, aby obsługiwać IE8 (i IE7).Kontynuując odpowiedź @ Jeremy'ego ... Aby wesprzeć IE8 (i IE7), będziesz musiał użyć
first-child
pseudoklasylast-child
. IE8 nie obsługujelast-child
, nawet w trybie zgodnym ze standardami (tj. Z DOCTYPE).EDYCJA: Jednak niewielkim zastrzeżeniem związanym z tym podejściem jest to, że prawdopodobnie będziesz musiał usunąć wszelkie dodatkowe białe znaki, które pojawią się po zamknięciu
</a>
znacznika / motywu.EDYCJA: Zrzut ekranu wyjścia skrzypce w Safari 5.0 na OS X:
źródło
a.tag:before { content:", ";}
ia.tag:first-child:before { content:"# tagged: ";}
, ale powoduje to szereg tagów, które właśnie mówią, Mareen Fischinger , New York City , Times Square
. Hm Ten komentarz jest mylący. Zaktualizuję pytanie.Opierając się na
:before
sugestii z poprzednich odpowiedzi. Jeśli pracujesz z listą tagów, całkiem możliwe, że umieścisz je na liście. Jeśli użyjesz każdegoli
tagu:before
zamiast tagu wewnątrzli
tagu - każdy tag będzie pierwszym dzieckiemli
tagu, jednak tylko jedenli
tag będzie pierwszym dzieckiem taguul
lubol
! Korzystam z listy opisów, ponieważ chciałem umieścić znaczniki „d
t ” w znaczniku t, więc to samo dotyczyd
znacznika d.Korzystanie z listy opisów ma jednak dodatkową złożoność. Pierwszy
dd
znacznik nigdy nie jest pierworodnymdl
znacznika, jest todt
znacznik, więc musisz użyć go,nth-child(2)
aby na niego celować. Wadą używanianth-child(2)
jest to, że znowu nie jest zgodny z IE 8, więc problem pojawia się ponownie.Oto moje rozwiązanie.
Również z poprzednich odpowiedzi sugerują, że użycie spacji w content (
content: ", ";
) działa. Czy to działa? Nie mogę go uruchomić, ale „\ 00a0” zadziała.źródło