Module 11: Frontend Flashcards
Wat is HTML?
HTML staat voor Hypertext Markup Language en is een op SGML (ISO-standaard) gebaseerde opmaaktaal voor het bouwen van documenten. Dergelijke documenten bestaan uit een hiërarchische structuur van elementen.
Documenten in HTML kunnen worden ingelezen door een webbrowser om vervolgens als webpagina te worden weergegeven.
Een HTML document is opgebouwd uit genestelde elementen, waarvan het merendeel wordt aangeduid met een zogeheten ‘start tag’ en end ‘tag’. De meest voorkomende elementen bestaan uit…
- html: duidt het begin en eind van een HTML document aan.
- head: duidt het begin en het eind van de header aan, die metadata bevat zoals de titel van een document.
- body: duidt het begin het eind aan van het deel van het HTML document dat wordt weergegeven door het browser.
- div: bakent een logische sectie af van het document.
- h1: bevat de de koptekst van een sectie in het document.
- p: bakent een paragraaf af.
- a: voor het invoegen van een link.
Naast deze elementen bestaan er ook nog elementen die geen content bevatten, deze worden ook wel void of empty genoemd. Voorbeelden zijn…
- img: wordt gebruikt voor het weergeven van een afbeelding.
- br: is een line break waarmee je naar een nieuwe regel kunt gaan.
- input: geeft een input veld aan waarin een gebruiker informatie kan invullen.
Wat is het DOM?
Wanneer een webpagina wordt geladen, creëert de browser een Document Object Model. Een DOM definieert alle HTML elementen als objecten, die de eigenschappen, methodes en evenementen van de elementen bevat. Het DOM bestaat uit een boom van objecten die gelijk is aan de hiërarchische structuur van de elementen.
Welke root tags zijn niet verplicht omdat de browser ze automatisch toevoegt aan het DOM?
html, head en body
Waarom zou je root tags die niet verplicht zijn alsnog niet weglaten?
Hoewel je HTML document valide kan zijn, het DOM toch anders kan zijn dan je verwacht.
Wat is character encoding bij HTTP?
Character encoding definieert de vertaling van binaire data naar karakters.
Hoewel velden in een HTTP GET request voor het grootste deel uit ASCII tekst bestaan, staat de encoding voor de HTTP message body (hierin staat het opgevraagde HTML document) niet vooraf vast. Als de browser het HTML document wil laten zien op het scherm, moet duidelijk zijn welke encoding gebruikt is voor het document.
Hoe kan de browser bepalen welke encoding is gebruikt voor het weergeven van een HTML document?
- Default (geen aanduiding)
- HTTP Header
- Meta charset (html header)
- Instellingen
Wat is de default encoding algoritme voor HTML documenten?
UTF-8
Wat is de character reference voor de volgende characters:
- <
- >
- &
- ”
< = < > = > & = & " = "
Wat zijn de stappen waarin een pagina in de browser wordt gerendered?
- De browser laad allereerst de resources zoals HTML, afbeeldingen, CSS en JavaScript in.
- Vervolgens wordt de encoding bepaald en hierna de HTML geparsed.
- Op basis van de geparsde HTML wordt het DOM opgebouwd.
- Dan wordt op basis van de CSS de CSSOM (CSS Object Model) opgebouwd. Dit is zoals HTML een hiërarchische structuur van de styles uit de stylesheet.
- Vanuit JavaScript kunnen beide modellen worden benaderd om hier bewerkingen op uit te voeren.
- Om te bepalen wat daadwerkelijk weergegeven gaat worden, wordt de Render Tree opgebouwd. Dit door op basis van DOM en CSSOM een nieuwe hiërarchische structuur op te bouwen met hierin alle zichtbare elementen.
- Vervolgens wordt de pagina weergegeven.
Wat zijn semantische elementen?
semantische elementen zijn elementen die iets over de inhoud van het document zeggen.
Voorbeeld is het img element, waaraan de browser kan herkennen dat het element een afbeelding bevat.
Wat zijn non-semantische elementen?
Non-semantische elementen zijn elementen die niets zeggen over de inhoud, voorbeelden hiervan zijn ‘div’ en ‘span’ elementen.
Traditioneel gezien werden websites vooral opgebouwd met div om aan te houden wat de header, nav, footer, etc is. Wat is het nadeel hiervan?
Het nadeel hiervan is dat dit voor een browser geen semantische betekenis heeft.
Om dit op te lossen zijn er in HTML5 tags toegevoegd die ieder hun eigen betekenis hebben. In het voorbeeld hieronder zie je de HTML5 equivalent van het voorbeeld met non-semantische elementen.
Wat is het verschil tussen Block, inline & inline-block?
- Block elementen krijgen standaard de volledige breedte van het bovenliggende element en worden altijd op een nieuwe regel weergegeven, tenzij de CSS property float wordt toegepast. (div, p, table, form. ul, nav)
- Als er op een regel genoeg ruimte is, worden inline elementen naast elkaar geplaatst. De grootte van een inline element wordt door de inhoud bepaald. De hoogte en breedte van inline elementen zijn niet instelbaar en het is ook niet mogelijk om een margin of padding toe te passen. Elementen zonder ingestelde display property worden door de browser standaard als inline element gezien. (span, a, i, b, strong)
- Het inline-block element is een combinatie van de inline en block elementen. Inline-block elementen kunnen naast elkaar worden weergegeven, maar kunnen ook van een aangepaste breedte en hoogte worden voorzien. Het is met een inline-block ook mogelijk om padding of margin toe te passen. (img, button, select, input)
Wat zijn globale attributen?
Globale attributen zijn attributen die op ieder element kunnen worden toegepast. De bekendste en meest gebruikte globale attributen zijn ‘class’ en ‘id’, maar er zijn er meer.
- hidden:
- tabindex
- contenteditable: als dit attribuut gezet is kan de (tekst)inhoud van een element worden aangepast.
- draggable: dit attribuut maakt het mogelijk om het element te slepen met de muis.
- data-*: deze prefix kan worden gebruikt voor applicatie specifieke data, die gegarandeerd niet conflicteert met HTML eigen attributen.
Wat zijn Embedded inhoud elementen?
Embedded elementen maken het mogelijk om in een zogeheten container externe bronnen weer te geven.
Welke Embedded inhoud elementen zijn er?
- audio/video/source/track: een audio- of videobestand/stream weergeven in de browser. De browser levert hiervoor zelf een implementatie van een player en codec.
- source elementen: zijn subelementen van een audio/video element. Het maakt meerdere bronnen mogelijk, bijvoorbeeld om een video in meerdere videoformaten aan te leveren.
- track elementen: zijn subelementen van een audio/video element: Kan worden gebruikt voor ondertitels.
- canvas: Een bitmap buffer waarin je met een low-level API kunt “tekenen”, of bijvoorbeeld WebGL naar toe kunt renderen.
- object/Embed: embedded content, specifiek bedoeld om een browser plugin (bv. Flash, Java, PDF) controle te geven over het element. Van de 2 is object de meest moderne, en tegenwoordig te prefereren boven embed.
- param elementen: zijn subelementen van object, en worden gebruikt om plugin specifieke informatie (key value pairs) door de geven aan het object element.
- iframe: wordt meestal gebruikt om een andere HTML pagina toe te voegen als onderdeel van een pagina. Wordt soms ook gebruikt voor andere content, bv. Pdf.
Wat is het verschil tussen async vs. defer?
Bij een standaard script block zonder defer of sync attribuut wordt er gewacht met parsen van de HTML tot dat het script gedownload is en volledig gedraaid is. Dit doet de browser omdat Javascript de DOM of CSSOM kan bewerken. Daarom wacht het totdat het script klaar is en gaat daarna pas verder.
Bij async wordt het downloaden van het script parallel aan het parsen van de HTML gedaan, op het moment dat het script volledig is ingeladen wordt het parsen gepauzeerd, dan wordt het script geraaid en vervolgens wordt het parsen afgerond.
Bij defer wordt downloaden van het script ook parallel aan het parsen van de html gedaan, alleen wordt er script uitgevoerd na dat het parsen van de html is afgerond.
Wanneer gebruik je async?
Als het script modulair is en niet afhankelijk is van andere scripts, gebruik dan async.
Wanneer gebruik je defer?
Als het script afhankelijk is van, of een afhankelijkheid is van een ander script, gebruik dan defer.
Wanneer maakt je geen gebruik van defer of async?
Als het script klein is en wordt gebruikt door een async-script, gebruik dan een inline script zonder attributen die boven de async-scripts zijn geplaatst.
De form tag, waarmee een formulier kan worden weergegeven, bestaat uit een aantal attributen. Wat doet de action attribuut?
Verwijst naar de url waarnaar de data wordt verstuurd
De form tag, waarmee een formulier kan worden weergegeven, bestaat uit een aantal attributen. Wat doet de method attribuut?
Omschrijft de HTTP methode die voor het versturen gebruikt wordt
De form tag, waarmee een formulier kan worden weergegeven, bestaat uit een aantal attributen. Wat doet de enctype attribuut?
Geeft aan hoe de browser de data uit het formulier encodeert
Wat is de fieldset tag?
... ...
Om het formulier in logische onderdelen te verdelen. Dit maakt het voor de gebruiker duidelijker en verbeterd de toegankelijk van het formulier.
Wat is het verschil tussen select en datalist?
Datalist is een uitbreiding op het input element en het resultaat lijkt enigszins op select, hier worden de voorgedefinieerde opties echter als suggestie gebruikt, de gebruiker heeft ook de mogelijkheid zelf iets in te vullen.
Wat is de output element?
voorbeeld:
<p>
0
</p>
Output is een semantisch correcte manier om resultaten op basis van invoer van gebruiker te laten zien. Attributen:
- name: Naam waarnaar gerefereerd kan worden binnen het formulier (bv. via een Javascript API)
- for: Hierin kunnen name waarden van form controls worden gespecificeerd waarop het resultaat is gebaseerd.
n.b: De data in een output element zal nooit onderdeel zijn van de formdata tijdens het submitten.
Het button element is qua functionaliteit hetzelfde als input type=“button”. De standaard weergave van de elementen zijn op de meeste platforms hetzelfde.
Waarom zou je button gebruiken ipv input type=”button”?
Button is gemakkelijker te customizen: een button element kan naast tekst namelijk ook HTML bevatten (bijvoorbeeld een plaatje/icon).
Welke form validatie attributen zijn er?
- Required
- Pattern
- Minlength
- Maxlength