이미지가 아닌 일반 문자 인 <ul>의 <li> 요소에 대한 사용자 정의 글 머리 기호 기호


125

CSS 속성을 사용하여 사용자 정의 그래픽을 대체 글 머리 기호 문자로 지정할 수 있음을 알고 있습니다.

list-style-image

그런 다음 URL을 제공합니다.

그러나 제 경우에는 '+'기호를 사용하고 싶습니다. 이를 위해 그래픽을 만든 다음 가리킬 필요가 없습니다. 차라리 순서가 지정되지 않은 목록에 더하기 기호를 총알 기호로 사용하도록 지시하고 싶습니다.

이 작업을 수행 할 수 있습니까? 아니면 먼저 그래픽으로 만들어야합니까?

답변:


81

다음은 Taming Lists 에서 인용 한 것입니다 .

목록이 있지만 총알이 필요하지 않거나 총알 대신 다른 문자를 사용하려는 경우가있을 수 있습니다. 다시 말하지만 CSS는 간단한 솔루션을 제공합니다. 목록 스타일을 추가하기 만하면됩니다. none; 규칙에 따라 LI가내어 쓰기로 표시되도록합니다. 규칙은 다음과 같습니다.

ul {
   list-style: none;
   margin-left: 0;
   padding-left: 1em;
   text-indent: -1em;
}

패딩 또는 여백은 0으로 설정하고 다른 하나는 1em으로 설정해야합니다. 선택한 "글 머리 기호"에 따라이 값을 수정해야 할 수 있습니다. 음수 텍스트 들여 쓰기를 사용하면 첫 번째 줄이 해당 양만큼 왼쪽으로 이동하여내어 쓰기가 생성됩니다.

HTML에는 표준 UL이 포함되지만 목록 항목의 내용 앞에있는 글 머리 기호 대신 사용할 문자 또는 HTML 엔티티가 포함됩니다. 이 경우 오른쪽 큰 따옴표 인»를 사용합니다 :».

»항목 1
»항목 2
»항목 3
»항목 4
»항목 5    포장
   을 위해 조금 더 길게 만들겠습니다.


1
귀하의 솔루션은 귀하와 @Tieson T. 모두가 가리키는 : before 의사 선택기와 함께 작동했습니다. 총알 들여 쓰기를 모방하기 위해 <UL>의 다양한 속성이 함께 작동하는 방식을 알려 주셔서 좋았습니다.
idStar 2011 년

9
이것이 제가 그것을 조합하는 방법입니다. ul {font-size : 14px; 줄 높이 : 16px; 목록 스타일 : 없음; 여백-왼쪽 : 0; padding-left : 1em; 텍스트 들여 쓰기 : -1em; } li : before {내용 : "+"; } + 기호 뒤에 공백을 넣어야했지만 적절하게 정렬 된 것 같습니다.
idStar 2011 년

6
불행히도이 방법을 사용하면 일반 총알의 경우가 아닌 총알 기호가 선택 항목에 포함됩니다.
Konrad Höffner 2012-08-02

169

이것은 늦은 대답이지만 방금 이것을 발견했습니다 ... 줄 바꿈하는 줄에 올바른 들여 쓰기를 얻으려면 다음과 같이 시도하십시오.

ul {
  list-style: none;
  margin-left: 0;
  padding-left: 0;
}

li {
  padding-left: 1em;
  text-indent: -1em;
}

li:before {
  content: "+";
  padding-right: 5px;
}

1
저에게는 ch를 측정 단위로 사용하는 것이 더 좋습니다. 특히 text-indent: -2ch+ 기호와 그 뒤의 공백을 고려한 다음 padding-right: 1ch해당 공간을 추가하는 것이 좋습니다. 그래도 큰 +1입니다.
cobaltduck

44

너무 많은 솔루션.
하지만 여전히 개선의 여지가 있다고 생각합니다.

장점 :

  • 매우 간결한 코드
  • 모든 글꼴 크기에서 작동
    (절대 픽셀 값이 포함되지 않음)
  • 행을 완벽하게 정렬
    (첫 번째 줄과 다음 줄 사이에 약간의 이동 없음)

