여러분이 사용하고 계신 브라우저는 HTML5를 지원하지 않기 때문에 몇몇 요소가 제대로 보이도록 JScript를 사용하고 있습니다. 하지만 여러분의 브라우저 설정에서 스크립트 기능이 꺼져있으므로, 현재 페이지를 제대로 확인하시려면 스크립트 기능을 켜주셔야 합니다. CSS list-style-type | 목록 스타일링의 모든 것

CSS list-style-type | 목록 스타일링의 모든 것

3주전 작성

CSS list-style-type

list-style-type은 HTML 목록 요소의 불릿이나 숫자 스타일을 정의하는 CSS 속성이다.

웹사이트를 만들다 보면 목록을 어떻게 표현할지 고민하게 된다.
단순한 점 불릿이나 숫자만으로는 디자인적으로 부족하게 느껴질 때가 많다.

list-style-type을 활용하면 목록 앞에 표시되는 마커의 종류를 다양하게 변경할 수 있어 웹사이트의 가독성과 디자인 완성도를 높일 수 있다.

목차

기본 개념

list-style-type은 HTML의 <ul>, <ol>, <li> 요소에 적용되는 CSS 속성으로, 목록 항목 앞에 표시되는 마커의 종류를 지정한다.

기본적으로 <ul>(순서 없는 목록)은 불릿(점)으로, <ol>(순서 있는 목록)은 숫자로 표시되지만, list-style-type을 사용하면 이러한 기본값을 원하는 스타일로 변경할 수 있다.

list-style-type은 CSS의 다른 속성들과 마찬가지로 상속되는 특성을 가지고 있어, 부모 요소에 적용하면 모든 자식 목록 요소에도 적용된다.

이 속성의 기본 문법은 다음과 같다:

selector {
list-style-type: value;
}
사용된 코드 설명
selector
:
스타일을 적용할 HTML 요소를 지정한다. 예를 들어 ul, ol, li 또는 클래스/ID 선택자가 될 수 있다.
list-style-type:
:
CSS 속성 이름이다.
value
:
적용할 목록 스타일 유형 값이다. 예: disc, circle, square, decimal 등

속성값 종류

list-style-type 속성은 다양한 값을 지원하며, 크게 순서 없는 목록용 값과 순서 있는 목록용 값으로 나눌 수 있다.

순서 없는 목록(<ul>)에 주로 사용되는 값
속성값 설명
disc 채워진 원형 불릿(●), <ul>의 기본값
circle 빈 원형 불릿(○)
square 채워진 사각형 불릿(■)
none 마커 없음
순서 있는 목록(<ol>)에 주로 사용되는 값
속성값 설명
decimal 숫자(1, 2, 3…), <ol>의 기본값
decimal-leading-zero 앞에 0이 붙은 숫자(01, 02, 03…)
lower-roman 소문자 로마 숫자(i, ii, iii…)
upper-roman 대문자 로마 숫자(I, II, III…)
lower-alpha 소문자 알파벳(a, b, c…)
upper-alpha 대문자 알파벳(A, B, C…)
lower-greek 소문자 그리스 문자(α, β, γ…)

 

그 외에 국제 숫자 체계를 지원하는 값
속성값 설명
armenian 아르메니아 숫자
georgian 조지아 숫자
hebrew 히브리 숫자
cjk-ideographic 중국, 일본, 한국식 표기법
hiragana, hiragana-iroha 일본 히라가나
katakana, katakana-iroha 일본 가타카나

 

list-style-type 속성은 CSS 카운터와 함께 사용하면 더욱 강력한 목록 스타일링이 가능하다.

브라우저 호환성

list-style-type은 대부분의 현대 브라우저에서 잘 지원되는 속성이지만, 일부 특수한 값들은 브라우저마다 지원 여부가 다를 수 있다.

기본적인 값들(disc, circle, square, decimal, lower-alpha, upper-alpha, lower-roman, upper-roman)은 모든 주요 브라우저에서 지원된다.

