Foundation Lists
Foundation provides multiple list styles for creating navigation menus, content lists, and more. This chapter will introduce various uses of Foundation lists.
Basic Menu
Use the .menu class to create a basic menu:
html
<ul class="menu">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>Vertical Menu
Use the .vertical class to create a vertical menu:
html
<ul class="vertical menu">
<li><a href="#">Home</a></li>
<li><a href="#">About Us</a></li>
<li><a href="#">Products</a></li>
<li><a href="#">News</a></li>
<li><a href="#">Contact</a></li>
</ul>Menu Alignment
Center Aligned
html
<ul class="menu align-center">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
</ul>Right Aligned
html
<ul class="menu align-right">
<li><a href="#">Login</a></li>
<li><a href="#">Register</a></li>
</ul>Expanded
html
<ul class="menu expanded">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>Active State
Use .is-active to mark the current item:
html
<ul class="menu">
<li class="is-active"><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>Nested Menu
Create multi-level nested menus:
html
<ul class="vertical menu">
<li>
<a href="#">Products</a>
<ul class="nested vertical menu">
<li><a href="#">Product A</a></li>
<li><a href="#">Product B</a></li>
<li>
<a href="#">Product C</a>
<ul class="nested vertical menu">
<li><a href="#">C-1</a></li>
<li><a href="#">C-2</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Services</a></li>
<li><a href="#">About</a></li>
</ul>Menus with Icons
Combine with icons:
html
<ul class="vertical menu">
<li><a href="#"><i class="fi-home"></i> Home</a></li>
<li><a href="#"><i class="fi-torso"></i> Profile</a></li>
<li><a href="#"><i class="fi-widget"></i> Settings</a></li>
<li><a href="#"><i class="fi-mail"></i> Messages</a></li>
<li><a href="#"><i class="fi-power"></i> Logout</a></li>
</ul>Icon-Only Menu
html
<ul class="menu icons icon-top">
<li><a href="#"><i class="fi-home"></i><span>Home</span></a></li>
<li><a href="#"><i class="fi-torso"></i><span>User</span></a></li>
<li><a href="#"><i class="fi-widget"></i><span>Settings</span></a></li>
</ul>Simple Menu
Use the .simple class to create a clean menu:
html
<ul class="menu simple">
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 2</a></li>
<li><a href="#">Link 3</a></li>
</ul>Menu Text
Use .menu-text to add non-link text:
html
<ul class="menu">
<li class="menu-text">Website Name</li>
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
</ul>Responsive Menu
Change direction based on screen size:
html
<ul class="vertical medium-horizontal menu">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>Drilldown Menu
Multi-level drilldown menu:
html
<ul class="vertical menu" data-drilldown>
<li>
<a href="#">Products</a>
<ul class="vertical menu">
<li>
<a href="#">Electronics</a>
<ul class="vertical menu">
<li><a href="#">Phones</a></li>
<li><a href="#">Computers</a></li>
</ul>
</li>
<li><a href="#">Home Goods</a></li>
</ul>
</li>
<li>
<a href="#">Services</a>
<ul class="vertical menu">
<li><a href="#">Consulting</a></li>
<li><a href="#">Technical Support</a></li>
</ul>
</li>
<li><a href="#">About</a></li>
</ul>Definition Lists
Basic Definition List
html
<dl>
<dt>HTML</dt>
<dd>HyperText Markup Language, used to create web page structure.</dd>
<dt>CSS</dt>
<dd>Cascading Style Sheets, used to style web pages.</dd>
<dt>JavaScript</dt>
<dd>Scripting language used to implement web page interactions.</dd>
</dl>Horizontal Definition List
html
<style>
.horizontal-dl {
display: flex;
flex-wrap: wrap;
}
.horizontal-dl dt {
flex: 0 0 30%;
font-weight: bold;
margin-bottom: 10px;
}
.horizontal-dl dd {
flex: 0 0 70%;
margin-bottom: 10px;
margin-left: 0;
}
</style>
<dl class="horizontal-dl">
<dt>Product Name</dt>
<dd>Foundation Framework</dd>
<dt>Version</dt>
<dd>6.7.5</dd>
<dt>Developer</dt>
<dd>ZURB</dd>
</dl>Unordered List Styles
Bulletless List
html
<ul class="no-bullet">
<li>List item without bullets</li>
<li>List item without bullets</li>
<li>List item without bullets</li>
</ul>Custom Bullets
html
<style>
ul.custom-bullet li::before {
content: "→ ";
color: #1779ba;
}
ul.custom-bullet {
list-style: none;
padding-left: 0;
}
</style>
<ul class="custom-bullet">
<li>Custom bullet list</li>
<li>Using arrows as bullets</li>
<li>More visually appealing</li>
</ul>Lists with Cards
html
<ul class="no-bullet">
<li class="card" style="margin-bottom: 10px;">
<div class="card-section">
<h5>List Item Title 1</h5>
<p>List item description content...</p>
</div>
</li>
<li class="card" style="margin-bottom: 10px;">
<div class="card-section">
<h5>List Item Title 2</h5>
<p>List item description content...</p>
</div>
</li>
</ul>Media List
html
<style>
.media-list {
list-style: none;
padding: 0;
}
.media-list li {
display: flex;
padding: 15px 0;
border-bottom: 1px solid #eee;
}
.media-list .media-image {
flex-shrink: 0;
width: 80px;
height: 80px;
margin-right: 15px;
}
.media-list .media-image img {
width: 100%;
height: 100%;
object-fit: cover;
border-radius: 4px;
}
.media-list .media-body h5 {
margin-bottom: 5px;
}
.media-list .media-body p {
color: #666;
margin: 0;
}
</style>
<ul class="media-list">
<li>
<div class="media-image">
<img src="https://via.placeholder.com/80" alt="Article Image">
</div>
<div class="media-body">
<h5>Article Title</h5>
<p>This is a brief description of the article, introducing its main content...</p>
<small class="text-muted">2024-01-15</small>
</div>
</li>
<li>
<div class="media-image">
<img src="https://via.placeholder.com/80" alt="Article Image">
</div>
<div class="media-body">
<h5>Another Article</h5>
<p>This is another brief article description...</p>
<small class="text-muted">2024-01-14</small>
</div>
</li>
</ul>Complete Example
html
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Foundation Lists Example</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/foundation-sites@6.7.5/dist/css/foundation.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/foundicons/3.0.0/foundation-icons.min.css">
<style>
.demo-section {
margin-bottom: 40px;
padding: 20px;
background: #f8f8f8;
border-radius: 4px;
}
.demo-section h3 {
margin-bottom: 20px;
}
.menu a i { margin-right: 8px; }
.media-list { list-style: none; padding: 0; }
.media-list li {
display: flex;
padding: 15px;
border-bottom: 1px solid #eee;
background: white;
}
.media-list .media-image {
flex-shrink: 0;
width: 80px;
height: 80px;
margin-right: 15px;
}
.media-list .media-image img {
width: 100%;
height: 100%;
object-fit: cover;
border-radius: 4px;
}
.media-list .media-body h5 { margin-bottom: 5px; }
.media-list .media-body p { color: #666; margin: 0; font-size: 14px; }
ul.custom-bullet { list-style: none; padding-left: 0; }
ul.custom-bullet li::before {
content: "✓ ";
color: #3adb76;
font-weight: bold;
}
</style>
</head>
<body>
<div class="grid-container">
<h1>Foundation Lists Showcase</h1>
<div class="demo-section">
<h3>Horizontal Menu</h3>
<ul class="menu">
<li class="is-active"><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Products</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>
</div>
<div class="demo-section">
<h3>Menu Alignment</h3>
<p>Center Aligned:</p>
<ul class="menu align-center">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
</ul>
<p>Right Aligned:</p>
<ul class="menu align-right">
<li><a href="#">Login</a></li>
<li><a href="#">Register</a></li>
</ul>
<p>Expanded:</p>
<ul class="menu expanded">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>
</div>
<div class="demo-section">
<h3>Vertical Menu</h3>
<div class="grid-x grid-margin-x">
<div class="cell medium-4">
<ul class="vertical menu">
<li class="is-active"><a href="#">Home</a></li>
<li><a href="#">About Us</a></li>
<li><a href="#">Products</a></li>
<li><a href="#">News</a></li>
<li><a href="#">Contact</a></li>
</ul>
</div>
<div class="cell medium-4">
<ul class="vertical menu">
<li><a href="#"><i class="fi-home"></i> Home</a></li>
<li><a href="#"><i class="fi-torso"></i> Profile</a></li>
<li><a href="#"><i class="fi-widget"></i> Settings</a></li>
<li><a href="#"><i class="fi-mail"></i> Messages</a></li>
<li><a href="#"><i class="fi-power"></i> Logout</a></li>
</ul>
</div>
</div>
</div>
<div class="demo-section">
<h3>Nested Menu</h3>
<div class="grid-x grid-margin-x">
<div class="cell medium-4">
<ul class="vertical menu">
<li>
<a href="#">Product Categories</a>
<ul class="nested vertical menu">
<li><a href="#">Electronics</a></li>
<li><a href="#">Home Goods</a></li>
<li>
<a href="#">Apparel</a>
<ul class="nested vertical menu">
<li><a href="#">Men</a></li>
<li><a href="#">Women</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">About Us</a></li>
</ul>
</div>
</div>
</div>
<div class="demo-section">
<h3>Simple Menu</h3>
<ul class="menu simple">
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 2</a></li>
<li><a href="#">Link 3</a></li>
<li><a href="#">Link 4</a></li>
</ul>
</div>
<div class="demo-section">
<h3>Menu with Text</h3>
<ul class="menu">
<li class="menu-text">Website Name</li>
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
</ul>
</div>
<div class="demo-section">
<h3>Bulletless List</h3>
<ul class="no-bullet">
<li>Bulletless list item 1</li>
<li>Bulletless list item 2</li>
<li>Bulletless list item 3</li>
</ul>
</div>
<div class="demo-section">
<h3>Custom Bullet List</h3>
<ul class="custom-bullet">
<li>Custom bullet list item 1</li>
<li>Custom bullet list item 2</li>
<li>Custom bullet list item 3</li>
</ul>
</div>
<div class="demo-section">
<h3>Definition List</h3>
<dl>
<dt>HTML</dt>
<dd>HyperText Markup Language, used to create web page structure.</dd>
<dt>CSS</dt>
<dd>Cascading Style Sheets, used to style web pages.</dd>
<dt>JavaScript</dt>
<dd>Scripting language used to implement web page interactions.</dd>
</dl>
</div>
<div class="demo-section">
<h3>Media List</h3>
<ul class="media-list">
<li>
<div class="media-image">
<img src="https://via.placeholder.com/80" alt="Image">
</div>
<div class="media-body">
<h5>Foundation 6 Release</h5>
<p>Foundation 6 brings new features and improvements...</p>
<small class="text-muted">2024-01-15</small>
</div>
</li>
<li>
<div class="media-image">
<img src="https://via.placeholder.com/80" alt="Image">
</div>
<div class="media-body">
<h5>Responsive Design Best Practices</h5>
<p>Learn how to create responsive websites with Foundation...</p>
<small class="text-muted">2024-01-14</small>
</div>
</li>
<li>
<div class="media-image">
<img src="https://via.placeholder.com/80" alt="Image">
</div>
<div class="media-body">
<h5>CSS Grid vs Flexbox</h5>
<p>Understanding the pros and cons of both layout methods...</p>
<small class="text-muted">2024-01-13</small>
</div>
</li>
</ul>
</div>
<div class="demo-section">
<h3>Drilldown Menu</h3>
<div style="max-width: 300px;">
<ul class="vertical menu" data-drilldown style="max-width: 300px;">
<li>
<a href="#">Products</a>
<ul class="vertical menu">
<li>
<a href="#">Electronics</a>
<ul class="vertical menu">
<li><a href="#">Phones</a></li>
<li><a href="#">Computers</a></li>
<li><a href="#">Tablets</a></li>
</ul>
</li>
<li><a href="#">Home Goods</a></li>
<li><a href="#">Apparel</a></li>
</ul>
</li>
<li>
<a href="#">Services</a>
<ul class="vertical menu">
<li><a href="#">Consulting</a></li>
<li><a href="#">Technical Support</a></li>
</ul>
</li>
<li><a href="#">About Us</a></li>
<li><a href="#">Contact Us</a></li>
</ul>
</div>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/foundation-sites@6.7.5/dist/js/foundation.min.js"></script>
<script>$(document).foundation();</script>
</body>
</html>List Best Practices
- Semantic: Use appropriate list elements (ul, ol, dl)
- Accessibility: Ensure navigation menus can be operated via keyboard
- Responsiveness: Consider display effects on different screen sizes
- State Feedback: Use
.is-activeto mark current state - Consistency: Maintain consistent list styles
Summary
In this chapter, we learned:
- Horizontal and vertical menus
- Menu alignment and active states
- Nested menus and Drilldown menus
- Menus with icons
- Unordered lists and definition lists
- Media lists
Next chapter, we will learn Foundation Tabs.
Tip: Lists are one of the most commonly used elements in web pages. Using Foundation's menu classes wisely can help you quickly create beautiful navigation.