Może jedną z odpowiedzi można wybrać jako poprawną? ...
Takit Isy
Odpowiedzi:
165
Oto zgrabne rozwiązanie. (Szczerze mówiąc, sam siebie tym zaskoczyłem.) CSS ma coś, co nazywa się licznikami , gdzie możesz na przykład ustawić automatyczne numery rozdziałów w każdym nagłówku. Trochę modyfikacji daje poniższe; Musisz samodzielnie uporządkować wypełnienie itp.
ol {
counter-reset: list;
}
ol > li {
list-style: none;
}
ol > li:before {
content: counter(list, lower-alpha) ") ";
counter-increment: list;
}
<span>custom list style type (v1):</span><ol><li>Number 1</li><li>Number 2</li><li>Number 3</li><li>Number 4</li><li>Number 5</li><li>Number 6</li></ol>
Działa we wszystkich nowoczesnych przeglądarkach i IE9 + (i prawdopodobnie IE8, ale może zawierać błędy).
Aktualizacja: dodałem selektor potomny, aby zapobiec pobieraniu przez zagnieżdżone listy stylu rodzica. Trejder również podkreśla w komentarzach, że wyrównanie elementów listy również jest pomieszane. Artykuł na 456bereastreet ma dobre rozwiązanie, które polega na całkowicie ustawienie licznika.
ol {
counter-reset: list;
}
ol > li {
list-style: none;
position: relative;
}
ol > li:before {
counter-increment: list;
content: counter(list, lower-alpha) ") ";
position: absolute;
left: -1.4em;
}
<span>custom list style type (v2):</span><ol><li>Number 1</li><li>Number 2</li><li>Number 3</li><li>Number 4</li><li>Number 5</li><li>Number 6</li></ol>
Masz rację, to nie działa w IE6. Ale dobra wiadomość działa w przeglądarce Firefox 3.5.3.
mouviciel
1
Właściwie byłoby lepiej, gdyby: ol {counter-reset: list; } Oryginalny nie działałby, gdy istnieje wiele plików OL.
Feng Jiang
1
FYI, aby uzyskać listę numerowaną zamiast alfabetycznej, po prostu usuń , lower-alpha. Tak więc contentwartość byłabycounter(list) ") ";
Trevan Hetzel
1
Dodam tylko, że nie jest to w 100% prawdziwa numeracja. Możesz zobaczyć różnicę w elementach wieloliniowych. Na zwykłych listach (przy użyciu standardowych punktorów lub liczb) każdy wiersz ma to samo wcięcie, więc punktor lub numer wygląda tak, jakby znajdował się przed blokiem tekstu. W powyższym rozwiązaniu każda następna linia zaczyna się poniżej numeracji i nie jest lekko wstawiona. Co nie zmienia faktu, że to naprawdę fajne rozwiązanie! :>
trejder
Plus: To nie działa całkowicie na listach wielopoziomowych (mój przykład na jsFiddle ).
trejder
11
opierając się na odpowiedzi DisgruntledGoat, rozszerzyłem ją, aby obsługiwać podlistę i style, zgodnie z potrzebami. Udostępnianie go tutaj na wypadek, gdyby to komuś pomogło.
+1 Wykonałeś reset alfa. to mi bardzo pomogło. Wielkie dzięki. Jeśli ktoś nie ma klasy alfa, może użyć ol [style * = "list-style-type: lower-alpha;"]
SK.
czy istnieje sposób, aby to osiągnąć, pozostawiając tekst po prawej stronie litery użytej w miejscu kropki? tzn. bez zawijania tekstu pod literą (np. a)), ale raczej zawijanie z powrotem do punktu, w którym tekst zaczyna się dla określonego punktu, jak wyglądałoby zwykłe <li>
sabliao
@sabliao dodać ujemną wartość text-indentna lipoziomie
Tyler James Young
3
Dodanie tego do CSS dało interesujące rezultaty. Było blisko, ale nie było cygara.
To działa dla mnie w IE7, FF3.6, Opera 9.64 i Chrome 6.0.4:
<olstart="a"type="a"style="font-weight: normal;"><li><spanstyle="inline-block;margin-left: -9px !important; margin-left: -15px;">) </span> content for line number one;</li><li><spanstyle="inline-block;margin-left: -9px !important; margin-left: -15px;">) </span> content for line number two;</li><li><spanstyle="inline-block;margin-left: -9px !important; margin-left: -15px;">) </span> content for line number three;</li><li><spanstyle="inline-block;margin-left: -9px !important; margin-left: -15px;">) </span> content for line number four;</li><li><spanstyle="inline-block;margin-left: -9px !important; margin-left: -15px;">) </span> content for line number five;</li><li><spanstyle="inline-block;margin-left: -9px !important; margin-left: -15px;">) </span> content for line number six;</li></ol>
jest to wbudowane, ponieważ jest zakodowane dla wiadomości e-mail, ale głównym punktem jest to, że zakres działa jak blok treści i wciąga paren na ujemne lewe terytorium, tak aby był zgodny z numerami listy. oba marginesy mają kompensować różnice IE7 i FF
Czy na pewno tak nie powinno być display:inline-block;?
JaredMcAteer
To hack, ponieważ zależy od rozmiaru czcionki, gdy próbujesz umieścić paren obok automatycznie generowanego znaku „a”, „b” itd. Jeśli zamierzałeś zrobić coś takiego, powinieneś użyć list-style-type: none i przejąć renderowanie całego „a)”, zamiast próbować po prostu renderować paren.
Odpowiedzi:
Oto zgrabne rozwiązanie. (Szczerze mówiąc, sam siebie tym zaskoczyłem.) CSS ma coś, co nazywa się licznikami , gdzie możesz na przykład ustawić automatyczne numery rozdziałów w każdym nagłówku. Trochę modyfikacji daje poniższe; Musisz samodzielnie uporządkować wypełnienie itp.
ol { counter-reset: list; } ol > li { list-style: none; } ol > li:before { content: counter(list, lower-alpha) ") "; counter-increment: list; }
<span>custom list style type (v1):</span> <ol> <li>Number 1</li> <li>Number 2</li> <li>Number 3</li> <li>Number 4</li> <li>Number 5</li> <li>Number 6</li> </ol>
Działa we wszystkich nowoczesnych przeglądarkach i IE9 + (i prawdopodobnie IE8, ale może zawierać błędy).
Aktualizacja: dodałem selektor potomny, aby zapobiec pobieraniu przez zagnieżdżone listy stylu rodzica. Trejder również podkreśla w komentarzach, że wyrównanie elementów listy również jest pomieszane. Artykuł na 456bereastreet ma dobre rozwiązanie, które polega na całkowicie ustawienie licznika.
ol { counter-reset: list; } ol > li { list-style: none; position: relative; } ol > li:before { counter-increment: list; content: counter(list, lower-alpha) ") "; position: absolute; left: -1.4em; }
<span>custom list style type (v2):</span> <ol> <li>Number 1</li> <li>Number 2</li> <li>Number 3</li> <li>Number 4</li> <li>Number 5</li> <li>Number 6</li> </ol>
Oto jsFiddle pokazujący wynik, w tym listy zagnieżdżone.
źródło
, lower-alpha
. Tak więccontent
wartość byłabycounter(list) ") ";
opierając się na odpowiedzi DisgruntledGoat, rozszerzyłem ją, aby obsługiwać podlistę i style, zgodnie z potrzebami. Udostępnianie go tutaj na wypadek, gdyby to komuś pomogło.
https://jsfiddle.net/0a8992b9/ wyjścia:
(i)first roman (a)first alpha (b)second alpha (c)third alpha (d)fourth alpha (ii)second roman (iii)third roman (a)first alpha (b)second alpha
źródło
text-indent
nali
poziomieDodanie tego do CSS dało interesujące rezultaty. Było blisko, ale nie było cygara.
li:before { display: inline-block; width: 1em; position: relative; left: -0.5em; content: ')' }
----- Edytowano, aby uwzględnić rozwiązanie z Iazel, w komentarzach -----
Udoskonaliłem Twoje rozwiązanie:
li { position: relative; } li:before { display: inline-block; width: 7px; position: absolute; left: -12px; content: ')'; background-color: #FFF; text-align: center; }
Tło i
position: absolute
załatwił sprawę!źródło
li { position: relative; } li:before { display: inline-block; width: 7px; position: absolute; left: -12px; content: ')'; background-color: #FFF; text-align: center; }
tło i pozycja: absolutnie załatwiło sprawę! :)To działa dla mnie w IE7, FF3.6, Opera 9.64 i Chrome 6.0.4:
<ol start="a" type="a" style="font-weight: normal;"> <li><span style="inline-block;margin-left: -9px !important; margin-left: -15px;">) </span> content for line number one;</li> <li><span style="inline-block;margin-left: -9px !important; margin-left: -15px;">) </span> content for line number two;</li> <li><span style="inline-block;margin-left: -9px !important; margin-left: -15px;">) </span> content for line number three;</li> <li><span style="inline-block;margin-left: -9px !important; margin-left: -15px;">) </span> content for line number four;</li> <li><span style="inline-block;margin-left: -9px !important; margin-left: -15px;">) </span> content for line number five;</li> <li><span style="inline-block;margin-left: -9px !important; margin-left: -15px;">) </span> content for line number six;</li> </ol>
jest to wbudowane, ponieważ jest zakodowane dla wiadomości e-mail, ale głównym punktem jest to, że zakres działa jak blok treści i wciąga paren na ujemne lewe terytorium, tak aby był zgodny z numerami listy. oba marginesy mają kompensować różnice IE7 i FF
mam nadzieję że to pomoże.
źródło
display:inline-block;
?