그러나 armenian, georgian, hebrew 같은 특수 숫자 체계나 hiragana, katakana 같은 일본어 문자 체계는 일부 브라우저에서만 제대로 표시될 수 있다.

브라우저별 지원 현황은 mdn web docs에서 참고하자.

크로스 브라우저 호환성을 고려한다면, 널리 지원되는 기본 값들을 사용하거나 fallback 스타일fallback 스타일은 CSS에서 특정 스타일이 지원되지 않거나 적용되지 않을 경우, 대안으로 사용되는 스타일을 말한다.을 제공하는 것이 좋다.

list-style-type 활용 예제

다양한 list-style-type 값을 활용한 실제 코드 예제를 살펴보자.

ul.disc {
list-style-type: disc;
}
ul.circle {
list-style-type: circle;
}
ul.square {
list-style-type: square;
}
ol.decimal {
list-style-type: decimal;
}
ol.roman {
list-style-type: upper-roman;
}
ol.alpha {
list-style-type: lower-alpha;
}
/* 중첩 목록 스타일링 */
ul.nested {
list-style-type: disc;
}
ul.nested ul {
list-style-type: circle;
}
ul.nested ul ul {
list-style-type: square;
}
사용된 코드 설명
ul.disc, ul.circle, ul.square
:
각각 disc, circle, square 불릿을 가진 순서 없는 목록을 정의한다.
ol.decimal, ol.roman, ol.alpha
:
각각 decimal(숫자), upper-roman(대문자 로마 숫자), lower-alpha(소문자 알파벳) 마커를 가진 순서 있는 목록을 정의한다.
ul.nested, ul.nested ul, ul.nested ul ul
:
중첩된 목록에서 각 수준별로 다른 불릿 스타일을 적용하는 방법을 보여준다. 첫 번째 수준은 disc, 두 번째 수준은 circle, 세 번째 수준은 square를 사용한다.
예시
<ul class="disc">
<li>Disc 불릿 항목</li>
<li>Disc 불릿 항목</li>
</ul>
<ul class="circle">
<li>Circle 불릿 항목</li>
<li>Circle 불릿 항목</li>
</ul>
<!-- 순서 있는 목록 예제 -->
<ol class="decimal">
<li>숫자 항목</li>
<li>숫자 항목</li>
</ol>
<ol class="roman">
<li>로마 숫자 항목</li>
<li>로마 숫자 항목</li>
</ol>
<!-- 중첩 목록 예제 -->
<ul class="nested">
<li>첫 번째 수준 항목 (disc)
<ul>
<li>두 번째 수준 항목 (circle)
<ul>
<li>세 번째 수준 항목 (square)</li>
</ul>
</li>
</ul>
</li>
</ul>
사용된 코드 설명
<ul class="disc">, <ul class="circle">
:
각각 disc와 circle 불릿을 적용한 순서 없는 목록 예제이다.
<ol class="decimal">, <ol class="roman">
:
각각 decimal(숫자)와 roman(로마 숫자) 마커를 적용한 순서 있는 목록 예제이다.
<ul class="nested">
:
중첩된 목록 구조로, 각 수준별로 다른 불릿 스타일(disc, circle, square)이 적용된 예제이다.

축약 속성

list-style-type은 단독으로 사용할 수도 있지만, list-style 축약 속성의 일부로 사용할 수도 있다.

list-style 축약 속성은 다음 세 가지 속성을 한 번에 설정할 수 있다.

  • list-style-type
    • 마커의 종류 (disc, circle, decimal 등)
  • list-style-position
    • 마커의 위치 (inside 또는 outside)
  • list-style-image
    • 마커로 사용할 이미지
list-style 축약 속성의 기본 문법
selector {
list-style: type position image;
}
사용된 코드 설명
selector
:
스타일을 적용할 HTML 요소를 지정한다.
type
:
마커의 종류(list-style-type)를 지정한다.
position
:
마커의 위치(list-style-position)를 지정한다.
image
:
마커로 사용할 이미지(list-style-image)를 지정한다.
축약 속성 사용
ul {
list-style: square inside url('square.png');
}
ol {
list-style: upper-roman outside;
}
ul.simple {
list-style: circle;
}
사용된 코드 설명
list-style: square inside url(‘square.png’)
:
마커 종류는 square, 위치는 inside, 이미지는 square.png를 사용한다.
list-style: upper-roman outside
:
마커 종류는 upper-roman, 위치는 outside를 사용한다.
list-style: circle
:
마커 종류만 circle로 지정하고, 다른 속성은 기본값을 사용한다.

 

