CSS의 목록 항목에 대한 글 머리 기호로 유니 코드 문자


114

예를 들어, 목록 항목의 글 머리 기호로 star-symbol (★)을 사용해야합니다.

CSS3 모듈 : Lists를 읽었으며 사용자 지정 텍스트를 글 머리 기호로 사용하는 방법을 설명했지만 저에게는 작동하지 않습니다. 제 생각에는 브라우저는 단순히 ::marker의사 요소를 지원하지 않습니다 .

이미지를 사용하지 않고 어떻게 할 수 있습니까?


사용중인 코드를 입력 할 수 있습니까? 그리고 어떤 브라우저에서 이것을 테스트하고 있습니까?
Jonny Haynes

1
stackoverflow.com/questions/3068199/… 일부 유니 코드 글 머리 기호가 있습니다. 위에있는 별표 기호 나 26AB (중간 검은 색 원)는 내 Windows 컴퓨터에 표시되지 않지만 Ubuntu에서는 괜찮습니다.
Pete Kirkham

이 대답 (비슷한 질문에 대한)이 나를 위해 해결했습니다. stackoverflow.com/a/12216973/907575
Piotr Migdal

답변:


77

편집하다

더 이상 이미지를 사용하지 않는 것이 좋습니다. 다음과 같이 유니 코드 문자를 사용하는 방법을 고수합니다.

li:before {
  content: "\2605";
}

오래된 답변

나는 아마도 이미지 배경으로 갈 것입니다. 훨씬 더 효율적입니다. 다목적이며 브라우저 간 친화적입니다.

예를 들면 다음과 같습니다.

<style type="text/css">
  ul {list-style:none;} /* you should use a css reset too... ;) */
  ul li {background:url(images/icon_star.gif) no-repeat 0 5px;}
</style>

<ul>
  <li>List Item 1</li>
  <li>List Item 2</li>
  <li>List Item 3</li>
</ul>

47
어떻게 "훨씬 더 효율적"입니까? 이미지를 가져 오기 위해 추가 HTTP 요청을 보내고 단일 유니 코드 문자를 사용하여 수행 할 수있는 작업에 대한 이미지를로드하면 전체 파일이 증가합니다.
Mathias Bynens 2011

2
맞습니다. 성능을 찾고 있다면 "효율적"이라는 단어는 내가 사용 했어야하는 단어가 아니지만 이미지 배경을 사용하는 것이 텍스트를 사용하는 것보다 훨씬 더 다재다능합니다.
agbb

3
이미지 크기를 조정하는 것은별로 좋지 않지만 모든 크기에서 문자가 완벽하므로 문자가 더 다재다능하다고 말할 수 있습니다. PI 백 워드와 호환되거나 가장 광범위한 브라우저 지원이 단어가 될 것이라고 생각합니다.
JustGoscha

이것은 <li>텍스트가 줄 바꿈 될 때 제대로 작동하지 않습니다 . 글 머리 기호는 들여 쓰기되지 않은 상태로 유지되지 않고 결국 텍스트 단락의 시작처럼 보입니다. 이 답변은이 문제를 해결합니다. stackoverflow.com/a/14301918/1450294
Michael Scheper

105

글 머리 기호로 텍스트 사용

li:before이스케이프 된 Hex HTML 엔티티 (또는 일반 텍스트)와 함께 사용 합니다.


내 예에서는 확인 표시가있는 목록을 글 머리 기호로 생성합니다.

CSS :

ul {
    list-style: none;
    padding: 0px;
}

ul li:before
{
    content: '\2713';
    margin: 0 1em;    /* any design */
}

브라우저 호환성

직접 테스트하지는 않았지만 IE8에서 지원되어야합니다. 적어도 그것이 quirksmodecss-tricks입니다 말하는 것입니다.

조건부 주석을 사용하여 이미지 또는 스크립트와 같은 이전 / 느린 솔루션을 적용 할 수 있습니다. 더 나은 방법은 두 가지를 모두 <noscript>이미지에 사용 하는 것입니다.

HTML :

<!--[if lt IE 8]>
    *SCRIPT SOLUTION*
    <noscript>
        *IMAGE SOLUTION*
    </noscript>
