Der Standard-Listentyp mit niedrigerem Alpha für die geordnete Liste verwendet einen Punkt '.'. Gibt es eine Möglichkeit, stattdessen eine rechte Klammer wie a) ... b) ..etc zu verwenden?
Der Standard-Listentyp mit niedrigerem Alpha für die geordnete Liste verwendet einen Punkt '.'. Gibt es eine Möglichkeit, stattdessen eine rechte Klammer wie a) ... b) ..etc zu verwenden?
Antworten:
Hier ist eine gute Lösung. (Ehrlich gesagt habe ich mich selbst überrascht.) CSS hat so genannte Zähler , in denen Sie beispielsweise automatische Kapitelnummern für jede Überschrift festlegen können. Ein bisschen Modifikation gibt Ihnen das Folgende; Sie müssen die Polsterung usw. selbst aussortieren.
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>
Works in all modern browsers and IE9+ (and possibly IE8 but may be buggy).
Update: I added child selector to prevent nested lists picking up the parent style. trejder also beings up a good point in the comments that the list item alignment is also messed up. An article on 456bereastreet has a good solution which involves absolutely positioning the counter.
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>
Here is a jsFiddle showing the result, including nested lists.
, lower-alpha. So the content value would be counter(list) ") ";
building off of DisgruntledGoat's answer, I expanded it to support sub lists & styles as I needed. Sharing it here in case it helps someone.
https://jsfiddle.net/0a8992b9/ outputs:
(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
text-indent to the li level
Adding this to the CSS gave some interesting results. It was close, but no cigar.
li:before {
display: inline-block;
width: 1em;
position: relative;
left: -0.5em;
content: ')'
}
----- Edited to include solution from Iazel, in the comments -----
I've perfected your solution:
li {
position: relative;
}
li:before {
display: inline-block;
width: 7px;
position: absolute;
left: -12px;
content: ')';
background-color: #FFF;
text-align: center;
}
The background and position: absolute did the trick!
li { position: relative; } li:before { display: inline-block; width: 7px; position: absolute; left: -12px; content: ')'; background-color: #FFF; text-align: center; } The background and position: absolute did the trick! :)
This works for me in IE7, FF3.6, Opera 9.64 and 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>
this is inline because it is coded for an email, but the main point is that the span acts as a content block and pulls the paren into negative left territory so it lines up with the list numbers. the two margins are to compensate for IE7 and FF differences
hope this helps.
display:inline-block; ?