List With Sticky Section Headings

CSSCSSBeginner
Practice Now

This tutorial is from open-source community. Access the source code

Introduction

In this lab, we will explore the world of CSS and its capabilities by creating a list with sticky headings for each section. The aim is to showcase how to use the position: sticky property to create a user-friendly interface that enhances the user experience. Through this lab, you will learn how to use CSS to create visually appealing and functional web pages.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL css(("`CSS`")) -.-> css/BasicConceptsGroup(["`Basic Concepts`"]) css(("`CSS`")) -.-> css/BasicStylingGroup(["`Basic Styling`"]) css(("`CSS`")) -.-> css/CoreLayoutGroup(["`Core Layout`"]) css(("`CSS`")) -.-> css/IntermediateStylingGroup(["`Intermediate Styling`"]) css(("`CSS`")) -.-> css/ResponsiveandAdaptiveDesignGroup(["`Responsive and Adaptive Design`"]) css/BasicConceptsGroup -.-> css/selectors("`Selectors`") css/BasicStylingGroup -.-> css/colors("`Colors`") css/BasicStylingGroup -.-> css/fonts("`Fonts`") css/CoreLayoutGroup -.-> css/margin_and_padding("`Margin and Padding`") css/CoreLayoutGroup -.-> css/borders("`Borders`") css/CoreLayoutGroup -.-> css/width_and_height("`Width and Height`") css/CoreLayoutGroup -.-> css/display_property("`Display Property`") css/CoreLayoutGroup -.-> css/positioning("`Positioning`") css/IntermediateStylingGroup -.-> css/backgrounds("`Backgrounds`") css/ResponsiveandAdaptiveDesignGroup -.-> css/mobile_first_design("`Mobile First Design`") subgraph Lab Skills css/selectors -.-> lab-35243{{"`List With Sticky Section Headings`"}} css/colors -.-> lab-35243{{"`List With Sticky Section Headings`"}} css/fonts -.-> lab-35243{{"`List With Sticky Section Headings`"}} css/margin_and_padding -.-> lab-35243{{"`List With Sticky Section Headings`"}} css/borders -.-> lab-35243{{"`List With Sticky Section Headings`"}} css/width_and_height -.-> lab-35243{{"`List With Sticky Section Headings`"}} css/display_property -.-> lab-35243{{"`List With Sticky Section Headings`"}} css/positioning -.-> lab-35243{{"`List With Sticky Section Headings`"}} css/backgrounds -.-> lab-35243{{"`List With Sticky Section Headings`"}} css/mobile_first_design -.-> lab-35243{{"`List With Sticky Section Headings`"}} end

List With Sticky Section Headings

index.html and style.css have already been provided in the VM.

To create a list with sticky headings for each section, follow these steps:

  1. Allow the list container (<dl>) to overflow vertically by using overflow-y: auto.
  2. Stick the headings (<dt>) to the top of the container by setting their position to sticky and applying top: 0.
  3. Use the following HTML and CSS code:

HTML:

<div class="container">
  <dl class="sticky-stack">
    <dt>A</dt>
    <dd>Algeria</dd>
    <dd>Angola</dd>

    <dt>B</dt>
    <dd>Benin</dd>
    <dd>Botswana</dd>
    <dd>Burkina Faso</dd>
    <dd>Burundi</dd>

    <dt>C</dt>
    <dd>Cabo Verde</dd>
    <dd>Cameroon</dd>
    <dd>Central African Republic</dd>
    <dd>Chad</dd>
    <dd>Comoros</dd>
    <dd>Congo, Democratic Republic of the</dd>
    <dd>Congo, Republic of the</dd>
    <dd>Cote d'Ivoire</dd>

    <dt>D</dt>
    <dd>Djibouti</dd>

    <dt>E</dt>
    <dd>Egypt</dd>
    <dd>Equatorial Guinea</dd>
    <dd>Eritrea</dd>
    <dd>Eswatini (formerly Swaziland)</dd>
    <dd>Ethiopia</dd>
  </dl>
</div>

CSS:

.container {
  display: grid;
  place-items: center;
  min-height: 400px;
}

.sticky-stack {
  background: #37474f;
  color: #fff;
  margin: 0;
  height: 320px;
  border-radius: 1rem;
  overflow-y: auto;
}

.sticky-stack dt {
  position: sticky;
  top: 0;
  font-weight: bold;
  background: #263238;
  color: #cfd8dc;
  padding: 0.25rem 1rem;
}

.sticky-stack dd {
  margin: 0;
  padding: 0.75rem 1rem;
}

.sticky-stack dd + dt {
  margin-top: 1rem;
}

Please click on 'Go Live' in the bottom right corner to run the web service on port 8080. Then, you can refresh the Web 8080 Tab to preview the web page.

Summary

Congratulations! You have completed the List With Sticky Section Headings lab. You can practice more labs in LabEx to improve your skills.

Other CSS Tutorials you may like