<![endif]-->

배경 이미지 정보

배경 이미지는 정말 다루기 쉽지만 ...

  1. 브라우저 지원 background-size 은 실제로 IE9에서만 제공됩니다.
  2. HTML 텍스트 색상 및 특수 ( 미친 ) 글꼴은 적은 HTTP 요청으로 많은 일을 할 수 있습니다.
  3. 스크립트 솔루션은 HTML 엔티티를 주입하고 동일한 CSS가 작업을 수행하도록 할 수 있습니다.
  4. 좋은 재설정 CSS 코드는 list-style(보다 논리적 선택) 더 쉽게 만들 수 있습니다 .

즐겨.


1
특수 문자를 탈출하는 데 유용 변환 도구 rishida.net/tools/conversion
IIZ

23
li요소 의 내용이 여러 줄에 걸쳐 있는 경우 제대로 작동하지 않습니다 . 줄 바꿈 된 줄은 올바르게 들여 쓰기되지 않습니다.
Richard Ev

5
float: left; margin-left: -12px;에 : 그 관리, @RichardEverett 걸릴 전에
Dudo

1
한 줄로 작업하지만 여러 줄이 줄 바꿈되어 있으면 작동하지 않습니다.
VDarricau

1
한 줄 목록 항목에서만 작동합니다. 여러 줄은 들여 쓰기가 아니라 글 머리 기호 아래에 떨어집니다.
Clarus Dignus

35

다음과 같이 구성 할 수 있습니다.

#modal-select-your-position li {
/* handle multiline */
    overflow: visible;
    padding-left: 17px;
    position: relative;
}

#modal-select-your-position li:before {
/* your own marker in content */
   content: "—";
   left: 0;
   position: absolute;
}

4
캐릭터의 절대 위치를 지정하지 않으면 "Bullet"이 나머지 목록 항목과 인라인으로 표시되기 때문에 이것은 훌륭한 기술입니다. 그것은 매우 총알과 같은 행동입니다. 따라서이 수정으로 일반 글 머리 기호를 사용하는 것처럼 목록 항목 왼쪽에 "글 머리 기호"가 표시됩니다.
General Redneck

감사합니다! 총알이 다시 작동하도록하기 위해 정확히 필요한 것입니다.
tubaguy50035

1
이것은 '\21B3'!를 사용하여 멋진 탐색 트리를 만듭니다 . 감사! 여기의 다른 답변보다 더 잘 작동했습니다. 또한 padding-left내 디자인 1em에서을으로 변경하여 트리 수준이 크기가 변경 될 때 잘 적응합니다.
ndm13

23

이것이 W3C 솔루션입니다. 3012에서 사용할 수 있습니다!

ul { list-style-type: "*"; }
/* Sets the marker to a "star" character */

https://drafts.csswg.org/css-lists/#text-markers


12
3012 년에 Internet Explorer가 마침내 작동한다고 들었습니다!
Mark K Cowan 2014 년

2
Firefox 48에서는 작동하지만 Chromium 51이나 내 휴대 전화 / 태블릿에서는 작동하지 않습니다. On은 li:before솔루션 을 사용해야합니다 .
CoderGuy123

1
공장. 신사 숙녀 여러분, 미래에 오신 것을 환영합니다.
Mikko Ohtamaa

12

이미지는 일부 기기 (Retina 디스플레이가있는 Apple 기기)에서 픽셀 화로 표시되거나 확대 할 때 표시 될 수 있으므로 권장하지 않습니다. 캐릭터를 사용하면 목록이 매번 멋지게 보입니다.

지금까지 찾은 최고의 솔루션입니다. 훌륭하게 작동하며 크로스 브라우저 (IE 8+)입니다.

ul {
    list-style: none;
    padding-left: 1.2em;
    text-indent: -1.2em;
}

li:before {
    content: "►";
    display: block;
    float: left;
    width: 1.2em;
    color: #ff0000;
}

