Numery linii w każdej n-tej linii z licznikami CSS?
Musiałem wyciąć pewne linki polecające (kursywą), ponieważ nie mam jeszcze wystarczającej reputacji, ale być może później zastąpię je.
Stworzyłem wtyczkę jQuery, która wyświetla zwiększone numery linii dla poezji i dramatu; Linie wiersza są reprezentowane jako dzieci uporządkowanej listy (ol.verse). Gdy javascript jest włączony, wtyczka generuje numery wierszy co n-ty interwał w oparciu o minimalne wartości list wbudowanych. Te liczby mogą być następnie manipulowane przez DOM. Gdy JS jest wyłączony, numeryczne znaczniki listy co pięć linii rozpoczynają się jako numery linii rezerwowych.
Zastanawiam się teraz, czy możliwe jest obniżenie wiersza podłączonego jako listy obsługiwanej przez liczniki CSS. IE 6-7 otrzymują zwykłe uporządkowane listy z końcowymi okresami liczb, ale lepsze przeglądarki powinny otrzymywać liczniki lub liczby generowane przez wtyczkę. Oto haczyk. Reguły licznika CSS powinny być w stanie uwzględnić sytuacje, w którychnumeracja linii i indeksowanie podrzędne listy wierszy nie są synchronizowane. Widziałem wiele postówliczniki formatowania ipomijanie dzieci, jak równieżwłaściwy i niewłaściwy sposób formatowania wierszy semantycznie itypograficznie (Propozycje W3C polecanie akapitów i znaczników wstępnych jest w najlepszym razie wątpliwe; Znalazłem się jednak pusto w kwestii używania liczników do zwiększania liczby linii, więc dzielę się własnymi wysiłkami w kierunku rozwiązania i mam nadzieję, że możecie pomóc mi w lepszym rozwiązaniu.
Podstawowe zasady eksperymentowałem z ograniczonym sukcesem:
ol.verse { counter-reset: line 0;
ol.verse li {
display: block;
}
ol.verse li:before {
counter-increment: line;
content: counter(line) " ";
}
/* hide lines, or more precisely, children, that are not a multiple of 5 */
ol.verse li:not(:nth-child(5n)):before {
visibility: hidden;
}
Jak widać zto skrzypce, zasady te wyświetlają liczby co 5 linii, tak jak każde dziecko z listy ma być liczone jako linia wiersza i tak DŁUGO, jak przejście zaczyna się od linii 1, 6, 11, 16 itd. (tj. licznik jest resetowany 0 lub wielokrotność 5). Ta ostatnia reguła może być interesująca dla tych, którzy chcą wykonywać zwiększone numery linii dla jakiegoś prostszego zadania (prosty wiersz do wpisu na blogu, np.), Ale te warunki są zbyt restrykcyjne dla naszych potrzeb (repozytorium krytycznych wersji TEI) poezja / dramat online).
Problem 1: Kiedy mam kilka fragmentów lub podziałów jednej lub więcej prac, których kontrresetami nie są wielokrotności przyrostu domyślnego, muszę odwołać się do fragmentów przez id i przesunąć regułę ukrywania dla każdego id'd ol.verse przez resztę. Na przykład fragment rozpoczynający się od linii 43 wymaga dostosowania licznika do 42 i dopasowania parametru nth-child reguły ukrywania do 5n + 3 (od 42% 5 = 3). Nagle liczniki stają się mniej atrakcyjne niż ręczne numerowanie wartości listy. To przynajmniej jest lepsze niż ....
Problem 2: Uzyskanie przez przeglądarkę informacji o policzeniu pewnych linii, takich jak podpozycje lub kierunki scen, które mogą być osadzone w wierszu. Do tych linii próbowałem dołączyć klasę nocount i wyłączyć właściwość wyświetlania lub właściwość widoczności, np.
ol.verse li.nocount:before {
display: none;
}
LUB
ol.verse li.nocount:before {
visibility: hidden;
}
W połączeniu z liniami ukrywania reguł, które nie są wielokrotnościami przyrostu, żadne z nich nie daje pożądanych wyników. Widziećto skrzypce. Pierwszy uruchamia niepoprawną numerację linii po prawej stronie; ten drugi, popraw numerację na niewłaściwych. Czy jest jakiś sposób na napisanie reguł licznika CSS, które działałyby niezależnie od tego, czy zautomatyzowane numery linii odpowiadają poprawnym indeksom potomnym? Być może istnieje jakaś inna kombinacja selektorów CSS, która wykona zadanie?