Zie de MDN web docs. Laad het font bestand in: @font-face { font-family: "mijnfont"; src: url("fonts/mijnfont.eot"); src: url('fonts/mijnfont.eot?#iefix') format('embedded-opentype'), url("fonts/mijnfont.woff") format("woff"), url("fonts/mijnfont.ttf") format("truetype"), url("fonts/mijnfont.svg#mijnfont") format("svg"); font-weight: normal; font-style: normal; } <div style="font-family:mijnfont;">Hallo!</div>
extra info
  1. Laad het font bestand in: @font-face { font-family: "icons"; src: url("fonts/icons.eot"); src: url('fonts/icons.eot?#iefix') format('embedded-opentype'), url("fonts/icons.woff") format("woff"), url("fonts/icons.ttf") format("truetype"), url("fonts/icons.svg#icons") format("svg"); font-weight: normal; font-style: normal; }
  2. Selecteer het font als de klasse icon- bevat: [class*="icon-"]::before { content: '+'; display: inline-block; font-family: "icons" !important; line-height: 1; position: relative; top: 2px; -webkit-font-smoothing: antialiased; font-smoothing: antialiased; }
  1. Voor zoekmachines en screenreaders: .hide { clip: rect(1px, 1px, 1px, 1px); height: 0; opacity: 0; position: absolute; visibility: hidden; width: 0; }
  2. Geef het karakter een zinvolle naam: .icon-twitter::before { content: "t"; }
  3. Zo voegen we het pictogram toe: <a href="http://www.twitter.com/" class="icon-twitter"> <li class="hide">Twitter</li> </a>
https://cloudfour.com/thinks/seriously-dont-use-icon-fonts/
  • Dyslectici gebruiken soms andere fonts
  • Screenreaders kunnen geen pictogrammen voorlezen
image/svg+xml body header HTTP Request ack syn ack syn ack fin ack fin 8 TCP Segment header TCP Segment header IP Packet Ethernet frame header
  • Een Wifi (WLAN) frame wordt omgezet in een ethernet frame in een router
  • Met connection-keepalive wordt dezelfde tcp connectie gebruikt voor meerdere HTTP
  • Matroesjka poppen
  • Het websocket protocol is weer anders
  • Details: http://web.deu.edu.tr/doc/oreily/networking/firewall/ch06_03.htm
  • TCP is stream-georienteerd, dat mismatched met IP packets
  • UDP is alternatief voor TCP, heeft geen handshake is meestal iets sneller, TCP is handiger 'als er veel connecties zijn'
  • IPv6 is nieuwere variant van IPv4
  • In de applicatie laag wordt naast HTTP ook bijv. MQTT (IoT), TLS/SSL, DNS en POP (email) gebruikt
  • Link laag / Netwerk laag / Transport laag / Applicatie laag
  • HTTPS wordt nog uitgebreid behandeld later, daarin wordt een TLS verbinding tot stand gebracht met daarop een HTTP
POST /adfs/ls/?client-request-id=2f81...mVqaWUQd4GQA1 HTTP/1.1 Host: sts.hhs.nl Connection: keep-alive Content-Length: 75 Pragma: no-cache Cache-Control: no-cache Upgrade-Insecure-Requests: 1 Origin: https://sts.hhs.nl Content-Type: application/x-www-form-urlencoded User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36... Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/... Sec-Fetch-Site: same-origin Sec-Fetch-Mode: navigate Sec-Fetch-User: ?1 Sec-Fetch-Dest: document Referer: https://sts.hhs.nl/adfs/ls/?client-request-id=2f81...mVqaWUQd4GQA1 Accept-Encoding: gzip, deflate, br Accept-Language: en-US,en;q=0.9,nl;q=0.8 Cookie: MSISSignOut=c2lnbm91dENs...IjoxM30= UserName=pvdbosch%40hhs.nl&Password=Voetbal123&AuthMethod=FormsAuthentication
  • Request methode en url
  • HTTP methoden: GET, POST, PUT, DELETE, HEAD, CONNECT, OPTIONS, ...
    • GET hoort niets aan te passen serverside (waarom niet?)
    • PUT en DELETE worden niet zoveel meer gebruikt
    • CONNECT om te switchen naar HTTPS
    • OPTIONS om CORS te gebruiken
  • Request Headers
  • Body
    • De Content-Type bepaald hoe de body geinterpreteerd wordt, volgens de MIME standaard. Voorbeelden: json, xml,