중요한 것은 텍스트가 너무 길어서 한 줄에 맞지 않는 경우 텍스트가 정렬 된 상태로 유지되도록 고정 너비의 부동 블록에 문자를 포함하는 것입니다. 1.2em 은 캐릭터에 대해 원하는 너비이며 필요에 따라 변경하십시오. ul 및 li 요소의 패딩과 여백을 재설정하는 것을 잊지 마십시오.

편집 : ul 및 li : before에서 다른 글꼴을 사용하는 경우 "1.2em"크기가 다를 수 있습니다. 픽셀을 사용하는 것이 더 안전합니다.


아마도 "height : 1px"를 추가하거나 li : before? 이렇게하면 플로트가 다음 <li>까지 확장되지 않아 바람직하지 않은 중첩이 발생하지 않습니다.
Alan De Smet 2014 년

왜 display : block; li : before? 기본적으로 인라인이고 너비를 지정할 수 없기 때문입니까?
Alexander Solonik

6

별표를 추가하려면 유니 코드 문자를 사용하십시오 22C6.

li별과 별 사이에 약간의 간격을두기 위해 공간을 추가했습니다 . 공간 코드는 A0.

li:before {
    content: '\22C6\A0';
}

4

222의 대답에 대한 더 완전한 예 :

ul {
    list-style:none;
    padding: 0 0 0 2em;     /* padding includes space for character and its margin */

    /* IE7 and lower use default */
    *list-style: disc;
    *padding: 0 0 0 1em;
}
ul li:before {
    content: '\25BA';
    font-family: "Courier New", courier, "Lucida Sans Typewriter", "Lucida Typewriter", monospace;
    margin: 0 1em 0 -1em;   /* right margin defines spacing between bullet and text. negative left margin pushes back to the edge of the parent <ul> */

    /* IE7 and lower use default */
    *content: none;
    *margin: 0;
}
ul li {
    text-indent: -1em;      /* negative text indent brings first line back inline with the others */

    /* IE7 and lower use default */
    *text-indent: 0;
}

이전 IE 버전에서 기본 목록 스타일을 복원하기 위해 스타 해킹 속성을 포함했습니다. 원하는 경우이를 꺼내서 조건부 포함에 포함하거나 배경 이미지 기반 솔루션으로 대체 할 수 있습니다. 저의 겸손한 의견은 이러한 방식으로 구현 된 특수 총알 스타일은 의사 선택기를 지원하지 않는 몇몇 브라우저에서 우아하게 저하되어야한다는 것입니다.

Firefox, Chrome, Safari 및 IE8-10에서 테스트되었으며 모두 올바르게 렌더링됩니다.


text-indent: -1em;여러 줄 목록 항목이있는 경우 중요한 속성입니다. 그것 없이는 두 번째 및 후속 줄이 이전 줄이 아닌 총알과 함께 정렬됩니다.
Andris

3
ul {
    list-style-type: none;    
}

ul li:before {
    content:'*'; /* Change this to unicode as needed*/
    width: 1em !important;
    margin-left: -1em;
    display: inline-block;
}

1

이 전체 목록을 살펴 보았고 2020 년까지 부분적으로 정확하고 부분적으로 잘못된 요소가 있습니다.

UTF-8을 사용할 때 들여 쓰기와 오프셋이 가장 큰 문제라는 것을 알았으므로 "직립 삼각형"글 머리 기호를 예제로 사용하여 2020 호환 CSS 솔루션으로 게시합니다.

ul {
    list-style: none;
    text-indent: -2em; // needs to be 1 + ( 2 x margin), and the result 'negative'
}

ul li:before {
    content: "\25B2";
    margin: 0 0.5em; // 0.5 x 2 = 1, + 1 offset to get the bullet back in the right spot
}

em글꼴 크기와 충돌을 피하기 위해 단위로 사용


0

이 코드를 사용해보세요 ...

li:before {
    content: "→ "; /* caractère UTF-8 */
}

-1

이 항목은 오래되었을 수 있지만 빠른 수정 ul {list-style:outside none square;}또는 ul {list-style:outside none disc;}등이 있습니다.

그런 다음 목록 요소에 왼쪽 패딩을 추가하십시오.

ul li{line-height: 1.4;padding-bottom: 6px;}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.