Dokumentation
Beskrivning och dokumentation över teknik, komponenter och funktioner samt riktlinjer hur dessa ska användas.
Syftet med prototypen är att tillhandahålla utvecklarhjälp i form av konkreta exempel på hur moduler och funktioner ska byggas. Prototypen är baserad på Twitter Bootstrap.Bootstrapkomponenter
En komplett lista över de inbyggda komponenterna i Bootstrap finns här.
Semantik
Det är mycket viktigt att alla e-tjänster utvecklas med korrekt semantisk HTML5 (HTML4 eller XHTML får ej användas). Det innebär att rätt HTML-tagg skall användas till rätt sak. Är det en rubrik skall det vara ett H-element. Är det brödtext skall det vara ett p-element. Är det en oordnad lista skall det vara ett ul-element. osv. Detta för att tillgängligheten skall bli optimal både för sökmotorer och exempelvis personer som använder skärmläsare eller blindskriftskrivare.
Klickbara element måste gå att komma åt även utan mus, dvs via tangentbordet eller på annat vis. Därför måste länkar alltid vara a-taggar <a href="#">Länk</a>
och knappar alltid vara <button>Knapp</button>
. Annars går de inte att tabba till.
Bilder måste ha alt-attribut som beskriver vad bilden föreställer.
Detta är inget unikt för e-tjänsteplattformen utan följer W3C's standarder (Länk öppnas i nytt fönster) Öppnas i nytt fönster och webbriktlinjer.se (Länk öppnas i nytt fönster) Öppnas i nytt fönster
Det är även mycket viktigt att formulär formateras korrekt med id:n, beskrivningar, aria-attribut, data-attribut, for-attribut på labels, inputs med mera. Läs mer om formulär.
Läs mer om semantik
- Using semantics (W3C) (Länk öppnas i nytt fönster)
- Using h1-h6 (W3C) (Länk öppnas i nytt fönster)
- Using ol, ul and dl (W3C) (Länk öppnas i nytt fönster)
- Table markup (W3C) (Länk öppnas i nytt fönster)
- Providing descriptions (W3C) (Länk öppnas i nytt fönster)
- HTML5 Semantic Elements (W3Schools) (Länk öppnas i nytt fönster)
Tabbordning
Det är viktigt att tabbordningen i e-tjänsterna är logisk. Därför måste markupen struktureras utifrån detta. Att manuellt sätta tabindex="3"
skall inte behövas utom i de fall där ett element INTE skall gå att tabba till. Exempelvis om man har ett modallager synligt ska man inte kunna tabba till element under modallagret. Samma sak med dropdown-menyer. Detta görs genom att sätta tabindex="-1"
. OBS! att Bootstrap gör detta automatiskt med modallager och dropdown-menyer.
Testa din tabbordning genom att helt enkelt tabba dig genom siten. Hamnar du på det element du förväntar dig? Om inte behöver du antagligen strukturera om din markup. Om elementen i din markup kommer i ordning kommer tabbordningen att bli logisk.
Gridsystem
Bootstrap använder sig av ett 12-kolumners gridsystem. Här finns dokumentationen för denna grid (Länk öppnas i nytt fönster) Öppnas i nytt fönster .
Utilityklasser
Utilityklasser används för att skriva över CSS som vissa komponenter får per default t.ex. margin eller padding. De flesta utilityklasser är flaggade !important och skall därför väga tyngre än defaultstylingen.
En komplett lista över alla utilityklasser finns här.
Ikoner
I Stockholms stads e-tjänster finns ett antal tillgängliga ikoner. Du hittar en lista med samtliga ikoner här.
Ikonerna kan användas som klasser på vilket element som helst. Klasserna finns beskrivna i ikonlistan
Det finns ett antal utility-klasser för att få ikonerna att bete sig på olika sätt. Dessa hittas under utilityklasserna
Ikoner
I Stockholms stads e-tjänster finns ett antal tillgängliga ikoner. Du hittar en lista med samtliga ikoner här.
Ikonerna kan användas som klasser på vilket element som helst. Klasserna finns beskrivna i ikonlistan
Det finns ett antal utility-klasser för att få ikonerna att bete sig på olika sätt. Dessa hittas under utilityklasserna
Typografi
Typsnitt
Ur Varumärkesmanualen för Stockholms stad: Vår typografi är en viktig del av Stockholms stads grafiska profil. Stockholm Type och Stockholm Type Display är Stockholms stads egna typsnitt specialritat av schweizaren Emmanuel Rey. Genom ett särskiljande typsnitt med mycket identitet skapar vi igenkänning och kan lyfta fram och knyta samman våra verksamheter. Som kompletterande typsnitt använder vi Times New Roman, Arial och Verdana.
Stockholm Type Bold
Stockholm Type Regular
Brödtext
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam in dui mauris. Vivamus hendrerit arcu sed erat molestievehicula. Sed auctor neque eu tellus rhoncus ut eleifend nibh porttitor. Praesent id metus massa, ut blandit odio. Proin quis tortor orci. Etiam.
Rubriker
Alla rubrikstilar (h1-h6) finns även som classer:
.alpha - som h1
.beta - som h2
.gamma - som h5
.delta - som h4
.epsilon - som h5
.zeta - som h6
Lorem ipsum
Lorem ipsum
Lorem ipsum
Lorem ipsum
Lorem ipsum
Lorem ipsum
Ingress
Brödtext quisque eget odio ac lectus vestibulum faucibus eget in metus. In pellentesque faucibus vestibulum. Nulla at nulla justo, eget luctus.
Inline element
Strong används för att indikera att texten är viktig
Em används för att visa att texten har extra betoning
B-elementet skiljer sig stilmässigt från annan text utan att lägga extra vikt på texten.
I-elementet är text som skiljer sig utseendemässigt från övrig text.
U-elementet är understrukten text.
Denna text är raderad och denna text har ersatt den gamla.
Denna text är genomstruken.
Superscript för sådant som t.ex. ®
Subscript för sådant som t.ex. H2O
Den här texten är mindre än normal text för exempelvis finstilt.
Förkortning: HTML
Keybord input: Cmd
"Detta är ett citat"
Detta är en citation
DFN elementet indikerar en definition.
MARK element indikerar en markering.
Detta är inline-kod
.
Detta är exempel på data från ett datorprogram.
VARIABEL elementet, sådom x = y.
Cookies
Cookieinformation måste finnas i e-tjänsterna. Cookieinformationa utformning skall vara genomgående med Stadens övriga webbar. Exempel på hur den skall se ut hittas här.
AJAX
Om ett område uppdateras utan att sidan laddas om ska detta vara uppmärkt med WAI-ARIA attributet aria-live
Använd följande värden:
- Off = Använd för något som uppdateras ofta, exempelvis aktieinformation.
- Polite = Om en ändring bara ska meddelas om användaren inte har något viktigt för sig.
- Assertive = Använd när det händer något viktigt som användaren bör uppmärksammas om så snart som möjligt.
Nedanstående exempel är taget från filtreringen och är alltså diven som laddas om när en filtrering görs.
<div aria-live="assertive" class="col-md-7 col-sm-12 col-xs-12 filter-list">
Formulär
Formulär byggs upp med bootstraps gridsystem. Hur fälten skall struktureras beror på vilka fält som behövs. Det viktiga här är att fälten fungerar även mobilt. Oftast innebär det att kolumnerna kollapsar helt till 100% bredd för lägre upplösningar.
Detta åstadskoms genom att specificera antal kolumner för olika breakpoints. Se nedan exempel.
<div class="col-xs-12 col-sm-6 col-md-4">
<div class="form-group">
<input type="text"
class="form-control"
placeholder="Förnamn">
</div>
</div>
I ovanstående exempel kommer fälten ta upp 4 kolumner i medium, 6 i small och kollapsa helt och ta upp alla 12 kolumner i extra small.
OBS att själv formulärsfälten alltid sträcker sig till 100% bredd av sin förälder.
Validering
I denna styleguide/prototyp valideras formulären front-end med Bootstrap Validator (Länk öppnas i nytt fönster) Öppnas i nytt fönster som är ett tillägg till Bootstrap. Konkreta exempel i prototypen finns på Startsidan och i Wizarden.
För att valideringsscriptet skall köras krävs att formuläret har följande data-attribut data-toggle="validator"
.
<form data-toggle="validator" role="form" autocomplete="off">
OBS! att det är valfritt att använda frontendvalidering med Boostrap validator. Det går även bra att använda MVC eller andra teknologier. Det viktiga är att utseendet och tillgänglighetskraven följer denna styleguide.
Tillgänglighet
För att valideringen skall fungera korrekt och ge korrekt feedback både till vanliga användare och till de som t.ex. surfar med skärmläsare krävs ett antal extra attribut och element.
<div class="form-group">
<label for="exampleInputPNumber" class="required">Personnummer</label>
<input type="text"
class="form-control"
id="exampleInputPNumber"
aria-describedby="pNumberValidationMessage"
placeholder="ÅÅÅÅMMDDXXXX"
pattern="^((20(0|1|2)[0-9])|(19\d{2}))((0[1-9])|1[0-2])((0[1-9])|((1|2)[0-9])|(3[01]))[-]?\d{4}$"
data-required-error="Du behöver fylla i ett personnummer."
data-error="Du behöver ange ett personnummer i formatet ÅÅÅÅ-MM-DD-XXXX."
data-minlength="12"
required>
<div id="pNumberValidationMessage" class="help-block with-errors form-control-feedback"></div>
</div>
Om ett fält skall valideras eller behöver en enklare instruktion kopplad till sig används aria-describedby="pNumberValidationMessage"
där "pNumberValidationMessage" refererar till ett elementet med detta ID. I det här fallet
<div id="pNumberValidationMessage" class="help-block with-errors form-control-feedback"></div>
I denna container kan det dels ligga en beskrivande till som förtydligar hur fältet skall formateras men här hamnar även valideringsmeddelanden. Valideringsmeddelandet styrs av data-error=""
attributet.
Validera
För att validera ett fält finns flera alternativ man kan använda. <input type="email">
validerar e-postadresser per automatik. Vill man validera på något specifik använder man attributet pattern=""
och regular expressions.
Exempelvis validering på enbart siffror pattern="^[0-9]*$"
eller som i ovanstående exempel med validering på personnummer pattern="^((20(0|1|2)[0-9])|(19\d{2}))((0[1-9])|1[0-2])((0[1-9])|((1|2)[0-9])|(3[01]))[-]?\d{4}$"
Max och min-värde
För att ytterligare förenkla för användaren kan ma använda ett minimum och ett maximumvärde för hur många tecken ett fält får innehålla. detta görs med data-minlength="7"
samt data-maxlength="25"
Required
Till sist används required
för att göra ett fält obligatoriskt. Detta kräver att fältets label
får klassen required
också <label for="" class="required">labeltext</label>
Fältmatchning
Fält kan ställas in for att matcha varandra. Det är användsbart t.ex. när lösenord eller e-post skall anges. Detta görs med två extra data-arribut. data-match="#exampleInputPassword"
som anger ID't på fältet som skall matchas, och data-match-error="Lösenorden matchar inte."
som anger felmeddelandet när fälter inte matchar.
Exempel nedan
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-6">
<div class="form-group">
<label for="exampleInputPassword" class="required">Lösenord</label>
<input type="password"
class="form-control"
id="exampleInputPassword"
aria-describedby="passwordValidationMessage"
data-error="Lösenordet måste vara minst 8 tecken, varav minst en stor bokstav och minst en siffra."
data-required-error="Du behöver fylla i ett lösenord."
placeholder="Välj lösenord"
data-minlength="8"
required>
<div class="help-block with-errors form-control-feedback" id="passwordValidationMessage">Minst 8 tecken</div>
</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-6">
<div class="form-group">
<label for="exampleInputPassword2" class="required">Bekräfta lösenord</label>
<input type="password"
class="form-control"
id="exampleInputPasswordConfirm"
aria-describedby="password2ValidationMessage"
data-match="#exampleInputPassword"
data-match-error="Lösenorden matchar inte."
data-required-error="Du behöver fylla i ett lösenord."
data-error="Lösenordet måste vara minst 8 tecken, varav minst en stor bokstav och minst en siffra."
placeholder="Bekräfta lösenord"
data-minlength="8"
autocomplete="off"
required>
<div class="help-block with-errors form-control-feedback" id="password2ValidationMessage"></div>
</div>
</div>
</div>
Ej tillgängliga fält
Vissa fält skall ej gå att uppdatera via gränssnittet utan innehåller data som kommer från andra system. Exempelvis personnummer. Dessa sätts då som ej tillgängliga med attributet disabled
<input type="text" class="form-control" id="exampleInputPNumber" aria-describedby="pNumberValidationMessage" placeholder="ÅÅÅÅMMDD-XXXX" pattern="^((20(0|1|2)[0-9])|(19\d{2}))((0[1-9])|1[0-2])((0[1-9])|((1|2)[0-9])|(3[01]))[-]?\d{4}$" data-error="Vänligen kontrollera fältet" disabled=">
Förtydliga fält
Bootstrap har en inbyggd funktion där man kan lägga till ett tillägg "inuti" ett fält. Det kan vara bra för att förtydliga vad är handlar om för fält, exempelvis för e-post. Detta görs med en span
och klassen input-group-addon
Koden för ovanstående exempel ser ut så här.
<div class="input-group">
<span class="input-group-addon" aria-hidden="true">@</span>
<input type="email" class="form-control" id="email" aria-describedby="emailValidationMessage" placeholder="fornamn.efternamn@epost.se" pattern="^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,15}$" data-error="Vänligen kontrollera fältet">
</div>
Det finns även möjlighet att lägga en beskrivande text under själva fältet för att förtydliga vilken information som skall fyllas i. I det här fallet texten "Endast siffror"
Koden för ovanstående exempel ser ut så här
<div class="form-group">
<label for="exampleInputShoeSize" class="required">Skostorlek</label>
<input type="num"
class="form-control"
id="exampleInputShoeSize"
aria-describedby="shoeSizeValidationMessage"
placeholder="34-47"
data-error="Vänligen kontrollera fältet"
pattern="^[0-9]*$"
required>
<div class="help-block with-errors form-control-feedback" id="shoeSizeValidationMessage">Endast siffror</div>
</div>
Fler exempel finns på Startsidan och i Wizarden.
Fält utan synlig label
Om behov uppstår där ett fält inte kan eller får ha en synlig label eller om en knapp inte innehåller någon text utan endast en ikon skall dessa få attributet aria-label="text"
för att beskriva vad fältet eller knappens funktion är.
<input type="text" name="text" aria-label="Förnamn">
<button class="btn btn-primary icon-arrow-right-light u-icon-right u-icon-btn-sm" arial-label="Gå vidare"></button>
Gruppera fält
Fält med en logisk koppling till varandra t.ex. radioknappar eller checkboxar skall wrappas i ett fieldset med en beskrivande legend.
Koden för ovanstående exempel ser ut som följande
<fieldset>
<div class="radio">
<legend class="label-legend required">Kön</legend>
<div class="form-group">
<select class="form-control" id="selectGender" name="selectGender" aria-describedby="sexValidationMessage" aria-label="VÄlj Kön" data-required-error="Validering misslyckades i fÄltet Kön. Kön är obligatoriskt." required>
<option disabled value="">VÄlj</option>
<option value="male">Man</option>
<option value="female">Kvinna</option>
<option value="other">Annan</option>
<option value="noSay">Vill inte uppge</option>
</select>
<div class="help-block with-errors form-control-feedback" id="sexValidationMessage">/div>
</div>
</div>
</fieldset>
För att kunna bestämma minst antal och max antal checkboxar som skall vara ikryssade fyller du i attributen nedanför för varje checkbox fält. Alla data- attribut måste vara ifyllda likadant.
Attributen för ovanför exempel är följande:
data-minnumberofmandatorycheckboxes="1"
data-maxnumberofmandatorycheckboxes="2"
data-mandatorycheckbox="mycheckboxgroup"
name="mycheckboxgroup"
Koden för ovanstående exempel ser ut som följande
<form role="form" autocomplete="off">
<legend class="label-legend required">Grupperade checkboxar med minst 1 obligatoriskt val</legend>
<div class="form-group">
<div class="checkbox">
<input type="checkbox"
class="visuallyhidden"
id="checkboxtest"
data-minnumberofmandatorycheckboxes="1"
data-maxnumberofmandatorycheckboxes="2"
data-mandatorycheckbox="mycheckboxgroup"
name="mycheckboxgroup"
data-error="Minst ett alternativ är obligatoriskt"
aria-describedby="validationMessage"
required />
<label for="checkboxtest"
class="field-option field-option--checkbox">Checkbox 1</label>
</div>
<div class="checkbox">
<input type="checkbox"
class="visuallyhidden"
id="checkboxtest2"
data-minnumberofmandatorycheckboxes="1"
data-maxnumberofmandatorycheckboxes="2"
data-mandatorycheckbox="mycheckboxgroup"
name="mycheckboxgroup"
data-error="Minst ett alternativ är obligatoriskt"
aria-describedby="validationMessage"
required />
<label for="checkboxtest2"
class="field-option field-option--checkbox">Checkbox 2</label>
</div>
<div id="validationMessage" class="help-block with-errors"></div>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary icon-arrow-right-light u-icon-right u-icon-btn-xxs">Nästa</button>
</div>
</form>
Navigation
Navigation för styleguiden. Du hittar ett exempel på navigationen på startsidan
Huvudnavigering
<div class="bg-lightgray navbar-container">
<div class="container">
<div class="row">
<div class="col-md-12 col-sm-12 col-xs-12 p-x-0">
<nav class="navbar m-b-0 top-nav">
<div class="dropdown languages">
<button id="dropdownMenu4" type="button" class="icon-world-map u-icon-left btn btn-link" data-toggle="dropdown" aria-expanded="true" aria-controls="languageDropdown" lang="en">Language <span class="caret caret--special"></span></button>
<ul class="dropdown-menu" id="languageDropdown" aria-labelledby="dropdownMenu4">
<li class="active"><a href="#" lang="sv" aria-label="Valt språk">Svenska</a></li>
<li><a href="#" lang="en">English</a></li>
<li><a href="#" lang="fi">Suomalainen</a></li>
</ul>
</div>
<div class="dropdown">
<a href="#" class="btn btn-link dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><span class="visuallyhidden-on-small-screen">Inloggad: </span><span class="cut-username-on-xx-small-screen cut-username-on-x-small-screen">Inga-Birgitta </span><span">Jansson Hansson</span> <span class="badge">3</span><span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="my-profile.html"><span class="block-icon icon-user"></span> Mina sidor</a></li>
<li><a href="my-messages.html"><span class="badge">3</span> Mina meddelanden</a></li>
<li><a href="startpage.html"><span class="block-icon icon-locked"></span> Logga ut</a></li>
</ul>
</div>
</nav>
</div>
</div>
</div>
</div>
<header id="header" class="header">
<div class="header__body">
<div class="header__content">
<div class="logotype">
<a href="." class="logotype__link" aria-label="Stockholms stad, till startsidan för Webbmanual.">
<picture class="logotype__image">
<source srcset="https://static.test.stockholm.se/styleguide-etjanst/3.1.2https://static.test.stockholm.se/styleguide-etjanst/3.1.2/img/logo_print.svg" media="(min-width: 48.75em)">
<img src="https://static.test.stockholm.se/styleguide-etjanst/3.1.2https://static.test.stockholm.se/styleguide-etjanst/3.1.2/img/logo_print.svg" alt="Stockholms stad">
</picture>
<span class="logotype__title">E-tjänstens namn</span>
</a>
</div>
</div>
<nav class="primary-nav inverted" aria-label="Primär">
<button id="menu-toggle" data-toggle="menu" class="primary-nav__item primary-nav__item--last gtm-menu-toggle main-nav-toggle" aria-controls="menu" aria-expanded="false">
<span class="menu-content">
<i class="icon icon-arrow-down-light" aria-hidden="true"></i>
<i class="icon icon-close-light" style="display: none;" aria-hidden="true"></i>
<span class="menu-text" data-expanded-text="Stäng">Meny</span>
</span>
</button>
</nav>
</div>
</header>
<nav id="menu" class="site-nav noprint" aria-label="Meny" aria-hidden="true">
<div class="main-menu">
<nav class="main-menu__pages" aria-label="Huvudmeny">
<ul class="main-menu__body" role="menu">
<li class="accordion accordion--inverted">
<button type="button" class="btn btn--bare accordion-item__header accordion-item__header--inverted gtm-accordion-item" data-toggle="accordion_reandomhash123" aria-expanded="false" aria-controls="accordion_reandomhash123">
<span class="accordion-item__title">Profil och konton</span>
<span class="accordion-item__icon-chevron ml-xsmall" aria-hidden="true">
<i class="icon icon-arrow-down" aria-hidden="true"></i>
</span>
<span class="accordion-item__icon-close ml-xsmall" aria-hidden="true">
<i class="icon icon-close" aria-hidden="true"></i>
</span>
</button>
<ul id="accordion_reandomhash123" role="menu" class="accordion-item__body accordion-item__body--inverted" aria-hidden="true">
<li class="add-tabindex">
<a class="main-menu__link" role="menuitem" href="my-profile.html">Mina uppgifter</a>
</li>
<li class="add-tabindex">
<a class="main-menu__link" role="menuitem" href="my-accounts.html">Mina konton</a>
</li>
</ul>
</li>
<li class="add-tabindex"><a href="my-messages.html" class="main-menu__link" role="menuitem">Meddelanden</a></li>
<li class="accordion accordion--inverted">
<button type="button" class="btn btn--bare accordion-item__header accordion-item__header--inverted gtm-accordion-item" data-toggle="accordion_reandomhash890" aria-expanded="false" aria-controls="accordion_reandomhash890">
<span class="accordion-item__title">Tjänster</span>
<span class="accordion-item__icon-chevron ml-xsmall" aria-hidden="true">
<i class="icon icon-arrow-down" aria-hidden="true"></i>
</span>
<span class="accordion-item__icon-close ml-xsmall" aria-hidden="true">
<i class="icon icon-close" aria-hidden="true"></i>
</span>
</button>
<ul id="accordion_reandomhash890" role="menu" class="accordion-item__body accordion-item__body--inverted" aria-hidden="true">
<li class="add-tabindex">
<a class="main-menu__link" role="menuitem" href="my-matters.html">Mina ärenden</a>
</li>
<li class="add-tabindex">
<a class="main-menu__link" role="menuitem" href="my-invoices.html">Mina fakturor</a>
</li>
</ul>
</li>
<li class="add-tabindex"><a href="faq.html" class="main-menu__link" role="menuitem">Frågor och svar</a></li>
<li class="add-tabindex"><a href="contact.html" class="main-menu__link" role="menuitem">Kontakt</a></li>
<li class="accordion accordion--inverted hidden-sm main-menu__link" role="menuitem">
<button type="button" class="btn btn--bare accordion-item__header accordion-item__header--inverted gtm-accordion-item" data-toggle="accordion_languages" aria-expanded="false" aria-controls="accordion_languages">
<span class="accordion-item__icon-chevron ml-xsmall" aria-hidden="true">
<i class="icon icon-arrow-down" aria-hidden="true"></i>
</span>
<span class="accordion-item__icon-close ml-xsmall" aria-hidden="true">
<i class="icon icon-close" aria-hidden="true"></i>
</span>
</button>
<ul id="accordion_languages" role="menu" class="accordion-item__body accordion-item__body--inverted" aria-hidden="true">
<li class="add-tabindex ">
<a class="main-menu__link" role="menuitem" href="#">Svenska</a>
</li>
<li class="add-tabindex ">
<a class="main-menu__link" role="menuitem" href="#">English</a>
</li>
<li class="add-tabindex ">
<a class="main-menu__link" role="menuitem" href="#">Suomalainen</a>
</li>
</ul>
</li>
</ul>
</nav>
</div>
</nav>
Footer
Footer för styleguiden. Du hittar ett exempel på footer på startsidan
Footer för styleguiden
<footer class="footer section inverted noprint">
<div class="footer-container">
<div class="footer-links">
<div class="content-grid">
<div class="footer-links__list">
<div class="container section">
<h2 class="delta m-t-md-small-screen">Stadens service</h2>
<ul class="list-ui mb">
<li class="accordion accordion--inverted">
<button type="button" class="btn btn--bare accordion-item__header accordion-item__header--inverted gtm-accordion-item" data-toggle="accordion_9dae74dc-1a58-408b-9286-4dcb6a2fae1f" aria-expanded="false" aria-controls="accordion_9dae74dc-1a58-408b-9286-4dcb6a2fae1f">
<span class="accordion-item__title">Förskola och skola</span>
<i class="icon icon-arrow-down-light" aria-hidden="true"></i>
<i class="icon icon-close-light dn" aria-hidden="true"></i>
</button>
<ul id="accordion_9dae74dc-1a58-408b-9286-4dcb6a2fae1f" class="accordion-item__body accordion-item__body--inverted" aria-hidden="true">
<li>
<a class="list-ui__link" href="#">Förskola</a>
</li>
<li>
<a class="list-ui__link" href="#">Grundskola</a>
</li>
<li>
<a class="list-ui__link" href="#">Gymnasieskola</a>
</li>
<li>
<a class="list-ui__link" href="#">Vuxenutbildning</a>
</li>
</ul>
</li>
<li class="accordion accordion--inverted">
<button type="button" class="btn btn--bare accordion-item__header accordion-item__header--inverted gtm-accordion-item" data-toggle="accordion_6983abae-69d6-4f21-a803-51f82acfc7e5" aria-expanded="false" aria-controls="accordion_6983abae-69d6-4f21-a803-51f82acfc7e5">
<span class="accordion-item__title">Stöd och familj</span>
<i class="icon icon-arrow-down-light" aria-hidden="true"></i>
<i class="icon icon-close-light dn" aria-hidden="true"></i>
</button>
<ul id="accordion_6983abae-69d6-4f21-a803-51f82acfc7e5" class="accordion-item__body accordion-item__body--inverted" aria-hidden="true">
<li>
<a class="list-ui__link" href="#">Socialt och ekonomiskt stöd</a>
</li>
<li>
<a class="list-ui__link" href="#">Stöd vid funktionsnedsättning</a>
</li>
<li>
<a class="list-ui__link" href="#">Äldreomsorg</a>
</li>
<li>
<a class="list-ui__link" href="#">God man, förvaltare och förmyndare</a>
</li>
<li>
<a class="list-ui__link" href="#">Vigsel</a>
</li>
<li>
<a class="list-ui__link" href="#">Begravning och kyrkogårdar</a>
</li>
</ul>
</li>
<li class="accordion accordion--inverted">
<button type="button" class="btn btn--bare accordion-item__header accordion-item__header--inverted gtm-accordion-item" data-toggle="accordion_dd04a77a-d924-47d5-bb46-3d08916a6b50" aria-expanded="false" aria-controls="accordion_dd04a77a-d924-47d5-bb46-3d08916a6b50">
<span class="accordion-item__title">Ung i Stockholm</span>
<i class="icon icon-arrow-down-light" aria-hidden="true"></i>
<i class="icon icon-close-light dn" aria-hidden="true"></i>
</button>
<ul id="accordion_dd04a77a-d924-47d5-bb46-3d08916a6b50" class="accordion-item__body accordion-item__body--inverted" aria-hidden="true">
<li>
<a class="list-ui__link" href="#">Kollo</a>
</li>
<li>
<a class="list-ui__link" href="#">Fritidsgårdar och ungdomsgårdar</a>
</li>
<li>
<a class="list-ui__link" href="#">Ungdomsmottagning</a>
</li>
</ul>
</li>
<li class="accordion accordion--inverted">
<button type="button" class="btn btn--bare accordion-item__header accordion-item__header--inverted gtm-accordion-item" data-toggle="accordion_545f4827-284a-4c27-be08-0d88e0e952bc" aria-expanded="false" aria-controls="accordion_545f4827-284a-4c27-be08-0d88e0e952bc">
<span class="accordion-item__title">Uppleva och göra</span>
<i class="icon icon-arrow-down-light" aria-hidden="true"></i>
<i class="icon icon-close-light dn" aria-hidden="true"></i>
</button>
<ul id="accordion_545f4827-284a-4c27-be08-0d88e0e952bc" class="accordion-item__body accordion-item__body--inverted" aria-hidden="true">
<li>
<a class="list-ui__link" href="#">Motionera, simma och träna</a>
</li>
<li>
<a class="list-ui__link" href="#">Parker och natur</a>
</li>
<li>
<a class="list-ui__link" href="#">Konst och kultur</a>
</li>
</ul>
</li>
<li class="accordion accordion--inverted">
<button type="button" class="btn btn--bare accordion-item__header accordion-item__header--inverted gtm-accordion-item" data-toggle="accordion_4846087a-8c82-4494-bc37-01874c62867e" aria-expanded="false" aria-controls="accordion_4846087a-8c82-4494-bc37-01874c62867e">
<span class="accordion-item__title">Trafik och gator</span>
<i class="icon icon-arrow-down-light" aria-hidden="true"></i>
<i class="icon icon-close-light dn" aria-hidden="true"></i>
</button>
<ul id="accordion_4846087a-8c82-4494-bc37-01874c62867e" class="accordion-item__body accordion-item__body--inverted" aria-hidden="true">
<li>
<a class="list-ui__link" href="#">Trafik, gator och torg</a>
</li>
<li>
<a class="list-ui__link" href="#">Parkering</a>
</li>
<li>
<a class="list-ui__link" href="#">Cykla i Stockholm</a>
</li>
</ul>
</li>
<li class="accordion accordion--inverted">
<button type="button" class="btn btn--bare accordion-item__header accordion-item__header--inverted gtm-accordion-item" data-toggle="accordion_86e23076-47fd-4d4b-b595-a731ed45b936" aria-expanded="false" aria-controls="accordion_86e23076-47fd-4d4b-b595-a731ed45b936">
<span class="accordion-item__title">Bygga, bo och leva hållbart</span>
<i class="icon icon-arrow-down-light" aria-hidden="true"></i>
<i class="icon icon-close-light dn" aria-hidden="true"></i>
</button>
<ul id="accordion_86e23076-47fd-4d4b-b595-a731ed45b936" class="accordion-item__body accordion-item__body--inverted" aria-hidden="true">
<li>
<a class="list-ui__link" href="#">Bygglov</a>
</li>
<li>
<a class="list-ui__link" href="#">Kartor och lantmäteri</a>
</li>
<li>
<a class="list-ui__link" href="#">Mitt boende</a>
</li>
<li>
<a class="list-ui__link" href="#">Leva hållbart</a>
</li>
</ul>
</li>
<li class="accordion accordion--inverted">
<button type="button" class="btn btn--bare accordion-item__header accordion-item__header--inverted gtm-accordion-item" data-toggle="accordion_07b4d3c6-ee8e-4334-a5c4-8ba1a06f6568" aria-expanded="false" aria-controls="accordion_07b4d3c6-ee8e-4334-a5c4-8ba1a06f6568">
<span class="accordion-item__title">Företag och organisationer</span>
<i class="icon icon-arrow-down-light" aria-hidden="true"></i>
<i class="icon icon-close-light dn" aria-hidden="true"></i>
</button>
<ul id="accordion_07b4d3c6-ee8e-4334-a5c4-8ba1a06f6568" class="accordion-item__body accordion-item__body--inverted" aria-hidden="true">
<li>
<a class="list-ui__link" href="#">Tillstånd och regler</a>
</li>
<li>
<a class="list-ui__link" href="#">Företags- och föreningsservice</a>
</li>
<li>
<a class="list-ui__link" href="#">Leverantör och utförare</a>
</li>
<li>
<a class="list-ui__link" href="#">Stockholms stads upphandlingar</a>
</li>
</ul>
</li>
<li class="accordion accordion--inverted">
<button type="button" class="btn btn--bare accordion-item__header accordion-item__header--inverted gtm-accordion-item" data-toggle="accordion_c37840c0-1aa7-47b5-9aa5-d3f5d59f91fb" aria-expanded="false" aria-controls="accordion_c37840c0-1aa7-47b5-9aa5-d3f5d59f91fb">
<span class="accordion-item__title">Kommun och politik</span>
<i class="icon icon-arrow-down-light" aria-hidden="true"></i>
<i class="icon icon-close-light dn" aria-hidden="true"></i>
</button>
<ul id="accordion_c37840c0-1aa7-47b5-9aa5-d3f5d59f91fb" class="accordion-item__body accordion-item__body--inverted" aria-hidden="true">
<li>
<a class="list-ui__link" href="#">Jobba i Stockholms stad</a>
</li>
<li>
<a class="list-ui__link" href="#">Om Stockholms stad</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="footer-links__list">
<div class="container section">
<h2 class="delta">Mer om staden</h2>
<ul class="list-ui mb">
<li>
<a href="#" class="list-ui__link">Hitta stadsdel</a>
</li>
<li>
<a href="#" class="list-ui__link">E-tjänster</a>
</li>
<li>
<a href="#" class="list-ui__link">Stockholm växer</a>
</li>
<li>
<a href="#" class="list-ui__link">Stockholms stads anslagstavla</a>
</li>
</ul>
</div>
</div>
<div class="footer-links__list">
<div class="container section">
<h2 class="delta">Om webbplatsen</h2>
<ul class="list-ui mb">
<li>
<a href="#" class="list-ui__link">Tillgänglighetsredogörelse</a>
</li>
<li>
<a href="#" class="list-ui__link">Personuppgifter och dataskydd</a>
</li>
<li>
<a href="#" class="list-ui__link">Om kakor på webbplatsen</a>
</li>
<li>
<a href="#" class="list-ui__link">Utvecklingsbloggen</a>
</li>
</ul>
</div>
</div>
<div class="footer-links__list">
<div class="container section">
<h2 class="delta">Kontakt</h2>
<ul class="list-ui mb">
<li>
<a href="#" class="list-ui__link">Kontakta oss</a>
</li>
<li>
<a href="#" class="list-ui__link">Hitta politiker</a>
</li>
<li>
<a href="#" class="list-ui__link">Mina sidor</a>
</li>
<li>
<a href="#" class="list-ui__link">Press</a>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="footer__footer footer__footer--divider">
<a href="." class="logotype">
<span class="logotype__image">
<img src="https://static.test.stockholm.se/styleguide-etjanst/3.1.2/https://static.test.stockholm.se/styleguide-etjanst/3.1.2/img/logotype--white.svg" alt="Stockholms stad, till startsidan för Webbmanual.">
</span>
</a>
<a href="https://start.stockholm/" class="sthlm-link">
start.stockholm
<i class="icon icon-arrow-right-light"></i>
</a>
</div>
</div>
</footer>