Add sticky and floating list title snippets
This commit is contained in:
101
snippets/floating-list-titles.md
Normal file
101
snippets/floating-list-titles.md
Normal file
@ -0,0 +1,101 @@
|
||||
---
|
||||
title: List with floating section headings
|
||||
tags: visual,advanced
|
||||
---
|
||||
|
||||
Creates a list with floating headings for each section.
|
||||
|
||||
- Use `overflow-y: auto` to allow the list container to overflow vertically.
|
||||
- Use `display: grid` on the inner container (`dl`) to create a layout with two columns.
|
||||
- Set headings (`dt`) to `grid-column: 1` and content (`dd`) to `grid-column: 2`
|
||||
- Finally, apply `position: sticky` and `top: 0.5rem` to headings to create a floating effect.
|
||||
|
||||
```html
|
||||
<div class="container">
|
||||
<div class="floating-stack">
|
||||
<dl>
|
||||
<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>
|
||||
</div>
|
||||
```
|
||||
|
||||
```css
|
||||
.container {
|
||||
display: grid;
|
||||
place-items: center;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
.floating-stack {
|
||||
background: #455A64;
|
||||
color: #fff;
|
||||
height: 80vh;
|
||||
height: 320px;
|
||||
border-radius: 1rem;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.floating-stack > dl {
|
||||
margin: 0 0 1rem;
|
||||
display: grid;
|
||||
grid-template-columns: 2.5rem 1fr;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.floating-stack dt {
|
||||
position: sticky;
|
||||
top: 0.5rem;
|
||||
left: 0.5rem;
|
||||
font-weight: bold;
|
||||
background: #263238;
|
||||
color: #cfd8dc;
|
||||
height: 2rem;
|
||||
width: 2rem;
|
||||
border-radius: 50%;
|
||||
padding: 0.25rem 1rem;
|
||||
grid-column: 1;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.floating-stack dd {
|
||||
grid-column: 2;
|
||||
margin: 0;
|
||||
padding: 0.75rem;
|
||||
}
|
||||
|
||||
.floating-stack > dl:first-of-type > dd:first-of-type {
|
||||
margin-top: 0.25rem;
|
||||
}
|
||||
```
|
||||
80
snippets/sticky-list-titles.md
Normal file
80
snippets/sticky-list-titles.md
Normal file
@ -0,0 +1,80 @@
|
||||
---
|
||||
title: List with sticky section headings
|
||||
tags: visual,intermediate
|
||||
---
|
||||
|
||||
Creates a list with sticky headings for each section.
|
||||
|
||||
- Use `overflow-y: auto` to allow the list container (`dl`) to overflow vertically.
|
||||
- Set headings (`dt`) `position` to `sticky` and apply `top: 0` to stick to the top of the container.
|
||||
|
||||
```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: 100vh;
|
||||
}
|
||||
|
||||
.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;
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user