CSS list properties control how markers appear on ul and ol elements—and how to strip default bullets and indentation cleanly when turning a list into a horizontal navigation bar.
list-style-type: Selects bullet shapes (disc, circle, square, none) or numbering schemes (decimal, lower-alpha, upper-roman).list-style-position: outside (default) aligns wrapped lines neatly under the first letter of text, whereas inside pulls the bullet into the text block.::marker: Modern CSS pseudo-element that styles bullet or number color and font weight directly without replacing the list with fake spans..feature-list {
list-style-type: disc;
list-style-position: outside;
padding-left: 20px;
}
.feature-list li {
margin-bottom: 8px;
}
.feature-list li::marker {
color: #2563eb;
font-weight: 700;
}
.nav-list {
list-style: none;
margin: 0;
padding: 0;
display: flex;
gap: 16px;
}
When removing bullets with list-style: none; for a navigation menu, also zero out default browser margin: 0; padding: 0; on the ul. Note that Safari VoiceOver can stop announcing a ul as a list when list-style: none; is set unless role="list" is added if list announcement matters.
list-style-position: inside on multi-line bullets: Wrapped lines collide under the bullet instead of aligning smoothly; keep outside for readable articles.list-style on li when targeting the whole list: Set list-style: none; on the parent ul or ol unless overriding one specific item.li items: Adding margin-bottom: 8px or gap makes long checklists far easier to scan.Target the li::marker pseudo-element directly (li::marker { color: #2563eb; })—supported cleanly across all modern browsers.
Set list-style-type: "✓ "; or style li::marker { content: "→ "; } directly in modern CSS.
Sign in to track your learning journey, earn industry-recognized certificates, and join our elite developer community.
Quick Access With
Experiment with the code from this lesson in our interactive playground.
You've completed this section! Take a quick 5-question quiz to check your understanding.