ul {
	position: relative;
	list-style: none;
	margin-left: 0;
	padding-left: 1.2em;
}
ul li:before {
	content: "+";
	position: absolute;
	left: 0;
}
<ul>
  <li>Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec velit neque, auctor sit amet aliquam vel, ullamcorper sit amet ligula. Pellentesque in ipsum id orci porta dapibus.</li>
  <li>Nulla porttitor accumsan tincidunt. Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a. Aliquet quam id dui posuere blandit. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus.</li>
</ul>


2
이것은 최고입니다
user3168511 aug.

1
이것은 다른 세부 사항을 사용자 정의 할 수있는 방법을 지적하기 때문에 내 의견으로는 더 나은 대답입니다. 또한 "Run code snippet"이 첨부되어 있습니다!
Ionuț Ciuta

1
이것이 답이되어야합니다. 깨끗하고 간단합니다
EvilDr

1
이미지를 사용하여 솔루션을 찾고 많은 답변을 시도했지만 이것이 가장 효과적이었습니다! content: url('link-to-my-asset.svg');글 머리 기호와 내용 사이의 이미지 너비와 패딩 을 사용 하고 설정할 수있었습니다 . 감사!
AnnieP

이것은 좋은 대답입니다. 그러나, 나는뿐만 아니라 열 수를 지원할 수있는 솔루션이 필요
Kushagr 아 로라

29

이것이 W3C 솔루션입니다. Firefox 및 Chrome에서 작동합니다.

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

http://dev.w3.org/csswg/css-lists/#marker-content

ul { list-style-type: "🔔 "; }
  <ul><li>item</li></ul>


2
그것이 비록 보인다 파이어 폭스의 최신 버전에서 작동하도록, 그 결과는 매우 추악한 : 사용자 정의 총알은 오른쪽 텍스트 콘텐츠 (여기에 스냅)의 앞에 배치되어 거의 것처럼 li:before {content:"…";}다른 들여 쓰기 및 정렬없이 사용 하였다.
Anton Samsonov

19

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

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

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

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


이것은 내가 찾은 최고의 솔루션입니다.
Charles Roper

또 남용 float? ... 아니.

10

:before의사 선택기를 사용 하여 목록 항목 앞에 콘텐츠를 삽입 할 수 있습니다 . http://www.quirksmode.org/css/beforeafter.html 에서 Quirksmode에서 예제를 찾을 수 있습니다 . 나는 이것을 블록 따옴표 주위에 거대한 따옴표를 삽입하는 데 사용합니다 ...

HTH.


10

내 솔루션은 배치를 사용하여 줄 바꿈을 자동으로 올바르게 정렬합니다. 따라서 li : before에서 padding-right를 설정하는 것에 대해 걱정할 필요가 없습니다.

ul {
  margin-left: 0;
  padding-left: 0;
  list-style-type: none;
}

ul li {
  position: relative;
  margin-left: 1em;
}

ul li:before {
  position: absolute;
  left: -1em;
  content: "+";
}
<ul>
  <li>Item 1 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam</li>
  <li>Item 2 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam</li>
  <li>Item 3 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam</li>
  <li>Item 4</li>
  <li>Item 5</li>
</ul>


8

목록 항목에 <li>영향을주지 않도록 의 스타일을 한정하는 것이 좋습니다 <ol>. 그래서:

ul {
    list-style: none;
    margin-left: 0;
    padding-left: 0;
}

ul li {
    padding-left: 1em;
    text-indent: -1em;
}

ul li:before {
    content: "+";
    padding-right: 5px;
}

8

Font-awesome은 즉시 사용할 수있는 훌륭한 솔루션을 제공합니다.

<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" />

<ul class='fa-ul'>
  <li><i class="fa-li fa fa-plus"></i> Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</li>
  <li><i class="fa-li fa fa-plus"></i> Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</li>
</ul>


4

.list-dash li, .list-bullet li {
    position: relative;
    list-style-type: none; /* disc circle(hollow) square none */
    text-indent: -2em;
}
.list-dash li:before {
    content: '—  '; /* em dash */
}
.list-bullet li:before {
    content: '• '; /*copy and paste a bullet from HTML in browser into CSS (not using ASCII codes) */
}
<ul class="list-dash">
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
    <li>Item 4</li>