축약 속성을 사용하면 코드를 더 간결하게 작성할 수 있으며, 지정하지 않은 속성은 기본값을 사용한다.

커스텀 마커

list-style-type으로 제공되는 기본 마커 외에도, 이미지나 SVG를 사용해 완전히 커스텀된 마커를 만들 수 있다.

이미지를 마커로 사용하는 방법은 두 가지가 있다.

list-style-image 속성 사용

간단하지만 제어가 제한적인 방법이다.

ul {
list-style-image: url('custom-bullet.png');
}
사용된 코드 설명
list-style-image: url(‘custom-bullet.png’)
:
‘custom-bullet.png’ 이미지를 목록 마커로 사용한다.
::marker 가상 요소 사용

더 많은 제어가 가능한 방법이다.

li::marker {
content: '➤ ';
color: #0066cc;
font-weight: bold;
}
사용된 코드 설명
li::marker
:
목록 항목의 마커를 선택하는 가상 요소이다.
content: ‘➤ ‘
:
마커로 사용할 Unicode 문자를 지정한다.
color: #0066cc; font-weight: bold;
:
마커의 색상과 굵기를 지정한다.
background-image 활용

background-image를 활용한 고급 커스텀 마커 사용 방법이다.


ul {
list-style-type: none;
padding-left: 0;
}
ul li {
padding-left: 25px;
background-image: url('custom-bullet.svg');
background-repeat: no-repeat;
background-position: 0 3px;
background-size: 16px;
}
사용된 코드 설명
list-style-type: none;
:
기본 마커를 제거한다.
padding-left: 0;
:
기본 패딩을 제거한다.
padding-left: 25px;
:
목록 항목에 왼쪽 패딩을 추가하여 마커를 위한 공간을 확보한다.
background-image: url(‘custom-bullet.svg’);
:
배경 이미지로 SVG 파일을 사용한다.
background-repeat, background-position, background-size
:
배경 이미지의 반복, 위치, 크기를 제어한다.
CSS 카운터 사용

CSS 카운터를 활용한 더 복잡한 커스텀 마커도 만들 수 있다.

ol {
list-style-type: none;
counter-reset: item;
}
ol li {
counter-increment: item;
position: relative;
padding-left: 2em;
}
ol li::before {
content: counter(item, decimal-leading-zero);
position: absolute;
left: 0;
color: #0066cc;
font-weight: bold;
}
사용된 코드 설명
counter-reset: item;
:
‘item’이라는 이름의 카운터를 0으로 초기화한다.
counter-increment: item;
:
각 li 요소마다 ‘item’ 카운터를 1씩 증가시킨다.
content: counter(item, decimal-leading-zero);
:
앞에 0이 붙은 숫자 형식으로 카운터 값을 표시한다.
position: absolute; left: 0;
:
카운터를 절대 위치로 배치한다.

 

list-style-type은 기본적인 마커 스타일링을 제공하지만, 위와 같은 방법들을 활용하면 웹사이트의 디자인 아이덴티티에 맞는 완전히 커스텀된 목록 스타일을 만들 수 있다.

현대적인 웹 디자인에서는 기본 list-style-type보다 이러한 커스텀 방식을 더 많이 활용하는 추세다.

list-style-type을 활용하여 목록의 시각적 표현을 다양화하고, 웹사이트의 가독성과 사용자 경험을 향상시켜보자.

목록은 정보를 구조화하는 가장 기본적인 방법 중 하나다. list-style-type을 통해 이 구조에 시각적 계층과 의미를 부여할 수 있다.

Mingg`s Diary
밍구
공부 목적 블로그