GET hoort niets aan te passen serverside, omdat:
  • Prefetch
  • Bots
  • Caching

Waarom?

  • analytics
  • logging
  • bots

Gevaarlijk: zie dit. Oplossing:

  • Referrer-Policy HTTP header
  • referrer meta tag
De Webplanner.
  1. Ik heb de voorbereiding geheel gedaan
  2. Ik heb de voorbereiding gedeeltelijk gedaan
  3. Ik ben de voorbereiding niet begonnen
  • bootstrap.min.js vs bootstrap.bundle.min.js
  • CSS en JS
  • /bootstrap.min.js vs https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.min.js
Setup hebben jullie al gedaan.
  • Bootstrap hangt af van Popper en jQuery. jQuery zit niet in de bundel!
  • Proxy = tussenpersoon, een CDN kan ook private zijn! CDN = geographisch gedistribueerd netwerk van proxy servers en data centers. Scripts/styles zijn statische content. Alles gaat om performance. Azure CDN / Google Cloud CDN / Amazon Cloudfront
  • De werking van het programma is hetzelfde
  • De grootte van het bestand wordt kleiner
  • Soms: obfuscatie
  • https://github.com/pocketjoso/sudokuJS
  • https://jonassebastianohlsson.com/sudoku/
  • online minifier: https://javascript-minifier.com/
  • https://github.com/jed/140bytes/wiki/Byte-saving-techniques
  • https://stackoverflow.com/questions/4292146/good-resources-for-extreme-minified-javascript-js1k-style
  • source map
  • zet hier de groottes bij in kb
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Created with Inkscape (http://www.inkscape.org/) --> <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="112.57693mm" height="33.582611mm" viewBox="0 0 112.57693 33.58261" version="1.1" id="svg8" inkscape:version="0.92.4 (5da689c313, 2019-01-14)" sodipodi:docname="hhslogo.svg"> <defs id="defs2" /> <sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="2.8" inkscape:cx="213.22378" inkscape:cy="50.406883" inkscape:document-units="mm" inkscape:current-layer="layer1" showgrid="false" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" inkscape:window-width="1920" inkscape:window-height="1147" inkscape:window-x="1042" inkscape:window-y="-8" inkscape:window-maximized="1" /> <metadata id="metadata5"> <rdf:RDF> <cc:Work rdf:about=""> <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> <dc:title></dc:title> </cc:Work> </rdf:RDF> </metadata> <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(-2.2110951,-6.6752815)"> <path inkscape:connector-curvature="0" id="path827-7" style="fill:#9ea700;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.03527778" d="M 44.923937,19.798375 H 43.79914 l -0.707744,2.016059 h 2.413211 l 0.71755,2.127001 h 2.955222 l -3.564115,-9.32159 -1.236485,3.54722 z m 42.371432,-6.79069 h 7.67363 v 1.94702 h -5.05531 v 2.22497 h 4.0894 v 1.89798 h -4.0894 v 2.91249 h 5.10399 l 0.27834,1.94716 h -8.00065 z m -11.093446,8.04965 c 0.883708,0.65458 2.078212,1.21091 3.534479,1.21091 1.145119,0 1.636537,-0.60526 1.636537,-1.309161 0,-0.736139 -0.7366,-1.014379 -1.997075,-1.488689 -2.273654,-0.86719 -3.452283,-1.75066 -3.452283,-3.41947 0,-1.96356 1.341967,-3.30507 4.041775,-3.30507 1.734257,0 3.223333,0.71974 3.845273,1.21059 l -0.982129,1.7508 c -0.638175,-0.52352 -1.897592,-1.01437 -2.863144,-1.01437 -1.128535,0 -1.489075,0.52366 -1.489075,1.12888 0,0.57274 0.589492,0.8508 2.126896,1.47271 1.963562,0.80148 3.321752,1.57057 3.321752,3.51758 0,2.09423 -1.406873,3.38709 -4.352215,3.38709 -1.897943,0 -3.321404,-0.539781 -4.188179,-1.26022 z m -5.218996,-5.51367 c -0.637823,-0.45805 -1.357842,-0.85079 -2.666648,-0.85079 -1.489075,0 -2.421819,1.35805 -2.421819,3.92659 0,2.60145 0.981781,3.64878 2.765073,3.64878 0.670983,0 1.210733,-0.359981 1.587146,-0.70365 v -1.83236 h -2.748492 v -1.898131 h 5.350581 v 4.303221 c -0.703791,0.88371 -1.930752,2.06181 -4.549068,2.06181 -4.335995,0 -5.02285,-2.65095 -5.02285,-5.72685 0,-3.12498 1.243541,-5.72643 5.28461,-5.72643 1.668992,0 2.814108,0.58896 3.648781,1.11248 z m -14.15274,4.270129 -0.785283,-2.094059 c -0.09807,-0.245281 -0.294217,-1.014371 -0.343252,-1.47256 -0.06562,0.605509 -0.32738,1.34165 -0.47484,1.71785 l -0.719667,1.848769 z m -2.928408,1.963591 -0.801865,2.15992 h -2.797882 l 4.319765,-10.92962 h 2.290233 l 4.12327,10.92962 h -2.863498 l -0.768705,-2.15992 z m 52.197001,11.479874 h 2.41371 l 0.0737,0.58099 h -3.1496 v -5.440774 h 0.66216 z m -6.527801,-4.392774 c -0.98178,0 -1.61995,0.72774 -1.61995,2.331504 0,1.64387 0.6544,2.20018 1.80022,2.20018 0.850201,0 1.569861,-0.70349 1.569861,-2.3315 0,-1.554564 -0.58032,-2.200184 -1.750131,-2.200184 z m -0.008,5.080144 c -1.95474,0 -2.274,-1.29287 -2.274,-2.82264 0,-1.570544 0.56409,-2.822514 2.42146,-2.822514 1.938871,0 2.274361,1.17023 2.274361,2.822514 0,1.60376 -0.57326,2.82264 -2.421821,2.82264 z m -7.92657,-5.080144 c -0.98249,0 -1.61996,0.72774 -1.61996,2.331504 0,1.64387 0.65405,2.20018 1.79988,2.20018 0.85055,0 1.57056,-0.70349 1.57056,-2.3315 0,-1.554564 -0.58102,-2.200184 -1.75048,-2.200184 z m -0.008,5.080144 c -1.95545,0 -2.27471,-1.29287 -2.27471,-2.82264 0,-1.570544 0.56444,-2.822514 2.42146,-2.822514 1.93887,0 2.27436,1.17023 2.27436,2.822514 0,1.60376 -0.57256,2.82264 -2.42111,2.82264 z m -9.056495,-0.10638 h -0.654388 v -5.440774 h 0.654401 v 2.315374 h 2.715682 v -2.315374 h 0.65476 v 5.440774 h -0.65526 v -2.54428 h -2.715682 z m -4.393128,-4.638624 c -0.269875,-0.18839 -0.564092,-0.33514 -1.153584,-0.33514 -1.063273,0 -1.693333,0.72774 -1.693333,2.331504 0,1.64387 0.654757,2.20018 1.652765,2.20018 0.53975,0 1.038929,-0.22931 1.357842,-0.5723 l 0.376412,0.44952 c -0.384879,0.36862 -0.891821,0.67124 -1.807634,0.67124 -1.96356,0 -2.233435,-1.29287 -2.233435,-2.82264 0,-1.570544 0.539398,-2.822514 2.478265,-2.822514 0.662868,0 1.104193,0.20436 1.391002,0.41716 z m -10.20939,3.648634 c 0.343255,0.22862 0.86713,0.54791 1.709915,0.54791 0.85866,0 1.202266,-0.43381 1.202266,-0.97317 0,-0.53192 -0.408871,-0.74469 -1.260123,-1.08038 -0.997653,-0.39247 -1.586793,-0.72774 -1.586793,-1.53763 0,-0.907984 0.58914,-1.529894 1.759302,-1.529894 0.817739,0 1.382183,0.33528 1.611489,0.52381 l -0.286808,0.49043 c -0.220488,-0.19611 -0.645938,-0.4662 -1.324681,-0.4662 -0.851252,0 -1.120775,0.44196 -1.120775,0.965314 0,0.4173 0.523168,0.70392 1.333148,1.01494 0.850545,0.33459 1.513768,0.69522 1.513768,1.60307 0,0.97318 -0.605366,1.53817 -1.840793,1.53817 -0.99836,0 -1.579385,-0.29476 -1.938867,-0.54846 z m -6.626225,-4.450784 h 3.304469 v 0.58099 h -2.642307 v 1.660804 h 2.135013 v 0.58098 h -2.135013 v 2.03701 h 2.716038 l 0.09843,0.58099 h -3.476625 z m -4.344461,0.81813 c -0.237064,-0.17142 -0.654402,-0.35112 -1.34126,-0.35112 -0.981779,0 -1.619954,0.72774 -1.619954,2.331504 0,1.64387 0.654754,2.20018 1.79987,2.20018 0.523524,0 1.046692,-0.33528 1.251305,-0.5723 v -1.24368 h -1.439336 v -0.56458 h 2.102205 v 2.01276 c -0.302684,0.3926 -0.891824,0.91626 -2.102205,0.91626 -1.96356,0 -2.274356,-1.29287 -2.274356,-2.82264 0,-1.570544 0.564092,-2.822514 2.421467,-2.822514 0.818089,0 1.284462,0.2376 1.570567,0.42541 z m -9.276646,-0.35112 c -0.981782,0 -1.619957,0.72774 -1.619957,2.331504 0,1.64387 0.654757,2.20018 1.799873,2.20018 0.850549,0 1.570567,-0.70349 1.570567,-2.3315 0,-1.554564 -0.58067,-2.200184 -1.750483,-2.200184 z m -0.0081,5.080144 c -1.955449,0 -2.274359,-1.29287 -2.274359,-2.82264 0,-1.570544 0.564092,-2.822514 2.421115,-2.822514 1.939219,0 2.27471,1.17023 2.27471,2.822514 0,1.60376 -0.57291,2.82264 -2.421466,2.82264 z m -9.056336,-0.10638 h -0.654292 v -5.440774 h 0.654296 v 2.315374 h 2.716107 v -2.315374 h 0.654439 v 5.440774 h -0.654539 v -2.54428 h -2.716107 z" sodipodi:nodetypes="cccccccccccccccccccccccsscssccsscsscccsssccccccsssccccccccccccccccccccccccssssssssssssssssssssccccccccccccccsssccssscccsscssccsscssccccccccccccccccsssccccccsssccssssssssssccccccccccccc" /> <path inkscape:connector-curvature="0" id="path827-9" style="fill:#283846;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.03527778" d="m 16.376062,13.031785 h 4.412333 v 1.11968 H 17.8814 v 1.27935 h 2.351794 v 1.09128 H 17.8814 v 1.67471 h 2.935253 l 0.159985,1.11954 h -4.600576 z m -6.303162,5.08028 h 0.884425 c 0.733806,0 1.382853,-0.5267 1.382853,-1.99443 0,-1.40173 -0.498704,-1.88158 -1.524102,-1.88158 H 10.0729 Z M 8.5864111,13.031785 H 10.91006 c 2.465027,0 2.926143,1.24177 2.926143,3.14236 0,1.86267 -0.771701,3.1422 -3.076487,3.1422 H 8.5864111 Z m 29.7160259,10.92387 h 2.817389 l 3.859496,-11.03465 h -2.347383 z m -8.947818,0.03291 h -2.585191 v -10.92934 h 2.585191 v 4.23746 h 3.845031 v -4.23746 h 2.584908 v 10.92934 H 33.19965 v -4.63074 h -3.845031 v 4.63074" sodipodi:nodetypes="ccccccccccccccssscccssscccccccccccccccccccc" /> </g> </svg> <svg xmlns="http://www.w3.org/2000/svg" width="425.488" height="126.928" viewBox="0 0 112.577 33.583" xmlns:v="https://vecta.io/nano"><path d="M42.713 13.123h-1.125l-.708 2.016h2.413l.718 2.127h2.955l-3.564-9.322-1.236 3.547zm42.37-6.79h7.674V8.28h-5.055v2.225h4.09v1.898h-4.09v2.912h5.104l.278 1.947h-8zm-11.093 8.05c.884.655 2.078 1.21 3.534 1.21 1.145 0 1.637-.605 1.637-1.31 0-.736-.737-1.014-1.997-1.49-2.274-.867-3.452-1.75-3.452-3.42 0-1.964 1.342-3.305 4.042-3.305 1.734 0 3.223.72 3.845 1.21l-.982 1.75c-.638-.524-1.898-1.014-2.863-1.014-1.13 0-1.49.524-1.49 1.13 0 .573.59.85 2.127 1.473 1.964.8 3.322 1.57 3.322 3.518 0 2.094-1.407 3.387-4.352 3.387-1.898 0-3.32-.54-4.188-1.26zm-5.22-5.514c-.638-.458-1.358-.85-2.667-.85-1.49 0-2.422 1.358-2.422 3.927 0 2.6.982 3.65 2.765 3.65.67 0 1.21-.36 1.587-.704v-1.832h-2.748V11.16h5.35v4.303c-.704.884-1.93 2.062-4.55 2.062-4.336 0-5.023-2.65-5.023-5.727 0-3.125 1.244-5.726 5.285-5.726 1.67 0 2.814.59 3.65 1.112zM54.62 13.14l-.785-2.094c-.098-.245-.294-1.014-.343-1.473-.066.606-.327 1.342-.475 1.718l-.72 1.85zm-2.928 1.964l-.802 2.16H48.09l4.32-10.93h2.3l4.123 10.93H55.96l-.77-2.16zm52.197 11.48h2.414l.074.58h-3.15v-5.44h.662zM97.36 22.19c-.982 0-1.62.728-1.62 2.332 0 1.644.654 2.2 1.8 2.2.85 0 1.57-.703 1.57-2.33 0-1.555-.58-2.2-1.75-2.2zm-.008 5.08c-1.955 0-2.274-1.293-2.274-2.823 0-1.57.564-2.823 2.42-2.823 1.94 0 2.274 1.17 2.274 2.823 0 1.604-.573 2.823-2.422 2.823zm-7.927-5.08c-.982 0-1.62.728-1.62 2.332 0 1.644.654 2.2 1.8 2.2.85 0 1.57-.703 1.57-2.33 0-1.555-.58-2.2-1.75-2.2zm-.008 5.08c-1.955 0-2.275-1.293-2.275-2.823 0-1.57.564-2.823 2.42-2.823 1.94 0 2.274 1.17 2.274 2.823 0 1.604-.573 2.823-2.42 2.823zm-9.056-.106h-.654v-5.44h.654v2.315h2.716v-2.315h.655v5.44h-.655V24.62H80.36zm-4.393-4.64c-.27-.188-.564-.335-1.154-.335-1.063 0-1.693.728-1.693 2.332 0 1.644.655 2.2 1.653 2.2.54 0 1.04-.23 1.358-.572l.376.45c-.385.37-.892.67-1.808.67-1.964 0-2.233-1.293-2.233-2.823 0-1.57.54-2.823 2.478-2.823.663 0 1.104.204 1.39.417zm-10.21 3.65c.343.23.867.548 1.7.548.86 0 1.202-.434 1.202-.973 0-.532-.41-.745-1.26-1.08-.998-.392-1.587-.728-1.587-1.538 0-.908.59-1.53 1.76-1.53.818 0 1.382.335 1.61.524l-.287.5c-.22-.196-.646-.466-1.325-.466-.85 0-1.12.442-1.12.965 0 .417.523.704 1.333 1.015.85.335 1.514.695 1.514 1.603 0 .973-.605 1.538-1.84 1.538-.998 0-1.58-.295-1.94-.548zm-6.626-4.45h3.304v.58h-2.642v1.66h2.135v.58h-2.135v2.037H62.5l.098.58h-3.477zm-4.344.818c-.237-.17-.654-.35-1.34-.35-.982 0-1.62.728-1.62 2.332 0 1.644.655 2.2 1.8 2.2.524 0 1.047-.335 1.25-.572v-1.244h-1.44v-.565h2.102v2.013c-.303.393-.892.916-2.102.916-1.964 0-2.274-1.293-2.274-2.823 0-1.57.564-2.823 2.42-2.823.818 0 1.284.238 1.57.425zm-9.277-.35c-.982 0-1.62.728-1.62 2.332 0 1.644.655 2.2 1.8 2.2.85 0 1.57-.703 1.57-2.33 0-1.555-.58-2.2-1.75-2.2zm-.008 5.08c-1.955 0-2.274-1.293-2.274-2.823 0-1.57.564-2.823 2.42-2.823 1.94 0 2.275 1.17 2.275 2.823 0 1.604-.573 2.823-2.42 2.823zm-9.056-.106h-.654v-5.44h.654v2.315h2.716v-2.315h.654v5.44h-.655V24.62h-2.716z" fill="#9ea700"/><path d="M14.165 6.357h4.412v1.12H15.67v1.28h2.352v1.09H15.67v1.675h2.935l.16 1.12h-4.6zm-6.303 5.08h.884c.734 0 1.383-.527 1.383-1.994 0-1.402-.5-1.882-1.524-1.882h-.743zm-1.486-5.08H8.7c2.465 0 2.926 1.242 2.926 3.142 0 1.863-.772 3.142-3.076 3.142H6.375zM36.09 17.28h2.817l3.86-11.035H40.42zm-8.948.033h-2.585V6.384h2.585v4.237h3.845V6.384h2.585v10.93H30.99v-4.63h-3.845v4.63" fill="#283846"/></svg>

Volgorde (cascading order):

  • User Agent stylesheet
  • Extern: <link ...> of @import ...
  • Embedded: <style>...</style>
  • Inline: <p style="...">

Specificiteit:

  • De selector met de meeste ID selectors gaat voor, bij gelijkspel:
  • de selector met de meeste [(pseudo-)class selectors + attribuut selectors] gaat voor, bij gelijkspel:
  • de selector met de meeste (pseudo-)element selectors gaat voor, bij gelijkspel:
  • de laatst-gedefineerde stijl gaat voor.

Dit is een 'specificiteit calculator'.

Wat voor soort frameworks zijn er?

  • Front-end en back-end is scheiding op basis van seperation of concerns
  • Vooruitblik 3-lagen architectuur: presentatie laag, applicatie laag, database laag
  • Client-side en server-side is fysieke scheiding. Server-side frameworks genereren HTML.
  • Een puur CSS / CSS + JS / gedeeltelijk server-side framework.

Front-end frameworks/technologieen:

Waarom? Leesbare onderhoudbare code, responsiveness. Soms: herbruikbaarheid componenten.

  • WPFW: FW = framework, normaal is de afkorting WF = web framework
  • Misschien is dit nu hocus pocus, later bekijken we deze exacte slide nog een keer, maar dan in de les CSHTML of in de les architectuur
  • Context: wat is er nog meer?
  • Technologieen breeder dan framework
  • Soms staat Bootstrap niet in het lijstje tussen de front-end frameworks, typ "back end frameworks" in Google in en krijg Bootstrap
  • Zo min mogelijk DOM manipulaties
  • Bootstrap door Twitter bedacht, React door Facebook. Geschreven in SASS (Syntactically Awesome Style Sheets)
  • Bootstrap wordt gebruikt door een op de vijf webistes.
  • Angular door Google
  • Transpileren
  • Vooral niet functionele systeemeisen.

Probleem:

Zie ook dit.

  • Mobile-first
  • HHS timetable
  • 4K schermen

Oplossingen:

  • CSS eenheden: absoluut (cm, in, px, pt) vs relatief (em, vw, %)
  • Viewport: <meta name="viewport" content="width=device-width, initial-scale=1.0">
  • Flexbox
  • Media Queries: in CSS @media only screen and (max-width: 600px) { body { background-color: lightblue; } } of bij het laden van CSS <link rel="stylesheet" media="screen and (min-width: 900px)" href="widescreen.css"> <link rel="stylesheet" media="screen and (max-width: 600px)" href="smallscreen.css"> Zie ook light-level en inverted-colors en scripting.
  • Bootstrap, of een ander front-end framework
  • Test verschillende groottes met de developer tools!
  • Een responsive layout
  • Extra voor-gedefinieerde componenten
  • Syntactic sugar: korte namen
  • Content: tabellen, code, figuren met onderschriften
  • Layout vs design: een layout beschrijft hoe de onderdelen worden gepositioneerd
  • navbars, modals
  • Dit worden 'utitilies' genoemd in Bootstrap

We kennen al:

  • de CSS stijl eigenschap position
  • de CSS stijl eigenschap display: grid, flexbox

In bootstrap:

  • De container zorgt voor padding en voor een 'vaste' breedte, gecentered.
  • Het grid-systeem met row en col-..-.
  • Zie deze tabel.
  • Voor een consistente layout is het wel handig overal Bootstrap te gebruiken.

Niet zelf het wiel opnieuw uitvinden!

Houd continu rekening met slechtzienden:

  • gebruik semantische HTML elementen
  • gebruik headers
  • aria-attributen
  • alternatieven voor iconen/plaatjes
  • met Javascript en setTimeout?
  • SMIL
    • Although Chrome 45 deprecated SMIL in favor of CSS animations and Web animations, the Chrome developers have since suspended that deprecation.
    • Edge tot 2020 geen ondersteuning, nu gedeeltelijk
    • Polyfillers als fakesmile.

welk attribuut is ingesteld voor child 3?

  1. padding: 10px;
  2. margin: 10px;
  3. border-width: 10px;
  4. margin: -10px;

welk attribuut is ingesteld voor child 2?

  1. padding: 10px;
  2. margin: 10px;
  3. border-width: 10px;
  4. margin: -10px;

Stel: tekst past niet in de ruimte die beschikbaar is voor een div. Hoe maak je div scrollable?

  1. border-width: 10px;
  2. margin: 10px;
  3. padding: 10px;
  4. overflow: auto;

Hoe wordt div met class parent op een telefoon met normale oriëntatie en 400px breed getoond?

  1. Met witte achtergrond.
  2. Met default achtergrond.
  3. Met blauwe achtergrond.
  4. Dat kan met deze gegevens niet worden bepaald.

Hoe wordt div met class parent op een gekantelde telefoon en 400px breed getoond?

  1. Met witte achtergrond.
  2. Met default achtergrond.
  3. Met blauwe achtergrond.
  4. Dat kan met deze gegevens niet worden bepaald.

Wat is het effect van het opnemen van een link in je HTML naar 'normalize.css'?

  1. HTML wordt in alle browsers op alle apparaten gelijk getoond
  2. Alle plaatjes worden even groot afgebeeld.
  3. De verhoudingen van plaatjes worden genormaliseerd.
  4. HTML wordt kleiner gemaakt, zodat het helemaal wordt getoond

Welke class in 12-koloms-framework (met col-1 t/m col-12 en row) is van toepassing op child 1?

  1. col-2
  2. col-8
  3. row
  4. col-12

Welke class in 12-koloms-framework is van toepassing op de parent van child 1 t/m 3?

  1. col-2
  2. col-8
  3. row
  4. col-12

Welke class in Bootstrap is op een normale telefoon toegepast op de parent van child 1 t/m 3?

  1. row
  2. col-md
  3. col-sm
  4. col-xs

Welke class in Bootstrap is op een normale telefoon toegepast op div met tekst child 1?

  1. col-xs-2
  2. col-md-2
  3. col-sm-2
  4. col-lg-2

Wat is het effect van het minimized opslaan van CSS of JavaScript?

  1. Dat het bestand wordt gezipped.
  2. Dat het veel moeilijker leesbaar wordt.
  3. Dat het bestand met CSS of JavaScript groter wordt.
  4. Dat file met CSS/JavaScript meer downloadtijd nodig heeft.

Hoe refereer je in HTML aan een minimized version van je CSS-file /css/boostrap.css?

  1. <link rel="stylesheet" href="/css/bootstrap.min.css">
  2. <link rel="minimized" href="/css/boostrap.css">
  3. <link rel="minimized" href="/css/bootstrap.min.css">
  4. <link rel="stylesheet" href="/css/minimized.css">

Wat ontbreekt er in de volgende code in de body (lees classes als verwijzing naar Bootstrap)?

  1. De verwijzing in <body> naar Bootstrap.
  2. <link rel="minimized" href="/css/boostrap.css">
  3. div met class 'container' (in de DOM direct onder <body>.
  4. <link rel="stylesheet" href="/css/minimized.css">

Hoe zorg ik dat plaatje hieronder zich m.b.v. Bootstrap responsive aanpast aan de breedte?

  1. Door aan <img...> 'style="max-width: 400px;"' toe te voegen.
  2. Door aan <img...> 'class="img-responsive"' toe te voegen.
  3. Door aan <img...> 'style="display: flex;"' toe te voegen.
  4. Door aan <img...> 'style="height: auto;" toe te voegen.

Hoe zorg ik dat alle tekst hieronder met één wijziging rechts wordt uitgelijnd?

  1. Door '<div class="col-md-6 text-right">' uit te breiden.
  2. Door '<h1 class="text-right">' uit te breiden.
  3. Door aan '<div...>' 'class="text-right"' toe te voegen.
  4. Door '<h3 class="text-right">' uit te breiden.

Als je div met class 'eigen-opmaak' op wilt maken, welk attribuut definieer je dan als eerste?

  1. background-color
  2. De volgorde van attributen maakt nauwelijks iets uit.
  3. margin en padding
  4. font styles

Wat is de achtergrondkleur van een div met class 'tweede'?

  1. black
  2. red
  3. yellow
  4. blue

Wat is de achtergrondkleur van een div met class 'tweede'?

  1. Dat kan op basis van deze code niet worden bepaald.
  2. white
  3. De default color.
  4. red

In welke file leg je opmaak van de div met class 'eigen-opmaak' vast (kies het beste antwoord)?

  1. In de file 'css/bootstrap.css'
  2. In de file 'css/bootstrap.min.css'.
  3. In een eigen file (bijv. 'style.css') in directory 'css'.
  4. in HTML-file in head met tussen tags voor '<style>'.

Als je Bootstrap-classes wilt overloaden in style.css. In welke volgorde neem je <link ...> op?

  1. <link href="style.css"> na <link href="bootstrap.css">.
  2. <link href="bootstrap.css"> na <link href="style.css">.
  3. De volgorde maakt niet uit.
  4. Je kunt classes in bootstrap.css niet overloaden.

Welke extra file heb je nodig om Modal Popup van Bootstrap te kunnen tonen?

  1. Bootstrap maakt daarvoor gebruik van jquery.min.js.
  2. De css van Bootstrap is noodzakelijk.
  3. Je moet zelf nog een regel code schrijven voor modal popup.
  4. Er zijn geen extra files nodig om deze popup te tonen.

De Webplanner van de Haagse Hogeschool is een goed voorbeeld van een erg slechte front-end. Herontwerp de website eerst in een wireframe, en daarna in Bootstrap.

Wat is er bijvoorbeeld allemaal mis?

  • de website is nu niet responsive (ooit op je mobiel het rooster proberen te bekijken?). Gebruik de Chrome DevTools om de website te bekijken vanaf je mobiel.
  • de website vrijwel onmogelijk met een screenreader te gebruiken.
  • het stappenplan in de gele balk doet waar hij zin in heeft
  • het ontwerp is onnodig ingewikkeld: waarom zit er onder de gele tips een slider waarmee je de grootte van de banner kunt aanpassen? Het aanmaken van een filter (groene knop naast "Geen filter toegepast") is onnodig ingewikkeld.

Gebruik namaak-data als voorbeeld in de website, dus je hoeft niet gebruik te maken van de API van WebPlanner. Maak gebruik van een container, rows met cols en zorg dat er van de volgende componenten tenminste 1 wordt gebruikt:

  • ...

Uitdagende mogelijkheden tot uitbreiding...

Volgende week: (eindelijk) C#