</ul>


찬성 투표는 / * 브라우저의 HTML에서 글 머리 기호를 css (
ASCI

2

전각 대시 스타일 :

ul.emdash {
  list-style-type: none;
  list-style-position: inside;
  text-indent: -1.25em;
}
ul.emdash > li:before {
  content: "\2014\00A0"; /* em dash + space*/
}

1

나는 마이너스 마진을 사용하는 것을 선호합니다.

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

li:before {
  content: "*";
  display: inline;
  float: left;
  margin-left: -18px;
}

1

흥미롭게도 나는 게시 된 솔루션 중 어느 것도 충분하지 않다고 생각합니다. 사용 된 캐릭터가 1em 너비이므로 그렇게 할 필요가 없다는 사실에 의존하기 때문입니다 (하지만 John Magnolia의 답변은 예외이지만 수레를 사용할 수 있습니다. 다른 방식으로 복잡하게 만듭니다). 내 시도는 다음과 같습니다.

ul {
  list-style-type: none;
  margin-left: 0;
  padding-left: 30px; /* change 30px to anything */
  text-indent: -30px;
}
ul li:before {
  content: "xy";
  display: inline-block; 
  width: 30px;
  text-indent: 0;
  text-align: center; /* change this for different bullet position */
}
<ul>
  <li>Item 1</li>
  <li>Item 2</li>
  <li>Item 3 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam</li>
  <li>Item 4</li>
  <li>Item 5</li>
</ul>

여기에는 다음과 같은 장점이 있습니다 (다른 솔루션에 비해) :

  1. 예에서 볼 수 있듯이 기호의 너비에 의존 하지 않습니다 . 두 글자를 사용하여 넓은 총알에서도 작동 함을 보여주었습니다. 다른 솔루션에서 이것을 시도하면 텍스트가 잘못 정렬됩니다 (실제로 더 높은 확대 / 축소에서 * 기호로 표시됨).
  2. 총알이 사용하는 공간 을 완전히 제어 할 수 있습니다 . 30px는 무엇이든 바꿀 수 있습니다 (1em 등). 세 곳 모두에서 변경하는 것을 잊지 마십시오.
  3. 총알의 위치 를 완벽하게 제어 할 수 있습니다 . text-align: center;원하는대로 교체하십시오 . 예를 들어 color: red; text-align: right; padding-right: 5px; box-sizing: border-box; , 보더 박스를 가지고 노는 것을 좋아하지 않는다면 너비에서 패딩 (5px)을 빼십시오 (예 :이 예에서는 width : 25px). 많은 옵션이 있습니다.
  4. 수레를 사용하지 않기 때문에 어디에나 담을 수 있습니다.

즐겨.


1

.single-before {
  list-style: "👍";
  list-style-position: outside!important;
}
<ul class="single-before">
  <li> is to manifest perfection already in man.</li>
  <li> is to bring out the best facets of our students personalities.</li>
</ul>


감사합니다. 이것은 매우 깨끗하고 !importantBlogspot에서 내 사용자 정의 CSS가 작동하도록하는 데
필수적인는

-2

이 시도

    ul.a {
        list-style-type: circle;
    }
    
    ul.b {
        list-style-type: square;
    }
    
    ol.c {
        list-style-type: upper-roman;
    }
    
    ol.d {
        list-style-type: lower-alpha;
    }
    
<!DOCTYPE html>
    <html>
    <head>
    
    </head>
    <body>
    
    <p>Example of unordered lists:</p>
    <ul class="a">
      <li>Coffee</li>
      <li>Tea</li>
      <li>Coca Cola</li>
    </ul>
    
    <ul class="b">
      <li>Coffee</li>
      <li>Tea</li>
      <li>Coca Cola</li>
    </ul>
    
    <p>Example of ordered lists:</p>
    <ol class="c">
      <li>Coffee</li>
      <li>Tea</li>
      <li>Coca Cola</li>
    </ol>
    
    <ol class="d">
      <li>Coffee</li>
      <li>Tea</li>
      <li>Coca Cola</li>
    </ol>
    
    </body>
    </html>

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.