Sådan laver du horisontale ordnede lister med CSS

Horisontal numereret liste
Folkebibliotekernes digitale tilbud er ikke altid kendt for den bedste brugeroplevelse. Ofte kræver de lange forklaringer og vejledninger, før man kan komme helt ind til guldet. Det skyldes alt sammen ophavsretlige aftaler og licenser, men det er en helt anden diskussion.

I forbindelse med en vejledning til et af disse tilbud, fik jeg brug for en trin-for-trin liste. For at udnytte pladsen på siden bedst muligt, ville jeg gerne have mulighed for at lave listen horisontalt. Det løste jeg på følgende måde.

Opmærkning

HTML’en er en klassiske ordnede lister.

<ol class="steps">
  <li><strong>Item 1</strong><br />
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam non gravida ante. Curabitur nec fermentum nisi, non interdum tortor. Pellentesque ac sapien sem.
  </li>
  <li><strong>Item 2</strong><br />
    In blandit, justo tincidunt condimentum rhoncus, lectus sem scelerisque justo, quis tincidunt risus nunc vitae turpis. Suspendisse et aliquet nibh.
  </li>  
  <li><strong>Item 3</strong><br />
    Nullam a mollis mauris. Nam dictum nibh sed pharetra rhoncus. Sed posuere sed lacus quis congue. Integer sodales porttitor quam, at auctor sem tincidunt quis.
  </li>
  <li><strong>Item 4</strong><br />
    Phasellus rutrum, elit vitae rutrum sodales, sem mauris luctus libero, non convallis leo dui sed quam. Duis blandit magna sit amet ornare dapibus.
  </li>
</ol>

Styling

CSS’en ser således ud. Det er testet og virker i IE8, men de røde punkter bliver firkantede.

.steps {
  counter-reset: my-really-cool-counter;
  margin: 4em 0;
}
.steps li {
  font: normal 1em/1.5em Helvetica, Sans-Serif;
  position: relative;
  padding: 0 0 1.5em 3em;
  list-style: none;
}
.steps li:before {
  content: counter(my-really-cool-counter);
  counter-increment: my-really-cool-counter;
  color: #fff;
  display: block;
  left: 0;
  line-height: 2em;
  position: absolute;
  text-align: center;
  text-shadow: 0 2px 0 #cc0000;
  top: 0;
  width: 2em;
  z-index: 2;
}
.steps li:after {
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  -ms-border-radius: 50%;
  -o-border-radius: 50%;
  border-radius: 50%;
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  display: block;
  height: 0;
  width: 0;
  background: #f00;
  border: 1em solid #f00;
  z-index: 1;
}
.steps li:first-child:nth-last-child(1) {
  width: 90%;
  width: calc(100% - 3em);
}
.steps li:first-child:nth-last-child(2), .steps li:first-child:nth-last-child(2) ~ li {
  min-width: 8em;
  width: 45%;
  width: calc(50% - 4em);
  float: left;
  padding-right: 1em;
}
.steps li:first-child:nth-last-child(3), .steps li:first-child:nth-last-child(3) ~ li {
  min-width: 8em;
  width: 27.5%;
  width: calc(33.333% - 4em);
  float: left;
  padding-right: 1em;
}
.steps li:first-child:nth-last-child(4), .steps li:first-child:nth-last-child(4) ~ li {
  min-width: 6em;
  width: 20%;
  width: calc(25% - 4em);
  float: left;
  padding-right: 1em;
}

Hvis du vil vide, hvad det er, der sker, har jeg også lavet et kommenteret eksempel i SASS syntaks på Codepen.

Credits til Lea Verou for styling af gitter og til Roger Johansson for styling af ordnede, numererede lister.

Portræt af Morten Bech

Morten Bech

Frontend udvikler og designer med hang til bibliotekarisk orden. Klatmaler med trang til kunstnerisk kaos. Mere om mig.

Lyt videre

Relaterede indlæg

🕺 Anserinus tendinit

Anserinus tendinit er en senebetændelse, man kan få i knæet. Især, hvis man er sidst i 40’erne og forsøger at straffe et dansegulv. Det lærte jeg i fredags, da det stak helt af på en bytur med en flok fædre fra sønnikes…

📼 Videofilm – en anekdote fra 90’erne

Engang var Blockbuster en fysisk butik, hvor man kunne leje video på bånd. Når man blev oprettet som kunde, fik man et plastickort, som man skulle fremvise sammen med et mundtligt kodeord, der skulle fremsiges, når man…

Første indlæg via Mastodon

Hej Verden! Her er en test. Første pip fra min WordPress blog #bechsterdk

Simple Analytics