Een menu maken

deugdelijk bereid - met karakter - eenvoudige keus



validatie
web-fonts
sticky menu

vorige les: display-types

kerstmenu
validatie - webfonts - sticky menu

Leerdoelen

  • belang van validatie inzien
  • valideren
  • web-fonts gebruiken
  • navigatie binnen een pagina
  • menu stijlen met flexbox

Bovendien kun je kennismaken met het sticky-menu en het ongewenste bedekken door dit menu vermijden.

Validatie

  1. Mark-up mag geen fouten (bugs) bevatten
  2. Als de pagina er 'goed uitziet' kunnen er nog steeds fouten inzitten
  3. Fouten kunnen later tot onverwachte effecten leiden in CSS of JS
  4. Mankerende mark-up geeft een lagere ranking bij zoekmachines

Twee van de reddende engelen

hoe langer een bug in het proces blijft, hoe hoger de kosten worden

voorbeelden van niet valide mark-up

  • alt-attribuut bij img-element vergeten
                        <img src="kerstdiner" >
                    
  • dezelfde id-waarde komt meerdere keren in de pagina voor
        <div id="voorgerecht> .... </div>
        .....
        <div id="voorgerecht> .... </div>
  • sluit-tag van parent komt eerder dan de sluit-tag van het child
                        <p>Dit is <span>niet goed</p></span>
                    

Voeg naar eigen smaak karakter
toe met Google web-fonts

Google web-fonts
  • Het Engelse woord voor lettertype is character
  • Fonts kunnen de sfeer goed versterken
  • Ga naar https://fonts.google.com/
  • Zoek het font dat je nodig hebt met Select this type
  • Onder de @import kun je de importopdracht voor je CSS kiezen
  • De eigenschap font-family bij jouw gewenste tekt-element krijgt de waarde, die je vindt onder CSS rules to specify families

een menu is een lijst van links

Semantisch dus een nav-element,
met daarin een ul-element
welke meerdere li elementen bevat
met daarin de a-elementen:

nav → ul → li → a

twee menu's

interne link:
koppeling binnen een pagina

Spring naar een fragment onder in je document

werkwijze

  1. geef het gewenste element een id. Bijvoorbeeld:
    <section id="nagerecht">  ... </section>
  2. op een andere plaats (bijvoorbeeld boven in het menu) maak je een link met #nagerecht als attribuut-waarde voor de href
    <a href="#nagerecht">nagerecht</a>

toepassing

  • Het kan natuurlijk overal waar een pagina langer is dan de viewport
  • Vooral bij een One-page-design
  • Gebruiker ziet de pagina dan ook 'scrollen' als in de CSS toegevoegd wordt:
    html {
        scroll-behavior: smooth;
    }
  • Voor de gebruiker is een sticky-menu wenselijk: er kan dan altijd geklikt worden, ook als je niet boven in het document zit.

opdracht

  1. fork startcode van GitHub https://github.com/Theo-denBlanken/materiaal-oefening-menu
  2. clone dit naar een eigen repositry op je computer
  3. haal de bugs uit de mark-up en de CSS
  4. voeg een intern menu toe
  5. stijl het menu met CSS Flexbox
  6. push je resultaat op GitHub

Bonus­opdracht

  1. maak het menu sticky
  2. zorg ervoor dat de gekozen sectie niet onder het menu schuift

naar de instructie   |  

Instructie: code clonen en valideren

  1. fork startcode van GitHub https://github.com/Theo-denBlanken/materiaal-oefening-menu
  2. clone dit naar een eigen repositry op jouw systeem
  3. haal de bugs uit de mark-up en de CSS

volgende stap   |  

Instructie: intern menu

  1. Geef de sections een id
  2. geef de header van elke section een achtergrond­afbeelding
  3. koppel de link aan de id's van de sections

volgende stap   |  

Instructie: het menu stijlen

  1. Geef de nav een achtergrondkleur
  2. Geef de ul in de nav een display: flex
    en verberg zijn list-style-types en zet zijn marges op 0.
  3. Maak de display-type van de links in de nav van het type block, centreer de tekst, maakt de kleuren op orde en haal de onderstreping weg.
  4. Voor de scheidingslijnen van de items in de nav maken we gebruiken van een bijzondere selector: nav li + li

volgende stap   |  

Instructie: Google webfonts

  1. Ga naar https://fonts.google.com/
  2. Selecteer je font: kies zelf een passend font dat niet gelijk is aan deze instructie
  3. Importeer deze 2 en ken ze toe: een voor alle tekst en 1 voor de kopjes

Inleveren

  1. Plaats je werk (zonder de .git-map) online op hosts.ma-cloud.nl
  2. Plaats je online link in de README.md van je repo
  3. Updiate je repo op GitHub en lever je GitHub link in

naar bonusopdracht   |  

Bonusopdracht: sticky menu

  1. Het menu blijft na het scrollen van de pagina toch boven aan de viewport staan als hij een
    position: sticky heeft.
  2. Omdat deze dan boven de inhoud blijft, moet deze inhoud bij een klik op een link wat minder ver naar boven scrollen. Maak daarvoor aparte onzichtbaar elementen, met een eigen id die een negatieve position hebben.
  3. Pas de linkjes daarop aan

Inleveren

  1. Werk online en GitHub bij