오른쪽 괄호가있는 정렬 된 목록 (HTML) 하위 알파?


82

정렬 된 목록의 기본 하위 알파벳 목록 유형은 점 '.'을 사용합니다. a) ... b) ..etc 대신 오른쪽 괄호를 사용하는 방법이 있습니까?


3
? 어쩌면 대답 중 하나는 올바른 ...로 포착 할 수 있습니다
Takit ISY

답변:


162

여기에 깔끔한 솔루션이 있습니다. (솔직히 이것에 놀랐습니다.) CSS에는 카운터 라는 것이 있습니다. 예를 들어 각 제목에 자동 장 번호를 설정할 수 있습니다. 약간의 수정으로 아래와 같은 결과를 얻을 수 있습니다. 패딩 등을 직접 정렬해야합니다.

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>

모든 최신 브라우저 및 IE9 +에서 작동합니다 (및 IE8 일 수 있지만 버그가있을 수 있음).

업데이트 : 중첩 된 목록이 부모 스타일을 선택하지 않도록 자식 선택기를 추가했습니다. trejder는 또한 목록 항목 정렬이 엉망이라는 의견에서 좋은 지적을 받았습니다. 456bereastreet에 대한 기사 에는 절대적으로 카운터 위치를 지정하는 좋은 솔루션이 있습니다.

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>

다음은 중첩 된 목록을 포함하여 결과를 보여주는 jsFiddle 입니다.


1
당신 말이 맞습니다. 이것은 IE6에서 작동하지 않습니다. 그러나 좋은 소식은 Firefox 3.5.3에서 작동합니다.
mouviciel

1
실제로 다음과 같은 경우 더 좋을 것입니다. ol {counter-reset : list; } 원본은 여러 ols가있는 경우 작동하지 않습니다.
Jfly

1
참고로, 알파벳 대신 번호가 매겨진 목록을 얻으려면 , lower-alpha. 따라서 content값은counter(list) ") ";
Trevan Hetzel 2013

1
이것은 100 % 실수가 아니라는 점만 덧붙이겠습니다. 여러 라인 항목의 차이를 확인할 수 있습니다. 에서 일반 목록 텍스트의 블록 앞에 서처럼 글 머리 기호 또는 번호 외모를, 각 라인은 같은 들여 쓰기를 가지고 (표준 글 머리 기호 또는 번호를 사용) 그래서. 위의 솔루션을 사용하면 각 다음 줄은 번호 매기기 아래에서 시작하며 약간 삽입되지 않습니다. 사실을 바꾸지 않습니다. 이것은 정말 깔끔한 솔루션입니다! :>
trejder 2014 년

게다가 : 이것은 다단계 목록에서 완전히 실패합니다 ( jsFiddle의 예 ).
trejder

11

DisgruntledGoat의 답변을 바탕으로 필요에 따라 하위 목록 및 스타일을 지원하도록 확장했습니다. 누군가에게 도움이 될 경우 여기에 공유하십시오.

https://jsfiddle.net/0a8992b9/ 출력 :

(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

1
+1 알파를 재설정했습니다. 많은 도움이되었습니다. 감사합니다. 알파 클래스가없는 사람은 ol [style * = "list-style-type : lower-alpha;"]
SK를 사용할 수 있습니다.

글 머리 기호 대신 사용 된 문자의 오른쪽에 텍스트를 유지하면서 이것을 가질 수있는 방법이 있습니까? 즉, (예)) 문자 아래에 텍스트 감싸기를 가지고 있지 아니라 보일 것이다 정규 <LI>로, 텍스트가 특정 편지 지점을 시작 지점으로 다시 포장
sabliao

@sabliao에 대한 음의 값을 추가 text-indent받는 li수준
타일러 제임스 젊은

3

이것을 CSS에 추가하면 흥미로운 결과가 나왔습니다. 가까웠지만 시가는 없었습니다.

li:before {
    display: inline-block;
    width: 1em; 
    position: relative;
    left: -0.5em; 
    content: ')'
}

----- 코멘트에 Iazel의 솔루션을 포함하도록 편집 됨 -----

귀하의 솔루션을 완성했습니다.

li {
    position: relative;
}
li:before {
    display: inline-block;
    width: 7px;
    position: absolute;
    left: -12px;
    content: ')';
    background-color: #FFF;
    text-align: center;
}

배경과 position: absolute트릭을했다!


나는 당신의 솔루션을 완성했습니다 : li { position: relative; } li:before { display: inline-block; width: 7px; position: absolute; left: -12px; content: ')'; background-color: #FFF; text-align: center; } 배경과 위치 : 절대적으로 트릭을했습니다! :)
Iazel 2013-07-12

-9

이것은 IE7, FF3.6, Opera 9.64 및 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;">) &nbsp;</span> content for line number one;</li>
<li><span style="inline-block;margin-left: -9px !important; margin-left: -15px;">) &nbsp;</span>  content for line number two;</li>
<li><span style="inline-block;margin-left: -9px !important; margin-left: -15px;">) &nbsp;</span>  content for line number three;</li> 
<li><span style="inline-block;margin-left: -9px !important; margin-left: -15px;">) &nbsp;</span>  content for line number four;</li>
<li><span style="inline-block;margin-left: -9px !important; margin-left: -15px;">) &nbsp;</span>  content for line number five;</li>
<li><span style="inline-block;margin-left: -9px !important; margin-left: -15px;">) &nbsp;</span>  content for line number six;</li>
</ol>

이것은 이메일 용으로 코딩 되었기 때문에 인라인이지만, 요점은 스팬이 콘텐츠 블록 역할을하고 괄호를 음수 왼쪽 영역으로 가져 와서 목록 번호와 일치한다는 것입니다. 두 마진은 IE7과 FF 차이를 보상하기위한 것입니다.

도움이 되었기를 바랍니다.


1
그렇게하면 안되는 거 확실해 display:inline-block;?
JaredMcAteer

이것은 자동 생성 된 "a", "b"등의 문자 옆에 괄호를 배치하려고 할 때 글꼴 크기에 따라 달라지기 때문에 해킹입니다. 이와 같은 작업을 수행하려면 괄호 만 렌더링하는 대신 list-style-type : none을 사용하고 전체 "a)"를 직접 렌더링해야합니다.
Charles Kendrick 2013 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.