<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Webdevelopment]]></title><description><![CDATA[Obsidian digital garden]]></description><link>http://github.com/dylang/node-rss</link><image><url>site-lib/media/favicon.png</url><title>Webdevelopment</title><link></link></image><generator>Webpage HTML Export plugin for Obsidian</generator><lastBuildDate>Thu, 28 Aug 2025 12:07:02 GMT</lastBuildDate><atom:link href="site-lib/rss.xml" rel="self" type="application/rss+xml"/><pubDate>Thu, 28 Aug 2025 12:06:48 GMT</pubDate><ttl>60</ttl><dc:creator></dc:creator><item><title><![CDATA[2.2 - Hoe ziet een HTML-bestand eruit]]></title><description><![CDATA[Voordat we beginnen met het maken van webpagina’s, moeten we begrijpen hoe een HTML-bestand is opgebouwd. HTML-documenten volgen een gestructureerd format, dat ervoor zorgt dat een browser correct interpreteert hoe een website eruit moet zien.✅ Wat bevat een HTML-bestand?
✔ Een documenttype (&lt;!DOCTYPE html&gt;) → Dit vertelt de browser welke HTML-versie wordt gebruikt.
✔ Een &lt;html&gt;-element → Hiermee wordt het hele document gedefinieerd.
✔ Een &lt;head&gt;-sectie → Bevat metadata, titels en links naar stijlen of scripts.
✔ Een &lt;body&gt;-sectie → Bevat alle zichtbare content van de webpagina.🚀 Een HTML-bestand zorgt ervoor dat een browser begrijpt hoe een webpagina wordt weergegeven!Hier is een voorbeeld van een eenvoudig HTML-bestand:&lt;!DOCTYPE html&gt;
&lt;html lang="nl"&gt;
&lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;Mijn eerste HTML-pagina&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt; &lt;h1&gt;Welkom op mijn website!&lt;/h1&gt; &lt;p&gt;Dit is mijn eerste HTML-pagina.&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;
🚀 Stap voor stap uitleg van de tags:
&lt;!DOCTYPE html&gt; → Vertelt de browser dat het document HTML5 gebruikt. &lt;html lang="nl"&gt; → Begint het HTML-document en stelt de taal in op Nederlands. &lt;head&gt; → Bevat informatie over de webpagina, zoals de titel en metadata. &lt;meta charset="UTF-8"&gt; → Zorgt ervoor dat alle tekens correct worden weergegeven. &lt;title&gt; → Geeft de pagina een titel (zichtbaar in de browser-tab). &lt;body&gt; → Bevat alle zichtbare inhoud van de webpagina. &lt;h1&gt; → Een koptekst, meestal gebruikt als hoofdtitel van een pagina. &lt;p&gt; → Een paragraaf, gebruikt om tekst te structureren.
🚀 Door deze structuur zal de browser de pagina correct weergeven!✅ Stappen om een HTML-bestand te maken en op te slaan:
✔ Open PHPStorm, Notepad, VS Code of een andere teksteditor.
✔ Typ de HTML-code en klik op Opslaan als….
✔ Kies een bestandsnaam en zorg ervoor dat de extensie .html is.
✔ Open het bestand in een webbrowser om de pagina te bekijken.🚀 Een HTML-bestand moet altijd een .html-extensie hebben om correct te functioneren!✅ Een HTML-bestand heeft een duidelijke structuur met een &lt;head&gt; en &lt;body&gt;-sectie.
✅ De &lt;!DOCTYPE html&gt;-tag vertelt de browser dat HTML5 wordt gebruikt.
✅ HTML-bestanden moeten worden opgeslagen met de .html-extensie om correct te werken.]]></description><link>2.-html/2.2-hoe-ziet-een-html-bestand-eruit.html</link><guid isPermaLink="false">2. HTML/2.2 - Hoe ziet een HTML-bestand eruit.md</guid><pubDate>Mon, 07 Jul 2025 10:41:26 GMT</pubDate></item><item><title><![CDATA[Webdevelopment]]></title><description><![CDATA[Webdevelopment in 5A&D]]></description><link>index.html</link><guid isPermaLink="false">index.md</guid><pubDate>Mon, 07 Jul 2025 10:39:54 GMT</pubDate><enclosure url="." length="0" type="false"/><content:encoded>&lt;figure&gt;&lt;img src=&quot;.&quot;&gt;&lt;/figure&gt;</content:encoded></item><item><title><![CDATA[8.13 - Contactformulier]]></title><description><![CDATA[Een contactpagina laat bezoekers toe om je rechtstreeks te contacteren via je website. In deze paragraaf bouwen we een professioneel uitziend contactformulier met HTML en Bootstrap. We verwerken de gegevens met PHP, en gebruiken eventueel JavaScript voor extra gebruiksgemak (zoals foutmeldingen tonen zonder opnieuw te laden).contact.php:&lt;!DOCTYPE html&gt;
&lt;html lang="nl"&gt;
&lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;Contacteer ons&lt;/title&gt; &lt;link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"&gt;
&lt;/head&gt;
&lt;body class="container py-5"&gt; &lt;h2&gt;Contactformulier&lt;/h2&gt; &lt;form method="POST" action="verwerk_contact.php" novalidate&gt; &lt;div class="mb-3"&gt; &lt;label for="naam" class="form-label"&gt;Naam&lt;/label&gt; &lt;input type="text" class="form-control" id="naam" name="naam" required&gt; &lt;/div&gt; &lt;div class="mb-3"&gt; &lt;label for="email" class="form-label"&gt;E-mailadres&lt;/label&gt; &lt;input type="email" class="form-control" id="email" name="email" required&gt; &lt;/div&gt; &lt;div class="mb-3"&gt; &lt;label for="bericht" class="form-label"&gt;Bericht&lt;/label&gt; &lt;textarea class="form-control" id="bericht" name="bericht" rows="5" required&gt;&lt;/textarea&gt; &lt;/div&gt; &lt;button type="submit" class="btn btn-primary"&gt;Verzenden&lt;/button&gt; &lt;/form&gt; &lt;/body&gt;
&lt;/html&gt;
📌 Met novalidate schakel je de standaard HTML-validatie uit als je liever JavaScript of PHP gebruikt om foutmeldingen te tonen.verwerk_contact.php:&lt;?php
if ($_SERVER["REQUEST_METHOD"] === "POST") { $naam = trim($_POST["naam"]); $email = trim($_POST["email"]); $bericht = trim($_POST["bericht"]); $fouten = []; if (empty($naam)) { $fouten[] = "Naam is verplicht."; } if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) { $fouten[] = "Een geldig e-mailadres is verplicht."; } if (empty($bericht)) { $fouten[] = "Bericht mag niet leeg zijn."; } if (empty($fouten)) { // Hier kun je het bericht opslaan in een database, of versturen via mail echo "&lt;div class='alert alert-success'&gt;Bedankt voor je bericht, $naam!&lt;/div&gt;"; } else { foreach ($fouten as $fout) { echo "&lt;div class='alert alert-danger'&gt;$fout&lt;/div&gt;"; } echo "&lt;a href='contact.php' class='btn btn-secondary mt-3'&gt;← Terug&lt;/a&gt;"; }
}
?&gt;
Wil je realtime waarschuwingen tonen zonder de pagina te herladen? Voeg dan een beetje JavaScript toe onderaan je contactpagina:&lt;script&gt; const form = document.querySelector("form"); form.addEventListener("submit", function(e) { const naam = document.getElementById("naam").value.trim(); const email = document.getElementById("email").value.trim(); const bericht = document.getElementById("bericht").value.trim(); let fouten = []; if (naam === "") fouten.push("Naam is verplicht."); if (!email.match(/^[^@]+@[^@]+\.[^@]+$/)) fouten.push("Ongeldig e-mailadres."); if (bericht.length &lt; 5) fouten.push("Bericht is te kort."); if (fouten.length &gt; 0) { e.preventDefault(); alert(fouten.join("\n")); } });
&lt;/script&gt;
💡 Dit voorkomt niet dat je alsnog server-side controle nodig hebt — JavaScript is een extra hulpmiddel, geen beveiliging.Met mail() in PHP kun je gegevens laten verzenden naar een e-mailadres:$to = "jouw@email.be";
$subject = "Contactformulier van $naam";
$body = "Naam: $naam\nEmail: $email\n\nBericht:\n$bericht"; mail($to, $subject, $body);
⚠️ Houd er rekening mee dat mail() lokaal via XAMPP niet standaard werkt. Op een echte webserver of met een SMTP-plugin lukt het wel.✅ Maak een formulier met Bootstrap voor een strakke look
✅ Gebruik POST om gegevens naar een PHP-bestand te sturen
✅ Valideer invoer met PHP én eventueel JavaScript
✅ Toon foutmeldingen of bevestigingen met alerts
✅ Optioneel: sla gegevens op of verstuur ze per mail]]></description><link>8.-databases/8.13-contactformulier.html</link><guid isPermaLink="false">8. Databases/8.13 - Contactformulier.md</guid><pubDate>Sun, 22 Jun 2025 06:36:10 GMT</pubDate></item><item><title><![CDATA[8.11 - Loginformulier]]></title><description><![CDATA[Na het registreren van een gebruiker willen we die ook de mogelijkheid geven om in te loggen. In deze paragraaf bouwen we een eenvoudige, veilige loginpagina waarbij de gebruiker zich aanmeldt met zijn of haar e-mailadres en wachtwoord.In login.php:&lt;!DOCTYPE html&gt;
&lt;html lang="nl"&gt;
&lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;Inloggen&lt;/title&gt; &lt;link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"&gt;
&lt;/head&gt;
&lt;body class="container py-5"&gt; &lt;h2&gt;Inloggen&lt;/h2&gt; &lt;form method="POST" action="login_verwerk.php" class="w-50"&gt; &lt;div class="mb-3"&gt; &lt;label for="email" class="form-label"&gt;E-mailadres&lt;/label&gt; &lt;input type="email" class="form-control" name="email" required&gt; &lt;/div&gt; &lt;div class="mb-3"&gt; &lt;label for="wachtwoord" class="form-label"&gt;Wachtwoord&lt;/label&gt; &lt;input type="password" class="form-control" name="wachtwoord" required&gt; &lt;/div&gt; &lt;button type="submit" class="btn btn-primary"&gt;Inloggen&lt;/button&gt;
&lt;/form&gt; &lt;/body&gt;
&lt;/html&gt;
In login_verwerk.php:&lt;?php
include 'config.php';
session_start(); $conn = new mysqli($servername, $username, $password, $dbname);
if ($conn-&gt;connect_error) { die("Verbinding mislukt: " . $conn-&gt;connect_error);
} if ($_SERVER["REQUEST_METHOD"] === "POST") { $email = trim($_POST["email"]); $wachtwoord = $_POST["wachtwoord"]; $stmt = $conn-&gt;prepare("SELECT id, wachtwoord FROM gebruikers WHERE email = ?"); $stmt-&gt;bind_param("s", $email); $stmt-&gt;execute(); $resultaat = $stmt-&gt;get_result(); if ($resultaat-&gt;num_rows === 1) { $gebruiker = $resultaat-&gt;fetch_assoc(); if (password_verify($wachtwoord, $gebruiker["wachtwoord"])) { $_SESSION["gebruiker_id"] = $gebruiker["id"]; header("Location: dashboard.php"); exit(); } else { echo "❌ Fout wachtwoord."; } } else { echo "❌ Geen gebruiker gevonden met dit e-mailadres."; } $stmt-&gt;close();
}
$conn-&gt;close();
?&gt; PHP zoekt naar een gebruiker met het opgegeven e-mailadres Indien gevonden, vergelijkt password_verify() het ingevoerde wachtwoord met de versleutelde versie uit de database Als het klopt, wordt er een sessie gestart en doorverwezen naar dashboard.php Bij een mismatch of onbekende gebruiker toon je een foutmelding In elke pagina die enkel toegankelijk mag zijn voor ingelogde gebruikers (zoals dashboard.php) plaats je bovenaan:&lt;?php
session_start();
if (!isset($_SESSION["gebruiker_id"])) { header("Location: login.php"); exit();
}
?&gt;
💡 Daarmee voorkom je dat niet-ingelogde gebruikers zomaar op je pagina kunnen komen.✅ Het loginformulier stuurt gegevens via POST naar login_verwerk.php
✅ Met password_verify() controleer je het wachtwoord
✅ Een succesvolle login start een sessie via $_SESSION
✅ Je beveiligt pagina's met een controle aan het begin
✅ Sessiegegevens blijven behouden totdat de gebruiker uitlogt]]></description><link>8.-databases/8.11-loginformulier.html</link><guid isPermaLink="false">8. Databases/8.11 - Loginformulier.md</guid><pubDate>Sun, 22 Jun 2025 06:34:59 GMT</pubDate></item><item><title><![CDATA[8.10 - Registratieformulier]]></title><description><![CDATA[In deze paragraaf bouwen we een registratiesysteem waarin een bezoeker een account kan aanmaken met een gebruikersnaam (e-mailadres) en wachtwoord. Zodra de gebruiker zich registreert, worden die gegevens opgeslagen in een MySQL-tabel.
💡 De loginpagina komt in de volgende paragraaf. Hier focussen we enkel op de registratie en opslag van gegevens. ### 8.10.1 – Database voorbereidenMaak in phpMyAdmin een nieuwe tabel aan binnen je database, bijvoorbeeld gebruikers, met deze kolommen:👉 Let op: het wachtwoord moet lang genoeg kunnen zijn, want we gaan het versleutelen (hashen) voor extra veiligheid.SQL-versie:CREATE TABLE gebruikers ( id INT AUTO_INCREMENT PRIMARY KEY, email VARCHAR(150) UNIQUE, wachtwoord VARCHAR(255) NOT NULL
);
In registreer.php:&lt;!DOCTYPE html&gt;
&lt;html lang="nl"&gt;
&lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;Registreren&lt;/title&gt; &lt;link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"&gt;
&lt;/head&gt;
&lt;body class="container py-5"&gt; &lt;h2&gt;Registratieformulier&lt;/h2&gt; &lt;form method="POST" action="registreer_verwerk.php" class="w-50"&gt; &lt;div class="mb-3"&gt; &lt;label for="email" class="form-label"&gt;E-mailadres&lt;/label&gt; &lt;input type="email" class="form-control" id="email" name="email" required&gt; &lt;/div&gt; &lt;div class="mb-3"&gt; &lt;label for="wachtwoord" class="form-label"&gt;Wachtwoord&lt;/label&gt; &lt;input type="password" class="form-control" id="wachtwoord" name="wachtwoord" required&gt; &lt;/div&gt; &lt;button type="submit" class="btn btn-primary"&gt;Registreren&lt;/button&gt;
&lt;/form&gt; &lt;/body&gt;
&lt;/html&gt;
In registreer_verwerk.php:&lt;?php
include 'config.php'; $conn = new mysqli($servername, $username, $password, $dbname);
if ($conn-&gt;connect_error) { die("Verbinding mislukt: " . $conn-&gt;connect_error);
} if ($_SERVER["REQUEST_METHOD"] === "POST") { $email = trim($_POST["email"]); $wachtwoord = trim($_POST["wachtwoord"]); // Eenvoudige validatie if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { die("Ongeldig e-mailadres."); } if (strlen($wachtwoord) &lt; 6) { die("Wachtwoord moet minstens 6 tekens lang zijn."); } // Wachtwoord veilig versleutelen $hashedPassword = password_hash($wachtwoord, PASSWORD_DEFAULT); // Gebruiker opslaan $stmt = $conn-&gt;prepare("INSERT INTO gebruikers (email, wachtwoord) VALUES (?, ?)"); $stmt-&gt;bind_param("ss", $email, $hashedPassword); if ($stmt-&gt;execute()) { echo "✅ Registratie gelukt. Je kunt nu inloggen."; } else { if ($conn-&gt;errno === 1062) { echo "⚠️ Dit e-mailadres is al geregistreerd."; } else { echo "❌ Fout bij registratie: " . $conn-&gt;error; } } $stmt-&gt;close();
}
$conn-&gt;close();
?&gt; De gegevens worden uit het formulier gehaald via $_POST trim() verwijdert spaties voor en na de invoer Het e-mailadres wordt gevalideerd Het wachtwoord wordt gehasht met password_hash() zodat het niet leesbaar wordt opgeslagen Met een prepared statement wordt het account ingevoerd in de database Dubbele registraties (zelfde e-mail) worden netjes opgevangen via foutcode 1062 ✅ Je maakt een formulier met email en password
✅ In PHP vang je de gegevens op en valideer je ze
✅ Wachtwoorden worden veilig versleuteld
✅ De gegevens worden opgeslagen in een MySQL-tabel via prepare()
✅ Je geeft feedback als het gelukt is (of niet)]]></description><link>8.-databases/8.10-registratieformulier.html</link><guid isPermaLink="false">8. Databases/8.10 - Registratieformulier.md</guid><pubDate>Sun, 22 Jun 2025 06:33:55 GMT</pubDate></item><item><title><![CDATA[8.8 - Data bewerken en verwijderen]]></title><description><![CDATA[Tot nu toe hebben we gegevens kunnen toevoegen en bekijken, maar wat als je per ongeluk iets fout hebt ingevoerd, of een record wil verwijderen? In deze paragraaf leer je hoe je:
Een specifieke rij uit de database verwijdert Een rij bewerkt en bijwerkt Dit doet op een veilige en overzichtelijke manier Een eenvoudige manier om gegevens te verwijderen is door op een link te klikken die het id van het record meegeeft:echo '&lt;a href="verwijder.php?id=' . $row["id"] . '" class="btn btn-danger btn-sm"&gt;Verwijder&lt;/a&gt;';
&lt;?php
include 'config.php'; if (isset($_GET["id"])) { $id = $_GET["id"]; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn-&gt;connect_error) { die("Verbinding mislukt: " . $conn-&gt;connect_error); } $stmt = $conn-&gt;prepare("DELETE FROM leerlingen WHERE id = ?"); $stmt-&gt;bind_param("i", $id); if ($stmt-&gt;execute()) { echo "Leerling verwijderd."; } else { echo "Fout bij verwijderen."; } $conn-&gt;close();
}
?&gt;
We splitsen dit op in twee pagina's:&lt;?php
include 'config.php'; if (isset($_GET["id"])) { $id = $_GET["id"]; $conn = new mysqli($servername, $username, $password, $dbname); $stmt = $conn-&gt;prepare("SELECT naam, email FROM leerlingen WHERE id = ?"); $stmt-&gt;bind_param("i", $id); $stmt-&gt;execute(); $result = $stmt-&gt;get_result(); $data = $result-&gt;fetch_assoc();
}
?&gt;
&lt;form method="POST" action="update.php"&gt; &lt;input type="hidden" name="id" value="&lt;?php echo $id; ?&gt;"&gt; &lt;input type="text" name="naam" value="&lt;?php echo $data["naam"]; ?&gt;"&gt; &lt;input type="email" name="email" value="&lt;?php echo $data["email"]; ?&gt;"&gt; &lt;button type="submit"&gt;Opslaan&lt;/button&gt;
&lt;/form&gt;
&lt;?php
include 'config.php'; $id = $_POST["id"];
$naam = htmlspecialchars($_POST["naam"]);
$email = htmlspecialchars($_POST["email"]); $conn = new mysqli($servername, $username, $password, $dbname);
$stmt = $conn-&gt;prepare("UPDATE leerlingen SET naam=?, email=? WHERE id=?");
$stmt-&gt;bind_param("ssi", $naam, $email, $id); if ($stmt-&gt;execute()) { echo "Gegevens bijgewerkt.";
} else { echo "Fout bij bewerken.";
} $conn-&gt;close();
?&gt;
✅ Werk met prepare() en bind_param() om SQL-injectie te voorkomen
✅ Controleer of $_GET["id"] of $_POST["id"] bestaat en geldig is
✅ Toon altijd bevestiging of foutmeldingen aan de gebruiker
✅ Voeg een bevestigingsvraag toe bij verwijderingen (optioneel)✅ Je kunt gegevens verwijderen via DELETE FROM ... WHERE id = ?
✅ Je kunt gegevens bewerken met een formulier + UPDATE-query
✅ Gebruik prepare() en bind_param() om veilig te werken
✅ PHP vangt de id op via $_GET of $_POST
✅ Combineer dit met Bootstrap voor knoppen zoals “Bewerk” en “Verwijder”]]></description><link>8.-databases/8.8-data-bewerken-en-verwijderen.html</link><guid isPermaLink="false">8. Databases/8.8 - Data bewerken en verwijderen.md</guid><pubDate>Sat, 21 Jun 2025 17:45:25 GMT</pubDate></item><item><title><![CDATA[8.7 - Invoer valideren en feedback geven]]></title><description><![CDATA[Wanneer gebruikers gegevens invoeren via een formulier, wil je er zeker van zijn dat die invoer klopt, volledig en veilig is. In deze paragraaf leer je hoe je met PHP:
Invoer controleert (validatie) Fouten opvangt (feedback) Gebruikers op een duidelijke manier informeert Stel je voor:
Een gebruiker laat een veld leeg Er wordt een e-mailadres ingevuld zonder @ Iemand probeert met opzet kwaadaardige code te sturen Zonder validatie komen die gegevens alsnog in je database terecht... en dat wil je vermijden.Validatie zorgt ervoor dat alleen geldige en veilige gegevens worden verwerkt.
✅ HTML-validatie (client-side): snel en handig, zoals required of type="email", maar kan omzeild worden ✅ PHP-validatie (server-side): veilig en verplicht, want PHP controleert alles aan de serverkant 💡 Je gebruikt ze dus samen: HTML voor gebruikersgemak, PHP voor echte veiligheidWe passen toevoegen.php aan met controles:&lt;?php
include 'config.php';
$conn = new mysqli($servername, $username, $password, $dbname); $errors = []; if ($_SERVER["REQUEST_METHOD"] == "POST") { // Controleer of velden zijn ingevuld if (empty($_POST["naam"])) { $errors[] = "Naam is verplicht."; } if (empty($_POST["email"])) { $errors[] = "E-mailadres is verplicht."; } elseif (!filter_var($_POST["email"], FILTER_VALIDATE_EMAIL)) { $errors[] = "Ongeldig e-mailadres."; } // Alleen toevoegen als er geen fouten zijn if (empty($errors)) { $naam = htmlspecialchars($_POST["naam"]); $email = htmlspecialchars($_POST["email"]); $stmt = $conn-&gt;prepare("INSERT INTO leerlingen (naam, email) VALUES (?, ?)"); $stmt-&gt;bind_param("ss", $naam, $email); if ($stmt-&gt;execute()) { echo "✅ Leerling succesvol toegevoegd."; } else { echo "❌ Fout bij toevoegen: " . $conn-&gt;error; } } else { // Toon fouten foreach ($errors as $fout) { echo "&lt;p style='color:red;'&gt;$fout&lt;/p&gt;"; } }
} $conn-&gt;close();
?&gt; empty() controleert of een veld leeg is filter_var(..., FILTER_VALIDATE_EMAIL) controleert of het e-mailadres geldig is Alle fouten worden verzameld in een array $errors[] Pas als $errors leeg is, gaat de code verder met de invoer Wil je foutmeldingen terugsturen naar het formulier, dan kun je het formulier en de PHP-logica samen in één bestand zetten (bijv. toevoegen.php). Zo kun je:
Eerdere invoer behouden Foutmeldingen netjes boven het formulier tonen ✅ Gebruik HTML én PHP-validatie
✅ Check op lege velden, verkeerde types en logische fouten
✅ Toon duidelijke foutmeldingen aan de gebruiker
✅ Voeg alleen gegevens toe als alles klopt
✅ Wees vriendelijk, helder en veilig 💡]]></description><link>8.-databases/8.7-invoer-valideren-en-feedback-geven.html</link><guid isPermaLink="false">8. Databases/8.7 - Invoer valideren en feedback geven.md</guid><pubDate>Sat, 21 Jun 2025 17:44:03 GMT</pubDate></item><item><title><![CDATA[8.6 - Van forms naar database]]></title><description><![CDATA[Tot nu toe haalden we enkel gegevens uit de database. Maar nu gaan we zelf data toevoegen via een HTML-formulier. Denk aan gebruikstoepassingen zoals inschrijvingsformulieren, contactpagina’s of blogposts. Door de input van de gebruiker op te vangen en door te sturen naar PHP, kun je deze gegevens opslaan in je database.We maken een eenvoudig formulier om een nieuwe leerling in te voeren:&lt;!DOCTYPE html&gt;
&lt;html lang="nl"&gt;
&lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;Leerling toevoegen&lt;/title&gt; &lt;link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"&gt;
&lt;/head&gt;
&lt;body class="container py-5"&gt; &lt;h2&gt;Leerling toevoegen&lt;/h2&gt; &lt;form action="toevoegen.php" method="POST"&gt; &lt;div class="mb-3"&gt; &lt;label for="naam" class="form-label"&gt;Naam:&lt;/label&gt; &lt;input type="text" class="form-control" id="naam" name="naam" required&gt; &lt;/div&gt; &lt;div class="mb-3"&gt; &lt;label for="email" class="form-label"&gt;E-mailadres:&lt;/label&gt; &lt;input type="email" class="form-control" id="email" name="email" required&gt; &lt;/div&gt; &lt;button type="submit" class="btn btn-primary"&gt;Toevoegen&lt;/button&gt; &lt;/form&gt; &lt;/body&gt;
&lt;/html&gt;
📌 Dit formulier stuurt de ingevulde gegevens door naar toevoegen.php via de POST-methode.In toevoegen.php zorgen we ervoor dat:
De invoer wordt opgevangen
Gevalideerd wordt of alle velden zijn ingevuld
De gegevens veilig in de database worden gestoken
&lt;?php
include 'config.php'; $conn = new mysqli($servername, $username, $password, $dbname);
if ($conn-&gt;connect_error) { die("Verbinding mislukt: " . $conn-&gt;connect_error);
} if ($_SERVER["REQUEST_METHOD"] == "POST") { $naam = $_POST["naam"]; $email = $_POST["email"]; // Voor veiligheid: HTML-tekens omzetten om XSS te voorkomen $naam = htmlspecialchars($naam); $email = htmlspecialchars($email); $sql = "INSERT INTO leerlingen (naam, email) VALUES ('$naam', '$email')"; if ($conn-&gt;query($sql) === TRUE) { echo "Leerling succesvol toegevoegd."; } else { echo "Fout bij toevoegen: " . $conn-&gt;error; }
} $conn-&gt;close();
?&gt;
De bovenstaande code werkt prima, maar is gevoelig voor SQL-injectie. Een veiligere versie gebruikt prepared statements:$stmt = $conn-&gt;prepare("INSERT INTO leerlingen (naam, email) VALUES (?, ?)");
$stmt-&gt;bind_param("ss", $naam, $email);
$stmt-&gt;execute(); Het formulier stuurt POST-data naar toevoegen.php In dat bestand verbinden we met de database De ingevulde gegevens worden gecontroleerd en ingevoegd via een SQL-opdracht De gebruiker krijgt bevestiging als het gelukt is ✅ Je maakt een HTML-formulier met action="toevoegen.php" en method="POST"
✅ In PHP gebruik je $_POST["veldnaam"] om de input op te halen
✅ Met INSERT INTO voeg je de data toe aan je tabel
✅ Sluit af met conn-&gt;close()
✅ Gebruik eventueel prepare() voor extra veiligheid]]></description><link>8.-databases/8.6-van-forms-naar-database.html</link><guid isPermaLink="false">8. Databases/8.6 - Van forms naar database.md</guid><pubDate>Sat, 21 Jun 2025 17:42:38 GMT</pubDate></item><item><title><![CDATA[8.5 - Data dynamisch tonen in HTML]]></title><description><![CDATA[Tot nu toe heb je geleerd hoe je een database aanmaakt, hoe je er verbinding mee maakt en hoe je gegevens kunt opvragen. Maar hoe toon je die gegevens op een mooie, overzichtelijke manier op je website? In deze paragraaf leer je hoe je PHP en HTML combineert om data uit de database in een nette tabel te presenteren.Stel dat we een MySQL-tabel hebben met leerlingen (leerlingen) met daarin de velden id, naam en email. Dan ziet de basis van je PHP-code er zo uit:&lt;?php
include 'config.php'; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn-&gt;connect_error) { die("Verbinding mislukt: " . $conn-&gt;connect_error);
} $sql = "SELECT id, naam, email FROM leerlingen";
$result = $conn-&gt;query($sql);
?&gt;
👉 Deze code voert de query uit, maar toont de resultaten nog niet. Dat gaan we nu combineren met HTML!&lt;!DOCTYPE html&gt;
&lt;html lang="nl"&gt;
&lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;Leerlingenoverzicht&lt;/title&gt; &lt;style&gt; table { width: 100%; border-collapse: collapse; } th, td { border: 1px solid #ccc; padding: 10px; text-align: left; } th { background-color: #f4f4f4; } &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt; &lt;h2&gt;Leerlingen in de database&lt;/h2&gt; &lt;table&gt; &lt;tr&gt; &lt;th&gt;ID&lt;/th&gt; &lt;th&gt;Naam&lt;/th&gt; &lt;th&gt;Email&lt;/th&gt; &lt;/tr&gt; &lt;?php if ($result-&gt;num_rows &gt; 0) { while($rij = $result-&gt;fetch_assoc()) { echo "&lt;tr&gt;"; echo "&lt;td&gt;" . $rij["id"] . "&lt;/td&gt;"; echo "&lt;td&gt;" . $rij["naam"] . "&lt;/td&gt;"; echo "&lt;td&gt;" . $rij["email"] . "&lt;/td&gt;"; echo "&lt;/tr&gt;"; } } else { echo "&lt;tr&gt;&lt;td colspan='3'&gt;Geen resultaten gevonden.&lt;/td&gt;&lt;/tr&gt;"; } $conn-&gt;close(); ?&gt;
&lt;/table&gt; &lt;/body&gt;
&lt;/html&gt; PHP haalt de gegevens op uit de MySQL-tabel. Met een while-lus gaat het script elke rij af. Voor elke rij wordt er een nieuwe &lt;tr&gt;-tabelrij toegevoegd met daarin de waarden voor id, naam en email. Als er geen resultaten zijn, tonen we één rij met de boodschap “Geen resultaten gevonden.” Wil je het nog netter maken? Voeg Bootstrap toe aan je &lt;head&gt;:&lt;link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css"&gt;
(of gebruik het Bootstrap-CSS-bestand dat je al gebruikt in PHPStorm!)En vervang de &lt;table&gt; door:&lt;table class="table table-striped table-bordered"&gt;
💡 Zo ziet je tabel er meteen professioneel uit!In plaats van een &lt;table&gt;, kunnen we de rijen uit de database ook omzetten naar afzonderlijke Bootstrap cards. Dit is ideaal voor bijvoorbeeld gebruikersprofielen, producten, blogs of leerlingenfiches.Hieronder vind je een voorbeeld waarin gegevens uit de tabel leerlingen worden weergegeven als responsive cards:&lt;?php
include 'config.php'; $conn = new mysqli($servername, $username, $password, $dbname);
if ($conn-&gt;connect_error) { die("Verbinding mislukt: " . $conn-&gt;connect_error);
} $sql = "SELECT id, naam, email FROM leerlingen";
$result = $conn-&gt;query($sql);
?&gt;
&lt;!DOCTYPE html&gt;
&lt;html lang="nl"&gt;
&lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;Leerlingen Cards&lt;/title&gt; &lt;link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"&gt;
&lt;/head&gt;
&lt;body class="bg-light"&gt; &lt;div class="container py-4"&gt; &lt;h2 class="mb-4"&gt;Overzicht leerlingen&lt;/h2&gt; &lt;div class="row g-4"&gt; &lt;?php if ($result-&gt;num_rows &gt; 0) { while ($row = $result-&gt;fetch_assoc()) { echo '&lt;div class="col-sm-6 col-md-4 col-lg-3"&gt;'; echo '&lt;div class="card shadow-sm h-100"&gt;'; echo '&lt;div class="card-body"&gt;'; echo '&lt;h5 class="card-title"&gt;' . htmlspecialchars($row["naam"]) . '&lt;/h5&gt;'; echo '&lt;p class="card-text"&gt;ID: ' . $row["id"] . '&lt;/p&gt;'; echo '&lt;p class="card-text"&gt;Email: &lt;br&gt;&lt;small&gt;' . htmlspecialchars($row["email"]) . '&lt;/small&gt;&lt;/p&gt;'; echo '&lt;/div&gt;'; echo '&lt;/div&gt;'; echo '&lt;/div&gt;'; } } else { echo '&lt;p&gt;Geen resultaten gevonden.&lt;/p&gt;'; } $conn-&gt;close(); ?&gt; &lt;/div&gt;
&lt;/div&gt; &lt;/body&gt;
&lt;/html&gt; Elke leerling wordt weergegeven in een Bootstrap card Cards zijn geplaatst in een row g-4 grid en passen zich aan per schermgrootte aan (mobile responsive!) We gebruiken htmlspecialchars() voor extra veiligheid bij weergave van gebruikersdata Voeg een avatar toe met een icoon of standaardafbeelding bovenin de card Kleur de cards op basis van een bepaalde eigenschap (bijv. geslaagd/niet geslaagd) Voeg knoppen toe: “Meer info”, “Bewerk”, “Verwijder”
✅ Haal gegevens op met een SELECT-query
✅ Gebruik een while-lus om rijen dynamisch toe te voegen aan je HTML
✅ Combineer PHP en HTML om data netjes te presenteren
✅ Gebruik conditionele weergave voor lege resultaten
✅ Voeg styling toe (bijv. met CSS of Bootstrap) voor een strakke look]]></description><link>8.-databases/8.5-data-dynamisch-tonen-in-html.html</link><guid isPermaLink="false">8. Databases/8.5 - Data dynamisch tonen in HTML.md</guid><pubDate>Sat, 21 Jun 2025 17:39:13 GMT</pubDate></item><item><title><![CDATA[8.4 - Configuratiebestand gebruiken]]></title><description><![CDATA[Wanneer je op meerdere pagina’s met dezelfde database werkt, is het niet efficiënt (en ook niet veilig) om overal je databasegegevens opnieuw in te typen. Daarom gebruiken we een configuratiebestand: één bestand waarin je alle gegevens zet om verbinding te maken met de database.➡️ Zo hoef je maar op één plek iets te wijzigen als er iets verandert
➡️ Je code blijft overzichtelijker
➡️ Je voorkomt kopieer-plak-fouten én verhoogt de veiligheidMaak een nieuw PHP-bestand aan met de naam config.php. Zet daarin je database-instellingen:&lt;?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "school";
?&gt;
📌 Je hoeft hier alleen de gegevens in te vullen. Er wordt nog geen verbinding gelegd.In bijvoorbeeld je index.php-bestand kun je dan als volgt verbinding maken:&lt;?php
include 'config.php'; // haalt servernaam, username, wachtwoord en dbname op $conn = new mysqli($servername, $username, $password, $dbname); // Controleer of de verbinding lukt
if ($conn-&gt;connect_error) { die("Verbinding mislukt: " . $conn-&gt;connect_error);
}
?&gt;
💡 include 'config.php'; zorgt ervoor dat de variabelen uit je config-bestand beschikbaar zijn in het huidige bestand.Je kunt ook require_once 'config.php'; gebruiken. Dat werkt net zoals include, maar:
Het stopt meteen met uitvoeren als het bestand niet wordt gevonden (veiliger) once zorgt ervoor dat het bestand maar één keer wordt ingeladen ✅ Overzicht: Je hoeft je databasegegevens niet op elke pagina opnieuw te schrijven
✅ Snel onderhoud: Verandert je databasenaam? Je past enkel config.php aan
✅ Beveiliging: Je vermijdt onbedoelde publicatie van gevoelige info in meerdere bestanden
✅ Herbruikbaarheid: Meerdere scripts kunnen tegelijk gebruikmaken van één centrale set instellingenZorg dat je config.php nooit deelt met anderen tenzij je de gevoelige informatie eruit haalt. Op een echte webserver is het gebruikelijk om dit bestand buiten de publieke map te bewaren.✅ config.php bevat je database-instellingen
✅ Je voegt dit bestand in met include of require_once
✅ Daarna gebruik je $conn = new mysqli(...) zoals gewoonlijk
✅ Één plek voor instellingen = overzichtelijk en veilig]]></description><link>8.-databases/8.4-configuratiebestand-gebruiken.html</link><guid isPermaLink="false">8. Databases/8.4 - Configuratiebestand gebruiken.md</guid><pubDate>Sat, 21 Jun 2025 16:58:28 GMT</pubDate></item><item><title><![CDATA[8.3 - Verbinding maken met PHP]]></title><description><![CDATA[Nu je een database en tabel hebt aangemaakt in phpMyAdmin, is het tijd om vanuit PHP verbinding te maken met die database. Zo kun je straks gegevens opvragen, opslaan, bewerken of verwijderen — allemaal vanuit je eigen webpagina.Om verbinding te maken met je MySQL-database heb je vier gegevens nodig:Let op: op een echte webserver kunnen deze gegevens verschillen (en is er meestal wél een wachtwoord ingesteld).Je maakt verbinding met mysqli, een ingebouwde PHP-klasse:&lt;?php
// Instellingen
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "school"; // Maak de verbinding
$conn = new mysqli($servername, $username, $password, $dbname); // Controleer de verbinding
if ($conn-&gt;connect_error) { die("Verbinding mislukt: " . $conn-&gt;connect_error);
} echo "Verbinding gelukt!";
?&gt;
✅ Als alles klopt, krijg je als resultaat: Verbinding gelukt!
✅ Als er iets misloopt, krijg je een duidelijke foutmelding❌ Vergeten om Apache én MySQL te starten in XAMPP
❌ Typfouten in je databanknaam of tabelnaam
❌ Bestand opgeslagen als .html in plaats van .php
❌ Het pad naar je project is niet juist: Gebruik steeds:http://localhost/jouw-project/
Je kunt in plaats van echo "Verbinding gelukt!" ook een echte query proberen uit te voeren:$sql = "SELECT * FROM leerlingen";
$result = $conn-&gt;query($sql); if ($result-&gt;num_rows &gt; 0) { echo "Er zijn " . $result-&gt;num_rows . " leerlingen gevonden.";
} else { echo "Geen leerlingen in de database.";
}
Als je gegevens krijgt, weet je dat de verbinding goed zit.✅ Gebruik new mysqli(...) om verbinding te maken met je database
✅ Controleer altijd met $conn-&gt;connect_error of er iets misloopt
✅ Op je lokale server zijn de gebruikersgegevens meestal: "root" (zonder wachtwoord)
✅ Je .php-bestand moet zich bevinden in de htdocs-map van XAMPP
✅ Gebruik http://localhost/ om je project te bekijken in je browser]]></description><link>8.-databases/8.3-verbinding-maken-met-php.html</link><guid isPermaLink="false">8. Databases/8.3 - Verbinding maken met PHP.md</guid><pubDate>Sat, 21 Jun 2025 16:57:56 GMT</pubDate></item><item><title><![CDATA[8.2 - Database en tabellen aanmaken]]></title><description><![CDATA[Nu je weet wat een database is en waarvoor je MySQL gebruikt, is het tijd om er zelf een te maken. Daarvoor gebruiken we phpMyAdmin, een webinterface die bij XAMPP inbegrepen zit. Hiermee kun je visueel en eenvoudig databases aanmaken, tabellen structureren en gegevens beheren — zonder één lijn SQL te hoeven typen (tenzij je dat wil 😉). Zorg dat Apache en MySQL zijn gestart in je XAMPP Control Panel Open je browser en surf naar:
http://localhost/phpmyadmin Of klik op de knop “Admin” achter MySQL in XAMPP Klik in phpMyAdmin bovenaan op het tabblad “Databases” Vul bij “Database name” een naam in, bijvoorbeeld:
school Laat de collatie staan op utf8mb4_general_ci (standaard) Klik op “Create” ➡️ Je database “school” is nu aangemaakt en staat in de zijbalk! Klik in de linkerzijbalk op je database “school” In het midden zie je “Create table” Geef je tabel een naam, zoals:
leerlingen Kies het aantal kolommen (bijv. 3) Klik op “Go” ✅ Klik vervolgens op “Save”Je eerste tabel is aangemaakt! 🎉
INT (A_I) → een geheel getal dat automatisch oploopt (bijv. 1, 2, 3…). We moeten daar verder niks voor ingeven, de database zal dit automatisch voor ons regelen! VARCHAR(100) → een tekstveld met max. 100 tekens Primary Key → een unieke identifier per rij (in dit geval het id) Je kunt dit ook doen met SQL-opdrachten. Klik op het tabblad SQL in phpMyAdmin en voer het volgende in:CREATE DATABASE school;
USE school; CREATE TABLE leerlingen ( id INT AUTO_INCREMENT PRIMARY KEY, naam VARCHAR(100) NOT NULL, email VARCHAR(100) NOT NULL
);
Handig om te onthouden als je later met code-gestuurde databases werkt!✅ Je opent phpMyAdmin via localhost/phpmyadmin
✅ Je maakt een nieuwe database aan via het tabblad “Databases”
✅ Elke database bevat één of meer tabellen
✅ Tabellen bestaan uit kolommen met een datatype zoals INT of VARCHAR
✅ Je kunt werken via het visuele menu of met SQL-queries]]></description><link>8.-databases/8.2-database-en-tabellen-aanmaken.html</link><guid isPermaLink="false">8. Databases/8.2 - Database en tabellen aanmaken.md</guid><pubDate>Sat, 21 Jun 2025 16:50:06 GMT</pubDate></item><item><title><![CDATA[8.1 - Inleiding]]></title><description><![CDATA[Bij het bouwen van dynamische websites wil je vaak gegevens opslaan: bijvoorbeeld gebruikersnamen, bestellingen, e-mailadressen of blogberichten. Om dit op een gestructureerde en efficiënte manier te doen, gebruik je een database.Een database is als een digitale archiefkast: een georganiseerde verzameling van gegevens, opgeslagen in tabellen met rijen en kolommen — net als in een Excel-bestand, maar dan krachtiger en gekoppeld aan je website.MySQL is een van de populairste systemen om met databases te werken. Het is:
✅ Gratis en open source
✅ Zeer krachtig en betrouwbaar
✅ De standaardkeuze bij het werken met PHPElke database in MySQL bestaat uit één of meer tabellen, en elke tabel bestaat uit velden (zoals 'naam' of 'email') en records (de rijen met echte gegevens).PHP is gemaakt om samen te werken met MySQL. PHP kan:
Gegevens uit formulieren opslaan in je database Gegevens uit een tabel opvragen en tonen Gegevens bewerken of verwijderen Zoekopdrachten uitvoeren Bijvoorbeeld: een pagina die alle producten uit je database toont, of een formulier dat een nieuwe leerling toevoegt.Wanneer je lokaal aan je site werkt, gebruik je XAMPP als lokale server. Hierin zit MySQL al standaard inbegrepen, en via phpMyAdmin kun je databases beheren via een grafische webinterface.📌 Vergeet niet: je moet Apache én MySQL starten in het XAMPP Control Panel, anders werkt phpMyAdmin niet.Je opent phpMyAdmin eenvoudig via:http://localhost/phpmyadmin
✔ Hoe je een database en tabel aanmaakt in phpMyAdmin
✔ Hoe je vanuit PHP verbinding maakt met je database
✔ Hoe je gegevens ophaalt en op het scherm toont
✔ Hoe je een extern configuratiebestand gebruikt (veiligheid en herbruikbaarheid)
✔ Hoe je dynamisch een HTML-tabel bouwt op basis van gegevens uit MySQL]]></description><link>8.-databases/8.1-inleiding.html</link><guid isPermaLink="false">8. Databases/8.1 - Inleiding.md</guid><pubDate>Sat, 21 Jun 2025 16:47:24 GMT</pubDate></item><item><title><![CDATA[7.9 - Functies]]></title><description><![CDATA[Een functie is een herbruikbaar blokje code dat een specifieke taak uitvoert, net als een methode in C#. In plaats van dezelfde code telkens opnieuw te schrijven, kun je die in een functie stoppen en aanroepen wanneer je ze nodig hebt. Dit maakt je code overzichtelijker, korter en makkelijker te onderhouden.Je maakt een functie met het sleutelwoord function, gevolgd door een naam, ronde haakjes (eventueel met parameters) en een blok code tussen accolades:&lt;?php
function begroet() { echo "Hallo, bezoeker!";
}
?&gt;
✅ De functie wordt pas uitgevoerd als je ze aanroept:begroet(); // toont: Hallo, bezoeker!
Je kunt een functie gegevens meegeven via parameters:&lt;?php
function zegHallo($naam) { echo "Hallo, $naam!";
} zegHallo("Lotte"); // toont: Hallo, Lotte!
?&gt;
Je kunt meerdere parameters gebruiken, gescheiden door komma’s:function vermenigvuldig($a, $b) { echo $a * $b;
} vermenigvuldig(4, 5); // toont: 20
Soms wil je dat een functie een waarde teruggeeft in plaats van die meteen te tonen. Gebruik dan return:&lt;?php
function berekenSom($x, $y) { return $x + $y;
} $totaal = berekenSom(10, 15);
echo "De som is: $totaal";
?&gt;
📌 Alles na return wordt teruggegeven aan de plek waar de functie werd aangeroepen.Je kunt een standaardwaarde instellen voor een parameter:function begroeting($naam = "gast") { echo "Welkom, $naam!";
} begroeting(); // Welkom, gast!
begroeting("Sofie"); // Welkom, Sofie!
&lt;?php
function maakTitel($tekst) { echo "&lt;h1&gt;$tekst&lt;/h1&gt;";
} maakTitel("Welkom op mijn site");
?&gt;
✅ Zo kun je dynamisch HTML genereren met PHP-functies.✅ Een functie is een blok code dat je kunt hergebruiken
✅ Je maakt een functie met function naam()
✅ Je kunt parameters meegeven en een waarde teruggeven met return
✅ Functies maken je code korter, overzichtelijker en makkelijker te onderhouden
✅ Je kunt standaardwaarden instellen voor parameters]]></description><link>7.-php/7.9-functies.html</link><guid isPermaLink="false">7. PHP/7.9 - Functies.md</guid><pubDate>Sat, 21 Jun 2025 16:46:25 GMT</pubDate></item><item><title><![CDATA[7.8 - Arrays]]></title><description><![CDATA[Een array is een speciale variabele waarin je meerdere waarden tegelijk kunt opslaan. In plaats van tien losse variabelen te maken, kun je één array gebruiken om bijvoorbeeld een lijst met namen, prijzen of kleuren te bewaren. Arrays zijn onmisbaar in elke PHP-toepassing — van simpele lijsten tot complexe databewerkingen.Er zijn twee manieren om een array te maken:// Klassieke manier
$kleuren = array("rood", "groen", "blauw"); // Korte syntax (aanbevolen sinds PHP 5.4)
$kleuren = ["rood", "groen", "blauw"];
Je kunt nu elk item aanspreken via een indexnummer (beginnend bij 0):echo $kleuren[0]; // toont: rood
In plaats van nummers kun je ook namen (keys) gebruiken:$persoon = [ "naam" =&gt; "Lotte", "leeftijd" =&gt; 22, "stad" =&gt; "Antwerpen"
]; echo $persoon["naam"]; // toont: Lotte
✅ Dit is handig als je gegevens met betekenisvolle labels wilt opslaan.Een array kan ook andere arrays bevatten:$studenten = [ "Emma" =&gt; ["leeftijd" =&gt; 20, "score" =&gt; 85], "Noah" =&gt; ["leeftijd" =&gt; 21, "score" =&gt; 92]
]; echo $studenten["Noah"]["score"]; // toont: 92
💡 Dit gebruik je bijvoorbeeld voor tabellen, gebruikerslijsten of producten met eigenschappen.$kleuren[] = "geel"; // voegt geel toe aan het einde
$persoon["email"] = "lotte@example.com"; // voegt nieuwe key toe
$persoon["stad"] = "Gent"; // overschrijft bestaande waarde
foreach ($kleuren as $kleur) { echo "Kleur: $kleur &lt;br&gt;";
} foreach ($persoon as $key =&gt; $waarde) { echo "$key: $waarde &lt;br&gt;";
}
✅ Voorbeeld:$kleuren = ["rood", "groen", "blauw"];
echo count($kleuren); // 3
✅ Arrays slaan meerdere waarden op in één variabele
✅ Je hebt indexarrays, associatieve arrays en multidimensionale arrays
✅ Gebruik [] om toe te voegen, foreach om te doorlopen
✅ PHP biedt tientallen handige functies om arrays te beheren]]></description><link>7.-php/7.8-arrays.html</link><guid isPermaLink="false">7. PHP/7.8 - Arrays.md</guid><pubDate>Sat, 21 Jun 2025 16:41:24 GMT</pubDate></item><item><title><![CDATA[7.7 - Loops]]></title><description><![CDATA[Met een loop kun je dezelfde code meerdere keren uitvoeren zonder die telkens opnieuw te schrijven. Dit is handig wanneer je bijvoorbeeld een lijst van producten toont, een teller opbouwt, of steeds iets wilt controleren tot een bepaalde conditie niet meer klopt.PHP kent verschillende soorten lussen:Gebruik je als je precies weet hoe vaak iets moet worden herhaald.✅ Voorbeeld:&lt;?php
for ($i = 1; $i &lt;= 5; $i++) { echo "Dit is herhaling nummer $i &lt;br&gt;";
}
?&gt;
Uitleg:
$i = 1 → startwaarde $i &lt;= 5 → herhalen zolang deze voorwaarde waar is $i++ → verhoogt $i met 1 bij elke herhaling Gebruik je als je wilt blijven herhalen zolang een voorwaarde waar is, maar je niet altijd weet hoe vaak.✅ Voorbeeld:&lt;?php
$teller = 0;
while ($teller &lt; 3) { echo "Teller is: $teller &lt;br&gt;"; $teller++;
}
?&gt;
Let op: als je de teller niet verhoogt, krijg je een oneindige lus.Deze lijkt op de while, maar voert de code minstens één keer uit, ook als de voorwaarde direct onwaar is.✅ Voorbeeld:&lt;?php
$getal = 10;
do { echo "Getal is: $getal &lt;br&gt;"; $getal++;
} while ($getal &lt; 5);
?&gt;
Hier wordt het bericht één keer weergegeven, ondanks dat getal &lt; 5 meteen al onwaar is.Speciaal bedoeld voor het doorlopen van arrays. Elke waarde in de lijst wordt één voor één opgehaald.✅ Voorbeeld:&lt;?php
$kleuren = ['rood', 'groen', 'blauw']; foreach ($kleuren as $kleur) { echo "Kleur: $kleur &lt;br&gt;";
}
?&gt;
Je kunt ook zowel de key als de waarde ophalen:&lt;?php
$prijzen = ['appel' =&gt; 0.5, 'banaan' =&gt; 0.3]; foreach ($prijzen as $fruit =&gt; $prijs) { echo "$fruit kost €$prijs &lt;br&gt;";
}
?&gt;
✅ Lussen besparen herhaling in je code
✅ Vergeet niet je tellers of voorwaarden aan te passen — anders krijg je een eindeloze loop]]></description><link>7.-php/7.7-loops.html</link><guid isPermaLink="false">7. PHP/7.7 - Loops.md</guid><pubDate>Sat, 21 Jun 2025 16:40:25 GMT</pubDate></item><item><title><![CDATA[7.6 - Conditionals]]></title><description><![CDATA[Met een if-statement kun je je code laten reageren op bepaalde situaties. Je stelt een voorwaarde op, en als die waar is, wordt een stuk code uitgevoerd. Zo kun je bijvoorbeeld controleren of iemand oud genoeg is, of een formulier correct is ingevuld, of een korting moet worden toegepast, enzovoort.&lt;?php
$leeftijd = 18; if ($leeftijd &gt;= 18) { echo "Je bent volwassen.";
}
?&gt;
✅ Als de voorwaarde tussen haakjes waar is (true), wordt de code tussen de accolades uitgevoerd.Wil je ook iets doen als de voorwaarde niet waar is? Gebruik dan else:&lt;?php
$ingelogd = false; if ($ingelogd) { echo "Welkom terug!";
} else { echo "Log eerst in.";
}
?&gt;
Voor meerdere keuzes gebruik je elseif:&lt;?php
$uur = 14; if ($uur &lt; 12) { echo "Goedemorgen!";
} elseif ($uur &lt; 18) { echo "Goedemiddag!";
} else { echo "Goedenavond!";
}
?&gt;
📌 PHP voert alleen het eerste kloppende blok uit.Als je een variabele met vaste waarden wilt vergelijken, is switch overzichtelijker dan veel if-statements:&lt;?php
$dag = "woensdag"; switch ($dag) { case "maandag": echo "Begin van de week"; break; case "woensdag": echo "Midden van de week"; break; case "vrijdag": echo "Bijna weekend!"; break; default: echo "Gewone dag";
}
?&gt;
✅ Vergeet break; niet, anders loopt PHP door naar de volgende case.Je kunt meerdere voorwaarden combineren met logische operatoren:&lt;?php
$leeftijd = 17;
$ingeschreven = true; if ($leeftijd &gt;= 16 &amp;&amp; $ingeschreven) { echo "Je mag deelnemen.";
}
?&gt; &amp;&amp; = EN → beide voorwaarden moeten waar zijn || = OF → minstens één moet waar zijn ! = NIET → keert de waarde om ✅ Gebruik if om code uit te voeren bij een bepaalde voorwaarde
✅ Voeg else of elseif toe voor alternatieven
✅ Gebruik switch bij vaste keuzemogelijkheden
✅ Combineer voorwaarden met &amp;&amp;, || en !
✅ Denk logisch: wat moet er gebeuren als iets wel of niet klopt?]]></description><link>7.-php/7.6-conditionals.html</link><guid isPermaLink="false">7. PHP/7.6 - Conditionals.md</guid><pubDate>Sat, 21 Jun 2025 16:39:54 GMT</pubDate></item><item><title><![CDATA[7.5 - Operatoren]]></title><description><![CDATA[In deze paragraaf leer je hoe je met operatoren kunt rekenen, vergelijken en logische beslissingen kunt nemen in PHP. Dit is essentieel voor het bouwen van slimme scripts die reageren op invoer, keuzes maken of berekeningen uitvoeren.Deze gebruik je om te rekenen met getallen:✅ Voorbeeld:&lt;?php
$a = 10;
$b = 3;
echo $a + $b; // 13
echo $a % $b; // 1
?&gt;
Deze gebruik je om twee waarden te vergelijken. Ze geven true of false terug.✅ Voorbeeld:&lt;?php
$x = 5;
$y = "5"; var_dump($x == $y); // true
var_dump($x === $y); // false (ander type)
?&gt;
Deze gebruik je om meerdere voorwaarden te combineren:✅ Voorbeeld:&lt;?php
$leeftijd = 18;
$ingelogd = true; if ($leeftijd &gt;= 18 &amp;&amp; $ingelogd) { echo "Toegang toegestaan";
}
?&gt;
Deze gebruik je om waarden toe te wijzen of te wijzigen:✅ Gebruik rekenkundige operatoren om te rekenen met variabelen
✅ Vergelijk waarden met ==, ===, &lt;, &gt;=, enz.
✅ Combineer voorwaarden met &amp;&amp;, || en !
✅ Wijzig variabelen met +=, *=, ++, enz.
✅ Gebruik === als je ook het datatype wilt controleren]]></description><link>7.-php/7.5-operatoren.html</link><guid isPermaLink="false">7. PHP/7.5 - Operatoren.md</guid><pubDate>Sat, 21 Jun 2025 16:36:47 GMT</pubDate></item><item><title><![CDATA[7.4 - Variabelen]]></title><description><![CDATA[In PHP gebruik je variabelen om tijdelijk gegevens op te slaan. Die gegevens kunnen allerlei soorten zijn: getallen (integers of floats), tekst (strings), waar/niet waar (booleans), of zelfs volledige lijsten (arrays).Je maakt een variabele door een dollarteken ($) te gebruiken, gevolgd door een zelfgekozen naam. Daarna ken je een waarde toe met = en sluit je de regel af met een puntkomma:&lt;?php
$tekst = 'Hello World!';
echo $tekst;
?&gt;
✅ Dit toont: Hello World! Let op: variabelen zijn hoofdlettergevoelig in PHP!Een variabele kan allerlei typen gegevens bevatten. PHP herkent het datatype automatisch:&lt;?php
$tekst = 'Hello World!'; // String
$leeftijd = 20; // Integer
$prijs = 135.75; // Float (kommagetal)
$actief = true; // Boolean
?&gt;
📌 Strings staan tussen aanhalingstekens, de rest niet.Commentaar maakt je code leesbaar voor jezelf en anderen. PHP ondersteunt drie vormen:&lt;?php
// Dit is een enkelregelig commentaar
# Ook dit is enkelregelig
/* Dit is een meerregelig commentaarblok
*/
?&gt;
Je kunt commentaar ook gebruiken om tijdelijk code 'uit te schakelen'.Goede variabelennamen zeggen iets over wat erin zit. Je kunt optioneel beginnen met een prefix die het datatype aanduidt (niet verplicht, maar handig bij grotere projecten):&lt;?php
$sWelkomstTekst = 'Hallo!';
$iLeeftijd = 21;
$fPrijs = 9.95;
$bIngelogd = false;
?&gt;
✔ Zo weet je meteen: $s = string, $i = integer, $f = float, $b = booleanGebruik géén variabelen binnen enkele aanhalingstekens:$naam = 'Joren';
echo 'Welkom, $naam!'; // FOUT: toont letterlijk $naam
echo 'Welkom, '.$naam.'!'; // GOED: toont "Welkom, Joren!"
💡 Je kunt variabelen samenvoegen (concatenatie) met de punt . operator.✅ Voorbeeld met meerdere variabelen:$voornaam = 'Joren';
$achternaam = 'de Wit';
$volledigeNaam = $voornaam . ' ' . $achternaam; echo $volledigeNaam; // Resultaat: Joren de Wit
PHP kan prima rekenen. Gebruik standaard operatoren zoals +, -, *, /:&lt;?php
$iAantal = 10;
$fPrijs = 9.95; $fSubtotaal = $iAantal * $fPrijs;
$fBtw = $fSubtotaal * 0.21;
$fTotaal = $fSubtotaal + $fBtw; echo 'Subtotaal: €'.$fSubtotaal.'&lt;br&gt;';
echo 'Totaal: €'.$fTotaal;
?&gt;
🧠 Resultaat:Subtotaal: €99.5
Totaal: €120.395
✅ Je maakt een variabele met $naam = waarde;
✅ Strings gebruik je met quotes (' of ")
✅ Je kunt rekensommen maken en strings samenvoegen met .
✅ Geef je variabelen logische namen — het helpt je bij grotere projecten
✅ Gebruik commentaar om je code begrijpelijk en overzichtelijk te houden]]></description><link>7.-php/7.4-variabelen.html</link><guid isPermaLink="false">7. PHP/7.4 - Variabelen.md</guid><pubDate>Sat, 21 Jun 2025 16:36:10 GMT</pubDate></item><item><title><![CDATA[7.3 - Je eerste PHP-bestand]]></title><description><![CDATA[ Open PHPStorm Ga naar File → New Project Selecteer PHP → Empty Project Geef je project een naam (bijvoorbeeld php_intro) Zorg dat de projectmap zich bevindt in:
C:\xampp\htdocs\ zodat XAMPP het kan vinden Klik op Create 📌 Je kunt nu rechts in de projectstructuur rechtsklikken op de map en kiezen voor: New → PHP File → geef bijvoorbeeld index opOpen het bestand index.php en schrijf:&lt;?php echo "Hallo, wereld!";
?&gt;
✅ &lt;?php ... ?&gt; zijn de start- en eindtags van PHP-code
✅ echo is een PHP-opdracht die tekst toont (vergelijkbaar met Console.WriteLine() in C#)
✅ Vergeet de puntkomma ; niet!Het gemakkelijkste is om via PHPStorm je pagina te openen in een browser naar keuze. Maar je kunt ook rechtstreeks naar je localhost surfen in de browser: Zorg dat Apache gestart is in XAMPP Open je browser Typ in de adresbalk:
http://localhost/php_intro Je zou nu “Hallo, wereld!” moeten zien verschijnen op je scherm — rechtstreeks gegenereerd door de server via je PHP-code!
Opmerking: in plaats van /php_intro, moet je natuurlijk wel de naam van je project typen!Je kunt PHP mengen met HTML:&lt;!DOCTYPE html&gt;
&lt;html&gt; &lt;head&gt; &lt;title&gt;PHP Welkom&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;h1&gt;&lt;?php echo "Welkom op mijn website!"; ?&gt;&lt;/h1&gt; &lt;p&gt;Vandaag is het &lt;?php echo date("d/m/Y"); ?&gt;.&lt;/p&gt; &lt;/body&gt;
&lt;/html&gt;
📌 PHP wordt alleen uitgevoerd binnen de &lt;?php ?&gt;-tags — de rest is gewoon HTML.✅ Maak een .php bestand aan in je XAMPP-projectmap
✅ Gebruik &lt;?php ... ?&gt; om PHP-code te schrijven
✅ Toon uitvoer met echo
✅ Gebruik http://localhost/mapnaam/ om je pagina te bekijken
✅ Combineer PHP makkelijk met HTML voor dynamische inhoud]]></description><link>7.-php/7.3-je-eerste-php-bestand.html</link><guid isPermaLink="false">7. PHP/7.3 - Je eerste PHP-bestand.md</guid><pubDate>Sat, 21 Jun 2025 16:35:40 GMT</pubDate></item><item><title><![CDATA[7.2 - XAMPP]]></title><description><![CDATA[<img alt="XAMPP_logo.svg.png" height="228" src="media/xampp_logo.svg.png" target="_self" style="width: 226px; max-width: 100%;">Nu we met PHP aan de slag gaan, hebben we een lokale server nodig. Hiervoor gebruiken we XAMPP, een gratis tool waarmee je een serveromgeving kunt draaien op je eigen computer — zonder dat je online moet gaan. Superhandig!XAMPP is een bundel van software die speciaal bedoeld is om lokaal te ontwikkelen. Het bevat:
Apache → de eigenlijke webserver MySQL → de database (nu vaak MariaDB genoemd) PHP → de programmeertaal waar dit hoofdstuk om draait phpMyAdmin → een visuele tool om je databases te beheren 💡 De naam XAMPP is een afkorting:
X = Cross-platform (werkt op Windows, macOS, Linux) A = Apache M = MySQL P = PHP P = Perl (die laatste gebruiken we hier niet) Wanneer je XAMPP hebt geïnstalleerd, open je het XAMPP Control Panel. Dat ziet er ongeveer zo uit:+-------------------------------+
| Apache [Start] |
| MySQL [Start] |
| ... |
+-------------------------------+
✅ Wat moet je hier doen? Alleen dit:
Klik op Start bij Apache Klik op Start bij MySQL 📌 Zodra beide groen oplichten, draait je server én database!Open de map waar je XAMPP hebt geïnstalleerd. Ga naar:C:\xampp\htdocs\
👉 Hier plaats je de mappen van je projecten. Bijvoorbeeld:C:\xampp\htdocs\mijn-portfolio\
Je roept dit op via je browser met:http://localhost/mijn-portfolio/
phpMyAdmin is een webgebaseerde tool waarmee je grafisch databases kunt maken, bekijken en beheren. Denk aan:
Tabellen aanmaken Gegevens toevoegen of wijzigen Gebruikers beheren SQL-opdrachten uitvoeren ✅ Om naar phpMyAdmin te gaan, zorg dat Apache + MySQL gestart zijn, en ga dan in je browser naar:http://localhost/phpmyadmin
📌 Hier kun je je eerste databank aanmaken — bijvoorbeeld voor een contactformulier, een blog of een webshop.✅ XAMPP laat je werken met PHP op je eigen computer
✅ Start alleen Apache en MySQL via het Control Panel
✅ Je projecten plaats je in htdocs/
✅ phpMyAdmin = je databasebeheerder in de browser
✅ Je bereikt je projecten en databases via http://localhost/...]]></description><link>7.-php/7.2-xampp.html</link><guid isPermaLink="false">7. PHP/7.2 - XAMPP.md</guid><pubDate>Sat, 21 Jun 2025 16:25:49 GMT</pubDate><enclosure url="media/xampp_logo.svg.png" length="0" type="image/png"/><content:encoded>&lt;figure&gt;&lt;img src=&quot;media/xampp_logo.svg.png&quot;&gt;&lt;/figure&gt;</content:encoded></item><item><title><![CDATA[7.1 - Inleiding]]></title><description><![CDATA[Welkom in de wereld van PHP! In dit hoofdstuk ontdek je hoe je met PHP dynamische webpagina’s maakt en informatie kunt opslaan, ophalen en tonen met behulp van servers en databases.<img alt="PHP-Application-on-web-server-side-The-figure-shows-the-operational-framework-of-the.png" src="media/php-application-on-web-server-side-the-figure-shows-the-operational-framework-of-the.png" target="_self"><br>Zoals we hebben geleerd in paragraaf <a data-href="1.1 - Inleiding" href="1.-het-internet/1.1-inleiding.html" class="internal-link" target="_self" rel="noopener nofollow">1.1 - Inleiding</a>, zal het volgende gebeuren wanneer je een website bezoekt:
Je browser stuurt een verzoek naar de server van de website De server stuurt de HTML en CSS terug Jouw browser leest die code en toont de website visueel 🧠 Maar wanneer je een pagina bezoekt die geschreven is in PHP, gebeurt er iets extra's:
De server herkent de PHP-code Hij voert de PHP-code eerst uit Het resultaat daarvan (meestal HTML) wordt naar jouw browser gestuurd ➡️ Jij ziet de uitvoer, maar niet de PHP-code zelf. Daarom noemen we PHP een server-side taal.PHP maakt websites slimmer, interactiever en dynamischer. Je kunt bijvoorbeeld:✅ Gegevens van gebruikers ontvangen en opslaan
✅ Informatie tonen uit een database
✅ Content op verschillende pagina’s automatisch herhalen (zoals footers of menu’s)
✅ Een contactformulier maken dat de gegevens naar je e-mailadres of database stuurt
✅ Een blog bouwen waar bezoekers reacties achterlaten💡 PHP wordt vaak gebruikt in combinatie met MySQL en frameworks zoals WordPress.Omdat PHP op een server draait, heb je méér nodig dan een gewone browser.
PHPStorm → om je PHP-code te schrijven XAMPP → een programma dat een lokale server op je eigen computer installeert 📌 Met XAMPP krijg je onder andere:
Apache server → om je website te draaien PHP → om scripts uit te voeren MySQL → om met databases te werken ✅ Download XAMPP via: apachefriends.org Kies tijdens installatie de standaardinstellingen.Daarna plaats je je projecten in de map /htdocs van XAMPP. Deze kun je openen via de URL:http://localhost/naam-van-je-map
✅ Client-side talen: HTML, CSS, JavaScript
✅ Server-side talen: PHP, Python, Ruby, ASP.NET, C#, ...💡 Client-side scripts maken de pagina aantrekkelijk
💡 Server-side scripts maken de pagina intelligentStel je bent webdesigner en zoekt werk. Werkgevers zoeken vaak:
Een front-end developer → bouwt de visuele kant met HTML, CSS en JavaScript Een back-end developer → bouwt de logica en database-koppeling met bijvoorbeeld PHP 🌐 In kleine teams is het handig als je beide kanten snapt — en dat leer je hier!✅ PHP = programmeertaal die op de server draait
✅ Je ziet het resultaat (HTML), niet de code zelf
✅ PHP maakt websites dynamischer en interactiever
✅ Om met PHP te werken heb je een lokale server nodig, zoals XAMPP
✅ PHP is onderdeel van de back-end van een website]]></description><link>7.-php/7.1-inleiding.html</link><guid isPermaLink="false">7. PHP/7.1 - Inleiding.md</guid><pubDate>Sat, 21 Jun 2025 16:24:28 GMT</pubDate><enclosure url="media/php-application-on-web-server-side-the-figure-shows-the-operational-framework-of-the.png" length="0" type="image/png"/><content:encoded>&lt;figure&gt;&lt;img src=&quot;media/php-application-on-web-server-side-the-figure-shows-the-operational-framework-of-the.png&quot;&gt;&lt;/figure&gt;</content:encoded></item><item><title><![CDATA[6.8 - Formvalidatie]]></title><description><![CDATA[In deze paragraaf gaan we aan de slag met formulieren en hoe je met JavaScript kunt controleren of de gebruiker correcte en volledige gegevens heeft ingevuld — voordat het formulier daadwerkelijk wordt verzonden.Dit heet validatie, en het helpt je om fouten, lege velden of ongeldige e-mailadressen op te vangen voordat de gegevens worden verwerkt.Een standaard HTML-formulier:&lt;form id="mijnFormulier"&gt; &lt;label for="naam"&gt;Naam:&lt;/label&gt; &lt;input type="text" id="naam"&gt;&lt;br&gt; &lt;label for="email"&gt;E-mailadres:&lt;/label&gt; &lt;input type="email" id="email"&gt;&lt;br&gt; &lt;button type="submit"&gt;Verzenden&lt;/button&gt;
&lt;/form&gt;
We willen controleren of naam en e-mail zijn ingevuld:&lt;script&gt; document.getElementById("mijnFormulier").addEventListener("submit", function(e) { e.preventDefault(); // voorkom standaard verzending let naam = document.getElementById("naam").value; let email = document.getElementById("email").value; if (naam === "" || email === "") { alert("Vul alle velden in!"); } else { alert("Formulier is succesvol verzonden!"); // hier kun je eventueel het formulier echt versturen // this.submit(); } });
&lt;/script&gt;
✅ Met e.preventDefault() stoppen we de standaard verzending tot alles klopt.
✅ Met .value lezen we de invoerwaarden uit.Wil je controleren of een ingevoerd e-mailadres geldig is? Gebruik dan een simpele check:if (!email.includes("@") || !email.includes(".")) { alert("Voer een geldig e-mailadres in."); return;
}
Of gebruik een regex (regular expression) voor meer zekerheid:let regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; if (!regex.test(email)) { alert("Geen geldig e-mailadres.");
}
In plaats van een alert, kun je de fout ook op het scherm tonen:&lt;p id="foutmelding" style="color: red;"&gt;&lt;/p&gt;
document.getElementById("foutmelding").textContent = "Vul alle velden in!";
Gebruik required in HTML en combineer dat met JavaScript voor extra controle:&lt;input type="text" id="naam" required&gt;
Je kunt met JavaScript checken of het formulier valide is:if (!this.checkValidity()) { alert("Niet alle velden zijn correct ingevuld.");
}
✅ JavaScript laat je invoer van gebruikers controleren vóór het formulier wordt verzonden
✅ Gebruik .value om gegevens uit velden te halen
✅ Gebruik e.preventDefault() om verzending tijdelijk te stoppen
✅ Toon foutmeldingen met alert() of direct op de pagina
✅ Combineer HTML-required met JS-validatie voor maximale controle]]></description><link>6.-javascript/6.8-formvalidatie.html</link><guid isPermaLink="false">6. JavaScript/6.8 - Formvalidatie.md</guid><pubDate>Sat, 21 Jun 2025 10:34:20 GMT</pubDate></item><item><title><![CDATA[6.7 - DOM-manipulatie]]></title><description><![CDATA[De DOM (Document Object Model) vormt de brug tussen HTML en JavaScript. Je kunt het zien als een boomstructuur van je webpagina: elk HTML-element is een knooppunt (node) dat je met JavaScript kunt selecteren, aanpassen, toevoegen of verwijderen. Dit heet DOM-manipulatie, en het stelt je in staat om je pagina live te veranderen zonder te herladen. DOM-manipulatie is een van de belangrijkste onderdelen van JavaScript!De meest gebruikte methodes om elementen op je pagina op te zoeken:javascriptdocument.getElementById("titel"); // op ID
document.getElementsByClassName("knop"); // op class (HTMLCollection)
document.getElementsByTagName("p"); // op tagnaam (HTMLCollection)
document.querySelector(".knop"); // eerste match met CSS-selector
document.querySelectorAll("p.special"); // alle matches (NodeList)
💡 querySelector en querySelectorAll zijn krachtiger omdat je CSS-selectors kunt gebruiken!&lt;p id="tekst"&gt;Oude tekst&lt;/p&gt;
document.getElementById("tekst").innerHTML = "Nieuwe tekst!";
Of voor invoervelden:&lt;input id="naamvak" type="text" value="An"&gt;
let waarde = document.getElementById("naamvak").value;
Gebruik .value voor formulieren en .innerHTML of .textContent voor gewone elementen.let box = document.getElementById("doos");
box.style.backgroundColor = "lightblue";
box.style.fontSize = "20px";
Je kunt vrijwel alle CSS-eigenschappen toewijzen via .style, maar in camelCase (bijv. fontSize, niet font-size).let nieuweParagraaf = document.createElement("p");
nieuweParagraaf.textContent = "Dit is een nieuw stukje tekst!";
document.body.appendChild(nieuweParagraaf);
Of binnen een specifieke container:document.getElementById("container").appendChild(nieuweParagraaf);
let knop = document.getElementById("verwijderMij");
knop.remove();
Of via parent-element:let ouder = document.getElementById("lijst");
let kind = document.getElementById("item1");
ouder.removeChild(kind);
let knop = document.querySelector(".knop"); knop.classList.add("active");
knop.classList.remove("hidden");
knop.classList.toggle("highlight");
Dit is handig om visuele effecten of animaties aan te roepen met CSS.✅ Met JavaScript kun je elk HTML-element selecteren, aanpassen of verwijderen
✅ Gebruik getElementById, querySelector, enz. om elementen op te zoeken
✅ Pas inhoud aan met .innerHTML of .value, en CSS met .style
✅ Voeg dynamisch nieuwe elementen toe met createElement() en appendChild()
✅ Verwijder elementen met .remove() of .removeChild()
✅ Beheer klassen met .classList.add(), .remove(), .toggle()]]></description><link>6.-javascript/6.7-dom-manipulatie.html</link><guid isPermaLink="false">6. JavaScript/6.7 - DOM-manipulatie.md</guid><pubDate>Sat, 21 Jun 2025 10:32:55 GMT</pubDate></item><item><title><![CDATA[6.6 - Events]]></title><description><![CDATA[Tot nu toe hebben we JavaScript gebruikt om dingen te laten gebeuren zodra de pagina wordt geladen. Maar wat als je iets wilt laten gebeuren wanneer de gebruiker ergens op klikt, iets invult of met de muis beweegt? Daarvoor gebruik je events.Een event is een gebeurtenis die plaatsvindt in de browser — zoals een klik, een toetsdruk of het laden van een afbeelding. Met JavaScript kun je daarop reageren en je pagina interactief maken.&lt;button onclick="alert('Je klikte op de knop!')"&gt;Klik mij&lt;/button&gt;
📌 Dit is de snelste manier, maar wordt bij grotere projecten minder aangeraden.&lt;button id="mijnKnop"&gt;Klik hier&lt;/button&gt; &lt;script&gt; document.getElementById("mijnKnop").onclick = function() { alert("Knop werd aangeklikt!"); };
&lt;/script&gt;
let knop = document.getElementById("mijnKnop"); knop.addEventListener("click", function() { alert("Klik via addEventListener!");
});
💡 Voordeel: je kunt meerdere events koppelen aan hetzelfde element én ze later verwijderen.&lt;p id="tekst"&gt;Klik op de knop om mij te veranderen.&lt;/p&gt;
&lt;button onclick="veranderTekst()"&gt;Verander tekst&lt;/button&gt; &lt;script&gt; function veranderTekst() { document.getElementById("tekst").innerHTML = "De tekst is aangepast!"; }
&lt;/script&gt;
Bij veel events krijg je automatisch een event object mee dat extra informatie bevat:document.addEventListener("keydown", function(e) { console.log("Je drukte op: " + e.key);
});
✅ Events maken je pagina interactief
✅ Gebruik onclick, onchange, onkeydown, enz. om te reageren op acties
✅ Voeg events toe inline, via DOM-eigenschappen of met addEventListener()
✅ Gebruik het event object (e) om extra info te krijgen over het event]]></description><link>6.-javascript/6.6-events.html</link><guid isPermaLink="false">6. JavaScript/6.6 - Events.md</guid><pubDate>Sat, 21 Jun 2025 10:30:42 GMT</pubDate></item><item><title><![CDATA[6.5 - Functies]]></title><description><![CDATA[Een functie is een herbruikbaar blokje code dat een specifieke taak uitvoert. Je kunt het zien als een methode in C#. Functies helpen je om je code overzichtelijk, herbruikbaar en onderhoudbaar te maken.✅ Herbruikbaarheid – Schrijf code één keer, gebruik het meerdere keren
✅ Leesbaarheid – Je code wordt overzichtelijker en beter gestructureerd
✅ Modulariteit – Je kunt complexe taken opdelen in kleinere stukjes
✅ Flexibiliteit – Je kunt functies parameters meegeven om ze dynamisch te maken✅ Basisstructuur:function naamVanDeFunctie() { // code die uitgevoerd wordt
}
✅ Voorbeeld:function begroet() { alert("Hallo daar!");
} begroet(); // roept de functie aan
📌 Let op: de functie wordt pas uitgevoerd als je haar aanroept met begroet();Je kunt een functie gegevens meegeven via parameters:function zegHallo(naam) { alert("Hallo, " + naam + "!");
} zegHallo("Sofie"); // toont: Hallo, Sofie!
✅ Je kunt meerdere parameters gebruiken:function vermenigvuldig(a, b) { return a * b;
} let resultaat = vermenigvuldig(4, 5); // 20
Een functie kan een waarde teruggeven met return:function berekenSom(x, y) { return x + y;
} let som = berekenSom(10, 15); // som = 25
📌 Alles na return wordt teruggegeven aan de plek waar de functie werd aangeroepen.Je kunt een functie ook opslaan in een variabele:let groet = function() { console.log("Hoi!");
}; groet(); // roept de functie aan
Een kortere manier om functies te schrijven (ES6):const kwadraat = (x) =&gt; { return x * x;
}; console.log(kwadraat(6)); // 36
Of nog korter als het maar één regel is:const dubbel = x =&gt; x * 2;
✅ Gebruik function om een functie te definiëren
✅ Roep een functie aan met functieNaam()
✅ Geef parameters mee om functies flexibel te maken
✅ Gebruik return om een waarde terug te geven
✅ Functies kunnen ook als expressie of arrow function worden geschreven]]></description><link>6.-javascript/6.5-functies.html</link><guid isPermaLink="false">6. JavaScript/6.5 - Functies.md</guid><pubDate>Sat, 21 Jun 2025 10:29:57 GMT</pubDate></item><item><title><![CDATA[6.4 - Loops]]></title><description><![CDATA[Soms wil je een stuk code meerdere keren uitvoeren — bijvoorbeeld om een lijst af te gaan, een teller op te bouwen, of iets te herhalen tot een bepaalde voorwaarde niet meer klopt. Daarvoor gebruik je loops. JavaScript kent drie veelgebruikte soorten: for, while en do...while.Gebruik je wanneer je precies weet hoe vaak iets moet worden herhaald.✅ Structuur:for (start; voorwaarde; stap) { // code die herhaald wordt
}
✅ Voorbeeld:for (let i = 1; i &lt;= 5; i++) { console.log("Herhaling " + i);
}
📌 Uitleg:
let i = 1 → startwaarde i &lt;= 5 → zolang deze voorwaarde waar is, blijft de loop doorgaan i++ → verhoogt i met 1 na elke herhaling <img alt="for.drawio.png" src="media/for.drawio.png" target="_self">Gebruik je wanneer je niet zeker weet hoe vaak iets moet worden herhaald, maar zolang een voorwaarde waar is.✅ Structuur:while (voorwaarde) { // code die herhaald wordt
}
✅ Voorbeeld:let teller = 0;
while (teller &lt; 3) { console.log("Teller is: " + teller); teller++;
}
<br><img alt="while.drawio.png" src="media/while.drawio.png" target="_self">⚠️ Zorg dat je de teller aanpast, anders krijg je een oneindige loop!Deze lijkt op de while-loop, maar voert de code minstens één keer uit, zelfs als de voorwaarde meteen onwaar is.✅ Structuur:do { // code die minstens één keer wordt uitgevoerd
} while (voorwaarde);
✅ Voorbeeld:let getal = 5;
do { console.log("Getal is: " + getal); getal++;
} while (getal &lt; 5);
💡 In dit voorbeeld wordt de code onder do sowieso één keer uitgevoerd, ook al is de voorwaarde getal &lt; 5 meteen onwaar.<br><img alt="dowhile.drawio.png" src="media/dowhile.drawio.png" target="_self">✅ Loops zijn krachtig in combinatie met arrays, DOM-elementen en gebruikersinteractie.
✅ Vergeet niet je teller of conditie aan te passen om oneindige loops te voorkomen!]]></description><link>6.-javascript/6.4-loops.html</link><guid isPermaLink="false">6. JavaScript/6.4 - Loops.md</guid><pubDate>Sat, 21 Jun 2025 10:28:33 GMT</pubDate><enclosure url="media/for.drawio.png" length="0" type="image/png"/><content:encoded>&lt;figure&gt;&lt;img src=&quot;media/for.drawio.png&quot;&gt;&lt;/figure&gt;</content:encoded></item><item><title><![CDATA[6.3 - Conditionals]]></title><description><![CDATA[Een belangrijk aspect van programmeren is het laten reageren op bepaalde situaties. In JavaScript doe je dat met conditionals – structuren waarmee je bepaalt of bepaalde code moet worden uitgevoerd op basis van voorwaarden. Met andere woorden: “Als dit waar is, doe dan dát.”Het if-statement is de meest gebruikte vorm van logica in JavaScript. Je controleert of een voorwaarde waar (true) is, en zo ja, voer je de bijbehorende code uit.✅ Basisstructuur:if (voorwaarde) { // code wordt uitgevoerd als de voorwaarde waar is
}
✅ Voorbeeld:let leeftijd = 18; if (leeftijd &gt;= 18) { alert("Je mag stemmen!.");
}
<img alt="if.png" src="media/if.png" target="_self">Wil je ook iets laten gebeuren als de voorwaarde niet waar is? Gebruik dan else:if (leeftijd &gt;= 18) { alert("Welkom!");
} else { alert("Sorry, je bent te jong.");
}
<br><img alt="ifelse.drawio.png" src="media/ifelse.drawio.png" target="_self">Voor meerdere mogelijkheden gebruik je else if:let punt = 8; if (punt &gt;= 9) { alert("Uitmuntend!");
} else if (punt &gt;= 6) { alert("Geslaagd!");
} else { alert("Herkansing nodig.");
}
👉 Let op: de code voert enkel het eerste kloppende blok uit.<br><img alt="ifelseif.drawio.png" src="media/ifelseif.drawio.png" target="_self">Je kunt allerlei vergelijkingen doen in een if:if (getal === 10) // gelijk aan
if (naam !== "Anna") // ongelijk aan
if (a &gt; b &amp;&amp; b &gt; 0) // beide waar
if (x &lt; 10 || y &gt; 5) // minstens één waar
Gebruik altijd === i.p.v. == om ook het datatype te vergelijken!Als je meerdere vaste keuzemogelijkheden hebt voor één variabele, is een switch handiger dan een hele keten van if-statements.✅ Structuur:switch (dag) { case "maandag": console.log("Begin van de week"); break; case "vrijdag": console.log("Bijna weekend!"); break; case "zondag": console.log("Rustdag"); break; default: console.log("Gewone werkdag");
}
📌 Gebruik break om te voorkomen dat de code doorschuift naar de volgende case. 📌 De default wordt uitgevoerd als geen van de cases overeenkomt.<br><img alt="switch.drawio.png" src="media/switch.drawio.png" target="_self">✅ Gebruik if, else if, else om voorwaarden op te stellen
✅ Gebruik logische (&amp;&amp;, ||) en vergelijkingsoperatoren (===, !==)
✅ Gebruik switch bij meerdere vaste keuzes
✅ Gebruik break in je switch om doorspringen te voorkomen
✅ Denk logisch: stel jezelf de vraag “Wat als dit gebeurt…?” en bouw daarop]]></description><link>6.-javascript/6.3-conditionals.html</link><guid isPermaLink="false">6. JavaScript/6.3 - Conditionals.md</guid><pubDate>Sat, 21 Jun 2025 10:17:44 GMT</pubDate><enclosure url="media/if.png" length="0" type="image/png"/><content:encoded>&lt;figure&gt;&lt;img src=&quot;media/if.png&quot;&gt;&lt;/figure&gt;</content:encoded></item><item><title><![CDATA[6.1 - Inleiding]]></title><description><![CDATA[Welkom in de wereld van JavaScript — de derde laag van het web naast HTML (structuur) en CSS (opmaak). Met JavaScript geef je je website leven en interactie: dynamische pop-ups, formuliercontrole, animaties, interactieve knoppen en nog véél meer.Hoewel de naam het anders doet vermoeden, is JavaScript geen afgeleide van Java. De naam was een slimme marketingzet in een tijd waarin Java opkwam. JavaScript heette oorspronkelijk zelfs Mocha!JavaScript is een scripttaal die door de browser wordt uitgevoerd. Het is:
Niet gecompileerd, maar direct geïnterpreteerd Dynamisch getypeerd → je hoeft geen datatypes zoals int of String te specificeren Flexibel, met ondersteuning voor functies, objecten, conditionals, loops en meer Overal beschikbaar → draait op vrijwel elk apparaat met een browser 💡 Voorbeelden van wat je met JavaScript kunt doen:
Een popup tonen met een waarschuwing Knoppen interactief maken Een formulier valideren Een spel bouwen Een animatie starten zodra je scrollt HTML → structuur
CSS → visuele vormgeving
JavaScript → gedrag / interactie
(PHP en andere server-side talen komen daar nog bij als je werkt met back-end en databases.)We maken een eenvoudige melding op je scherm met:&lt;script&gt; alert("Hallo wereld!");
&lt;/script&gt;
✅ Wat gebeurt hier?
alert() is een standaardfunctie die een melding toont Je plaatst JavaScript tussen &lt;script&gt; tags Net als in Java sluit je af met een puntkomma Om HTML-elementen te manipuleren gebruikt JavaScript het Document Object Model (DOM). Hiermee kun je bijvoorbeeld:&lt;input type="text" id="naamvak" placeholder="Jouw naam"&gt;
let naam = document.getElementById("naamvak").value;
👉 Dit haalt de waarde uit het invoerveld met id "naamvak"Twee manieren om JavaScript toe te voegen:&lt;script&gt; console.log("Dit staat direct in de pagina");
&lt;/script&gt;
&lt;script src="js/script.js" type="application/javascript"&gt;&lt;/script&gt;
🧠 Externe scripts worden herbruikbaar, overzichtelijk, en sneller dankzij caching! Daarom geven we in de meeste gevallen de voorkeur aan externe bestanden.Plaats &lt;script&gt; bij voorkeur onderaan de &lt;body&gt; van je HTML-bestand, net voor de sluitingstag:&lt;body&gt; &lt;!-- inhoud --&gt; &lt;script src="js/script.js"&gt;&lt;/script&gt;
&lt;/body&gt;
✅ Voordelen:
Eerst laadt de inhoud van de pagina Daarna wordt JavaScript geladen Alles wat in je script naar elementen verwijst, bestaat dan al! Eén van de meest gebruikte methodes:let titel = document.getElementById("hoofdtitel");
Zo kun je met JavaScript een HTML-element selecteren en bijvoorbeeld wijzigen, verbergen, manipuleren of verwijderen.✅ JavaScript = dynamiek en interactie op je website
✅ Gebruik inline of externe scripts (voorkeur: extern)
✅ Werk samen met HTML en CSS via het DOM
✅ Gebruik getElementById() om elementen te selecteren
✅ Plaats je scripts onderaan de pagina voor betere prestaties]]></description><link>6.-javascript/6.1-inleiding.html</link><guid isPermaLink="false">6. JavaScript/6.1 - Inleiding.md</guid><pubDate>Sat, 21 Jun 2025 09:56:39 GMT</pubDate></item><item><title><![CDATA[6.2 - Variabelen, datatypes en operatoren]]></title><description><![CDATA[In deze paragraaf duiken we in een belangrijk fundament van JavaScript: variabelen, datatypes en operatoren. Veel hiervan lijkt op wat je al tijdens het vak programmeren hebt geleerd, maar JavaScript is soepeler qua structuur — en dat maakt het zowel krachtig als toegankelijke taal voor dynamisch programmeren.In JavaScript kun je variabelen aanmaken met de sleutelwoorden let en const:let naam = "Anna";
let leeftijd = 17;
💡 De waarde van een let-variabele kun je later opnieuw toekennen.const PI = 3.14;
💡 De waarde van const kan niet meer aangepast worden. Je móét direct een waarde meegeven!var x = 5; // verouderd en onvoorspelbaar gedrag bij scoping
Gebruik altijd let of const i.p.v. var – deze laatste stamt uit de oude tijd vóór ES6.Hoewel je in JavaScript geen datatype hoeft te specificeren, bestaan ze wel degelijk "onder de motorkap":let cijfer = 8;
let pi = 3.14159;
JavaScript maakt geen onderscheid tussen gehele getallen en kommagetallen — alles is van het type number.let tekst = "Hallo!";
let andereTekst = 'Wereld'; Je mag enkel- of dubbelquotes gebruiken Gebruik \n voor een nieuwe regel Strings werken met dot-notatie zoals in Java: tekst.length // lengte van de string
tekst.charAt(1) // karakter op index 1
tekst.toUpperCase() // hoofdletters
tekst.indexOf("a") // positie van 'a'
let isActief = true;
let isLid = false;
✔ Een boolean kent twee waarden: true of false.let ongedefinieerd; // undefined
let leeg = null; // bewust leeg
✅ Niet geïnitialiseerde variabelen krijgen automatisch de waarde undefined.
📌 Let op: + wordt ook gebruikt voor String-concatenatie.
5 == "5" // true (type wordt genegeerd)
5 === "5" // false (type strikt vergeleken)
let a = true;
let b = false; a &amp;&amp; b // false
a || b // true
!b // true
✅ Gebruik let voor variabelen, const voor constante waarden
✅ JavaScript kent number, string, boolean, null en undefined
✅ Operatoren voor rekenen, logica en vergelijking zijn grotendeels zoals in Java of C#
✅ Voorkom het gebruik van var om bugs te vermijden
✅ Maak slim gebruik van === en !== om verwarring te voorkomen]]></description><link>6.-javascript/6.2-variabelen,-datatypes-en-operatoren.html</link><guid isPermaLink="false">6. JavaScript/6.2 - Variabelen, datatypes en operatoren.md</guid><pubDate>Sat, 21 Jun 2025 09:55:08 GMT</pubDate></item><item><title><![CDATA[5.4 - Bootstrap Grid]]></title><description><![CDATA[Het Bootstrap Grid-systeem is het kloppende hart van responsive design binnen Bootstrap. Hiermee bouw je razendsnel flexibele lay-outs die zich automatisch aanpassen aan verschillende schermgroottes, zonder dat je zelf complexe media queries hoeft te schrijven.Het grid-systeem in Bootstrap is opgebouwd uit containers, rijen (rows) en kolommen (columns).✅ Structuur in HTML:&lt;div class="container"&gt; &lt;div class="row"&gt; &lt;div class="col"&gt;Kolom 1&lt;/div&gt; &lt;div class="col"&gt;Kolom 2&lt;/div&gt; &lt;div class="col"&gt;Kolom 3&lt;/div&gt; &lt;/div&gt;
&lt;/div&gt;
🧱 De &lt;div class="row"&gt; groepeert kolommen horizontaal 📦 Elke &lt;div class="col"&gt; is een kolom binnen de rij➡️ De .col-klassen worden automatisch even breed verdeeld over de rij.Bootstrap gebruikt een 12-koloms grid. Je kunt zelf bepalen hoeveel kolommen een element inneemt per rij.<img alt="bootstrapGrid.png" src="media/bootstrapgrid.png" target="_self">✅ Voorbeeld met verschillende kolombreedtes:&lt;div class="row"&gt; &lt;div class="col-6"&gt;50%&lt;/div&gt; &lt;div class="col-4"&gt;33%&lt;/div&gt; &lt;div class="col-2"&gt;17%&lt;/div&gt;
&lt;/div&gt;
🎯 De optelsom per rij mag maximaal 12 zijn.Wil je dat het gedrag per schermgrootte verandert? Gebruik dan breekpunten:✅ Voorbeeld:&lt;div class="col-12 col-md-6 col-lg-4"&gt; &lt;!-- Volledige breedte op mobiel, halve op tablet, 1/3 op desktop --&gt;
&lt;/div&gt;
Je kunt ook grids nesten binnen kolommen:&lt;div class="col"&gt; &lt;div class="row"&gt; &lt;div class="col-6"&gt;Nested kolom&lt;/div&gt; &lt;div class="col-6"&gt;Nested kolom&lt;/div&gt; &lt;/div&gt;
&lt;/div&gt;
En je kunt elementen centreren of uitlijnen met Bootstrap’s utility classes zoals justify-content-center, align-items-end, enz.<br><img alt="bootstrapGrid2.png" src="media/bootstrapgrid2.png" target="_self">&lt;div class="container text-center"&gt; &lt;div class="row"&gt; &lt;div class="col-sm-3"&gt; Level 1: .col-sm-3 &lt;/div&gt; &lt;div class="col-sm-9"&gt; &lt;div class="row"&gt; &lt;div class="col-8 col-sm-6"&gt; Level 2: .col-8 .col-sm-6 &lt;/div&gt; &lt;div class="col-4 col-sm-6"&gt; Level 2: .col-4 .col-sm-6 &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;
&lt;/div&gt;
✅ Bootstrap’s grid gebruikt een 12-koloms layout
✅ Werk met .container → .row → .col structuur
✅ Gebruik col-, col-sm-, col-md-, enz. voor responsive gedrag
✅ Kolommen kunnen automatisch of handmatig worden verdeeld
✅ Combineer met Flexbox classes voor uitlijning]]></description><link>5.-bootsrap/5.4-bootstrap-grid.html</link><guid isPermaLink="false">5. Bootsrap/5.4 - Bootstrap Grid.md</guid><pubDate>Sat, 21 Jun 2025 09:50:38 GMT</pubDate><enclosure url="media/bootstrapgrid.png" length="0" type="image/png"/><content:encoded>&lt;figure&gt;&lt;img src=&quot;media/bootstrapgrid.png&quot;&gt;&lt;/figure&gt;</content:encoded></item><item><title><![CDATA[5.5 - Componenten]]></title><description><![CDATA[Bootstrap 5 bevat een enorme verzameling herbruikbare UI-componenten die je met slechts een paar klassen kunt toevoegen aan je website. Denk aan knoppen, kaarten, navigatiebalken, meldingen, modals, carrousels, badges, formulieren en nog veel meer. Deze componenten zijn volledig gestyled, responsief en consistent — en je kunt ze eenvoudig aanpassen met extra klassen of eigen CSS.✅ Tijdswinst – Je hoeft geen knoppen, kaarten of navigatiebalken zelf te ontwerpen.
✅ Consistentie – Alles volgt dezelfde visuele stijl.
✅ Responsief gedrag – Componenten passen zich automatisch aan aan verschillende schermgroottes.
✅ Interactiviteit – Veel componenten bevatten ingebouwde JavaScript-functionaliteit (zoals dropdowns of modals).<img alt="BootstrapButtons.png" src="media/bootstrapbuttons.png" target="_self">Bootstrap biedt verschillende stijlen voor knoppen:&lt;button type="button" class="btn btn-primary"&gt;Primary&lt;/button&gt;
&lt;button type="button" class="btn btn-secondary"&gt;Secondary&lt;/button&gt;
&lt;button type="button" class="btn btn-success"&gt;Success&lt;/button&gt;
&lt;button type="button" class="btn btn-danger"&gt;Danger&lt;/button&gt;
&lt;button type="button" class="btn btn-warning"&gt;Warning&lt;/button&gt;
&lt;button type="button" class="btn btn-info"&gt;Info&lt;/button&gt;
&lt;button type="button" class="btn btn-light"&gt;Light&lt;/button&gt;
&lt;button type="button" class="btn btn-dark"&gt;Dark&lt;/button&gt;
Je kunt ook knoppen kleiner of groter maken:&lt;button type="button" class="btn btn-primary btn-sm"&gt;Klein&lt;/button&gt;
&lt;button type="button" class="btn btn-primary btn-lg"&gt;Groot&lt;/button&gt;
Of een knop als link gebruiken:&lt;button type="button" class="btn btn-link"&gt;Link&lt;/button&gt;
<br><img alt="BootstrapCard.png" src="media/bootstrapcard.png" target="_self">Een kaart is een visueel blok met afbeelding, titel, tekst en knoppen:&lt;div class="card" style="width: 18rem;"&gt; &lt;img src="images/voorbeeld.jpg" class="card-img-top" alt="Afbeelding"&gt; &lt;div class="card-body"&gt; &lt;h5 class="card-title"&gt;Kaarttitel&lt;/h5&gt; &lt;p class="card-text"&gt;Korte beschrijving van de inhoud.&lt;/p&gt; &lt;a href="#" class="btn btn-primary"&gt;Lees meer&lt;/a&gt; &lt;/div&gt;
&lt;/div&gt;
Je kunt kaarten combineren in een grid:&lt;div class="row"&gt; &lt;div class="col-md-4"&gt; &lt;div class="card"&gt;...&lt;/div&gt; &lt;/div&gt; &lt;div class="col-md-4"&gt; &lt;div class="card"&gt;...&lt;/div&gt; &lt;/div&gt; &lt;div class="col-md-4"&gt; &lt;div class="card"&gt;...&lt;/div&gt; &lt;/div&gt;
&lt;/div&gt;
<br><img alt="BootstrapNavbar.png" src="media/bootstrapnavbar.png" target="_self"><br><img alt="BootstrapNavbar2.png" src="media/bootstrapnavbar2.png" target="_self">Een responsieve navigatiebalk:&lt;nav class="navbar navbar-expand-lg navbar-light bg-light"&gt; &lt;div class="container-fluid"&gt; &lt;a class="navbar-brand" href="#"&gt;MijnSite&lt;/a&gt; &lt;button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navigatie"&gt; &lt;span class="navbar-toggler-icon"&gt;&lt;/span&gt; &lt;/button&gt; &lt;div class="collapse navbar-collapse" id="navigatie"&gt; &lt;ul class="navbar-nav me-auto mb-2 mb-lg-0"&gt; &lt;li class="nav-item"&gt;&lt;a class="nav-link active" href="#"&gt;Home&lt;/a&gt;&lt;/li&gt; &lt;li class="nav-item"&gt;&lt;a class="nav-link" href="#"&gt;Over&lt;/a&gt;&lt;/li&gt; &lt;li class="nav-item"&gt;&lt;a class="nav-link" href="#"&gt;Contact&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;/div&gt;
&lt;/nav&gt;
Deze navbar past zich automatisch aan op mobiele schermen door middel van een zogenaamd hamburgermenu.<br><img alt="BootstrapNavbar3.png" src="media/bootstrapnavbar3.png" target="_self"><br><img alt="BootstrapAlerts.png" src="media/bootstrapalerts.png" target="_self">Gebruik meldingen om gebruikers te informeren:&lt;div class="alert alert-success" role="alert"&gt; Je bent succesvol ingelogd!
&lt;/div&gt; &lt;div class="alert alert-danger" role="alert"&gt; Er is een fout opgetreden.
&lt;/div&gt;
Je kunt meldingen ook afsluitbaar maken:&lt;div class="alert alert-warning alert-dismissible fade show" role="alert"&gt; Let op! Dit is een waarschuwing. &lt;button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Sluiten"&gt;&lt;/button&gt;
&lt;/div&gt;
<br><img alt="bootstrapBadge.png" src="media/bootstrapbadge.png" target="_self"><br><img alt="bootstrapBadge2.png" src="media/bootstrapbadge2.png" target="_self">Kleine labels of tellers:&lt;h1&gt;Berichten &lt;span class="badge bg-primary"&gt;4&lt;/span&gt;&lt;/h1&gt;
&lt;button class="btn btn-secondary"&gt; Notificaties &lt;span class="badge bg-light text-dark"&gt;7&lt;/span&gt;
&lt;/button&gt;
<br><img alt="bootstrapModal.png" src="media/bootstrapmodal.png" target="_self">&lt;!-- Trigger --&gt;
&lt;button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#voorbeeldModal"&gt; Open Modal
&lt;/button&gt; &lt;!-- Modal --&gt;
&lt;div class="modal fade" id="voorbeeldModal" tabindex="-1" aria-labelledby="voorbeeldModalLabel" aria-hidden="true"&gt; &lt;div class="modal-dialog"&gt; &lt;div class="modal-content"&gt; &lt;div class="modal-header"&gt; &lt;h5 class="modal-title" id="voorbeeldModalLabel"&gt;Titel&lt;/h5&gt; &lt;button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Sluiten"&gt;&lt;/button&gt; &lt;/div&gt; &lt;div class="modal-body"&gt; Dit is de inhoud van de modal. &lt;/div&gt; &lt;div class="modal-footer"&gt; &lt;button type="button" class="btn btn-secondary" data-bs-dismiss="modal"&gt;Sluiten&lt;/button&gt; &lt;button type="button" class="btn btn-primary"&gt;Opslaan&lt;/button&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;
&lt;/div&gt;
Bootstrap-componenten zijn ontworpen om samen te werken. Je kunt bijvoorbeeld een kaart in een kolom zetten, met een knop erin die een modal opent. Of een formulier in een modal, met badges in de navigatiebalk. Alles is modulair en uitbreidbaar.Je vindt een volledig overzicht van alle componenten op de officiële documentatie van Bootstrap 5 Components. Of blader door meer dan 300 voorbeelden op BootstrapExamples.com.✅ Bootstrap-componenten zijn snel, stijlvol en responsief
✅ Voeg ze toe met eenvoudige HTML en classnamen
✅ Combineer ze met utility-klassen voor nog meer controle
✅ Veel componenten zijn interactief dankzij ingebouwde JavaScript
✅ Je kunt ze uitbreiden of overschrijven met je eigen CSS]]></description><link>5.-bootsrap/5.5-componenten.html</link><guid isPermaLink="false">5. Bootsrap/5.5 - Componenten.md</guid><pubDate>Sat, 21 Jun 2025 09:46:58 GMT</pubDate><enclosure url="media/bootstrapbuttons.png" length="0" type="image/png"/><content:encoded>&lt;figure&gt;&lt;img src=&quot;media/bootstrapbuttons.png&quot;&gt;&lt;/figure&gt;</content:encoded></item><item><title><![CDATA[5.3 - Containers]]></title><description><![CDATA[Containers zijn de ruggengraat van elke Bootstrap lay-out. Ze bieden een flexibele, responsieve structuur waarin je andere elementen kunt plaatsen — zoals rijen, kolommen, navigatie, kaarten, buttons, enz. We hebben dit concept al eerder gezien, maar Bootstrap tilt het naar een hoger niveau met slimme ingebouwde breekpunten en schaalopties.✅ Voorbeelden:&lt;div class="container"&gt; &lt;!-- Inhoud wordt gecentreerd --&gt;
&lt;/div&gt; &lt;div class="container-fluid"&gt; &lt;!-- Inhoud strekt zich uit over de volledige breedte --&gt;
&lt;/div&gt;
🧠 Belangrijk: containers zijn bedoeld om andere onderdelen van je layout in op te bouwen, zoals het grid-systeem. Gebruik ze als eerste stap in je HTML-body of hoofdsectie.✅ Gebruik .container voor lay-outs met vaste breedte en mooie marges
✅ Gebruik .container-fluid voor layouts die 100% schermbreedte nodig hebben
✅ Beide zijn perfect voorbereid op responsive gedrag
✅ Je gebruikt containers als eerste stap vóór je Bootstrap grid opbouwt]]></description><link>5.-bootsrap/5.3-containers.html</link><guid isPermaLink="false">5. Bootsrap/5.3 - Containers.md</guid><pubDate>Sat, 21 Jun 2025 09:15:21 GMT</pubDate></item><item><title><![CDATA[5.1 - Inleiding]]></title><description><![CDATA[Tot nu toe heb je alles van de grond af opgebouwd met handgeschreven HTML en CSS. Dat heeft je een stevige basis gegeven — en die heb je ook nodig om nu de sprong te maken naar sneller, slimmer en moderner webdesign. Vanaf dit hoofdstuk introduceren we Bootstrap 5: een van de populairste front-end frameworks ter wereld.Bootstrap is een open-source CSS-framework waarmee je snel moderne, responsieve websites kunt bouwen zonder alles vanaf nul te coderen. Het is ontwikkeld door Twitter en wordt vandaag de dag wereldwijd gebruikt door zowel beginners als professionals.✅ Belangrijkste voordelen:
Responsieve layout dankzij het ingebouwde gridsysteem
Kant-en-klare componenten zoals knoppen, navigatiebalken, kaarten, badges, enz.
Mobielvriendelijk (mobile-first) ontwerp met focus op schaalbaarheid
Aanpasbaarheid via eigen CSS of overrides
Geweldige documentatie op getbootstrap.com
Gratis en zonder licentiebeperkingen – gewoon downloaden en gebruiken
Hoewel het waardevol is om HTML en CSS handmatig te schrijven, is dat in de praktijk vaak tijdsintensief en foutgevoelig. Frameworks zoals Bootstrap zorgen voor:✔ Snellere ontwikkeling
✔ Consistente styling
✔ Betere toegankelijkheid
✔ Responsief gedrag out-of-the-boxDaarom gaan we vanaf nu bij nieuwe projecten werken met Bootstrap in PhpStorm.🎯 Zo begin je een nieuw project:
Start een nieuw project
Kies niet voor “Empty Project”, maar voor Bootstrap 5 project
Kies de gewenste versie (tip: gebruik altijd de laatste)
Geef je project een passende naam
👀 Aan de linkerkant in je Project View zie je nu dat PhpStorm automatisch Bootstrap-mappen en bestanden heeft toegevoegd.Je ziet een verzameling CSS- en JavaScript-bestanden:
bootstrap.css en/of bootstrap.min.css bootstrap.bundle.js of bootstrap.min.js Mogelijk een fonts/ of icons/ map Een HTML-sjabloonbestand met Bootstrap geïmporteerd ✅ Je mag deze bestanden niet wijzigen! Gebruik in plaats daarvan je eigen aangepaste bestanden om extra stijl toe te voegen of Bootstrap-stijlregels te overschrijven.Bootstrap 5 is van nature mobile-first: de standaard-opmaak is voor kleine schermen, en via media queries bouw je op naar grotere schermen.Toch biedt Bootstrap voldoende flexibiliteit om ook desktop-first te werken, afhankelijk van je workflow of project.✅ Bootstrap = snel, responsief en professioneel framework
✅ Inclusief voorgedefinieerde componenten, layout-tools en utilities
✅ Ideaal in combinatie met PhpStorm dankzij integratie van bestanden en templates
✅ Start met je eigen CSS en JS aanvullingen — maar blijf uit de Bootstrap-bestanden zelf!
✅ Mobile-first in de kern, maar desktop-first is ook prima mogelijk]]></description><link>5.-bootsrap/5.1-inleiding.html</link><guid isPermaLink="false">5. Bootsrap/5.1 - Inleiding.md</guid><pubDate>Sat, 21 Jun 2025 09:13:21 GMT</pubDate></item><item><title><![CDATA[4.5 - Grid]]></title><description><![CDATA[Met CSS Grid beschik je over de meest krachtige en flexibele manier om een volledige lay-out van een webpagina te structureren. Denk aan een raster (grid) waarin je elementen op logische posities plaatst: headers bovenaan, footers onderaan, navigatie aan de zijkant, content in het midden… en dat alles met minimale code.Het lijkt misschien op het werken met een HTML-tabel, maar CSS Grid is veel moderner en dynamischer, geschikt voor elk schermformaat.<img alt="7vpUPMSbPfhxiUNYj5XnE6.jpg" height="391" src="media/7vpupmsbpfhxiunyj5xne6.jpg" target="_self" style="width: 695px; max-width: 100%;">Een grid bestaat uit rijen en kolommen. Binnen een container kun je aangeven hoeveel kolommen (en eventueel rijen) je wilt, wat hun breedte is, en welke elementen waar moeten komen.✅ Voorbeeldstructuur:&lt;div class="container"&gt; &lt;header&gt;&lt;/header&gt; &lt;nav&gt;&lt;/nav&gt; &lt;main&gt;&lt;/main&gt; &lt;footer&gt;&lt;/footer&gt;
&lt;/div&gt;
.container { display: grid; grid-template-columns: auto auto auto auto; gap: 10px;
}
Alle elementen binnen .container worden automatisch grid-items. Je plaatst ze door eigenschappen zoals grid-column of grid-row te gebruiken.✅ Manieren om kolommen te definiëren:grid-template-columns: 200px 250px 250px 200px; /* vaste breedtes */
grid-template-columns: auto auto auto auto; /* flexibele breedtes */
grid-template-columns: 200px auto 250px 200px; /* combinatie */
✅ Rijen toevoegen en ruimte tussen de vakken:grid-template-rows: 100px auto 150px;
gap: 20px; /* ruimte tussen cellen */
✅ Voorbeeld met positionering:header { grid-column: 1 / span 4;
} nav { grid-column: 2 / span 2;
} main { grid-column: 1 / span 3;
} footer { grid-column: 1 / span 2;
}
📌 De volgorde waarin elementen in de HTML staan, bepaalt in welk vakje ze worden geplaatst — tenzij je dat zelf overschrijft met grid-row of grid-area.Een alternatieve en vaak visueel aantrekkelijkere manier om grids op te bouwen is via grid-template-areas.✅ Voorbeeld:.container { display: grid; grid-template-areas: "hdr hdr hdr" "nav nav nav" ". cnt cnt" ". ftr .";
}
✅ Toewijzing in de elementen:.hdr { grid-area: hdr; }
.nav { grid-area: nav; }
.cnt { grid-area: cnt; }
.ftr { grid-area: ftr; }
📌 Regels:
Elke rij in grid-template-areas moet tussen dubbele aanhalingstekens staan
Gebruik . voor lege vakken
Elke naam moet rechthoekig aaneengesloten zijn
Area-namen moeten uniek zijn
✍️ Pro tip: gebruik afkortingen zoals .hdr, .nav, .cnt om minder te typen in zowel HTML als CSS.Het is ook mogelijk om grid-template-columns en grid-template-areas te combineren.<br><img alt="grid-areas-0.png" height="602" src="media/grid-areas-0.png" target="_self" style="width: 696px; max-width: 100%;">Tot slot nog een krachtige troef van Grid: de fr-eenheid (kort voor fractional).✅ Voorbeeld:grid-template-columns: 1fr 2fr 1fr;
💡 Hier krijgt de middelste kolom dubbel zoveel ruimte als de andere twee. De totale breedte wordt verdeeld in vier eenheden (1+2+1), waarvan kolom 1 en 3 elk 1/4 krijgen, en kolom 2 krijgt 1/2. Je laat de browser zelf berekenen hoeveel pixels de kolommen breed moeten zijn, aan de hand van de breedte van het scherm. Je bent dan dus met breuken aan het werken. Het grote voordeel is ook dat grid gaps worden meegenomen in de berekening!🚀 Dit maakt je layout schaalbaar en responsief zonder pixels of percentages te hoeven gebruiken.<br><img alt="ezgif.com-webp-to-jpg-converter (2).jpg" height="487" src="media/ezgif.com-webp-to-jpg-converter-(2).jpg" target="_self" style="width: 698px; max-width: 100%;">✅ CSS Grid is perfect voor het bouwen van complete pagina-layouts
✅ Je maakt een grid-container met display: grid
✅ Gebruik grid-template-columns, grid-column of grid-template-areas om te positioneren
✅ Combineer met fr, auto, px, en gap voor optimale controle
✅ grid-template-areas geeft een visuele weergave van je structuur
✅ Perfect te combineren met Flexbox in componenten binnen je grid]]></description><link>4.-responsive-design/4.5-grid.html</link><guid isPermaLink="false">4. Responsive Design/4.5 - Grid.md</guid><pubDate>Sat, 21 Jun 2025 09:10:57 GMT</pubDate><enclosure url="media/7vpupmsbpfhxiunyj5xne6.jpg" length="0" type="image/jpeg"/><content:encoded>&lt;figure&gt;&lt;img src=&quot;media/7vpupmsbpfhxiunyj5xne6.jpg&quot;&gt;&lt;/figure&gt;</content:encoded></item><item><title><![CDATA[4.4 - Flexbox]]></title><description><![CDATA[Flexbox (voluit CSS Flexible Box Layout) is een moderne manier om HTML-elementen dynamisch en responsief te positioneren, zonder gedoe met floats of vaste afmetingen. Het geeft je volledige controle over uitlijning, richting, verdeling van ruimte en herschikking van elementen, afhankelijk van de schermgrootte.Een flexbox is een container (bijvoorbeeld een &lt;div&gt;-element) waarin je meerdere elementen — de zogeheten childelementen — plaatst. Dankzij de regel display: flex verandert die container in een flexibele lay-outstructuur.✅ HTML + CSS-basis:&lt;div class="flex-container"&gt; &lt;div&gt;Box 1&lt;/div&gt; &lt;div&gt;Box 2&lt;/div&gt; &lt;div&gt;Box 3&lt;/div&gt;
&lt;/div&gt;
.flex-container { display: flex;
}
Zodra je display: flex instelt, gaan de elementen naast elkaar staan (horizontaal, row), tenzij je aangeeft dat ze onder elkaar moeten staan (verticaal, column).Met flex-direction bepaal je in welke richting de elementen zich ordenen binnen de flex-container:✅ Voorbeeld:.flex-container { display: flex; flex-direction: row;
}
Zodra je meerdere elementen in een flexbox hebt, wil je bepalen hoe ze verdeeld en uitgelijnd worden. Hier komen onder andere justify-content en align-items in beeld:✅ Voorbeeld met horizontale spreiding en gecentreerde verticale uitlijning:.flex-container { display: flex; flex-direction: row; justify-content: space-between; align-items: center; gap: 20px;
}
<img alt="1491744839-f7b93bc63a671622f48e5f9e77272e16.jpg" height="330" src="media/1491744839-f7b93bc63a671622f48e5f9e77272e16.jpg" target="_self" style="width: 696px; max-width: 100%;">Met Flexbox kun je met weinig code automatisch responsive gedrag krijgen, bijvoorbeeld door flex-wrap: wrap toe te voegen bij kleine schermen.✅ Voorbeeld mobile-first layout:.flex-container { display: flex; flex-wrap: wrap; gap: 1rem;
}
Hoewel flexbox ideaal is voor componentgebaseerde layouts (zoals een knoppenrij, een kaartenrij of een navbalk), is het niet geschikt om hele pagina’s in rijen en kolommen op te bouwen.Daarvoor gebruiken we vaak een combinatie:
Grid voor de globale structuur → zoals header, sidebar, main, footer
Flexbox binnen elke sectie → zoals het netjes schikken van knoppen, kaarten of tabellen binnen die gebieden
Hierover meer in paragraaf 4.5 – Grid.✅ Flexbox is een flexibel model om elementen responsief en efficiënt te ordenen
✅ display: flex maakt van een container een flexbox
✅ Met flex-direction, justify-content en align-items regel je de opmaak en uitlijning
✅ Flexbox = perfect voor componenten, niet voor pagina-layouts
✅ Gebruik flex-wrap en gap om je layout schoon en responsive te houden]]></description><link>4.-responsive-design/4.4-flexbox.html</link><guid isPermaLink="false">4. Responsive Design/4.4 - Flexbox.md</guid><pubDate>Fri, 20 Jun 2025 12:19:54 GMT</pubDate><enclosure url="media/1491744839-f7b93bc63a671622f48e5f9e77272e16.jpg" length="0" type="image/jpeg"/><content:encoded>&lt;figure&gt;&lt;img src=&quot;media/1491744839-f7b93bc63a671622f48e5f9e77272e16.jpg&quot;&gt;&lt;/figure&gt;</content:encoded></item><item><title><![CDATA[4.3 - @Media]]></title><description><![CDATA[<img alt="css-media-query.png" height="440" src="media/css-media-query.png" target="_self" style="width: 684px; max-width: 100%;">Om een website echt responsive te maken, is één hulpmiddel onmisbaar: media queries. Ze maken het mogelijk om CSS-regels toe te passen afhankelijk van het schermformaat, de oriëntatie of zelfs het type device. In feite zeg je met @media: “Voer deze opmaak alleen uit als aan deze voorwaarde is voldaan.”Een media query is een soort if-statement voor CSS. De browser controleert eigenschappen van het scherm (zoals breedte of hoogte), en voert alleen de CSS-code binnen de query uit als de voorwaarde 'true' is.✅ Basisvorm:@media (min-width: 600px) { body { background-color: lightgray; }
}
💡 Je kunt min-width, max-width, orientation, en andere eigenschappen gebruiken.✅ Overzicht van voorwaarden:✅ Combineren van queries:@media (min-width: 600px) and (max-width: 800px) { article { width: 100%; margin: auto; }
}
Hieronder enkele richtlijnen voor verschillende schermgroottes, vaak gebruikt bij responsive ontwerp:/* Smartphones (≤ 480px) */
@media (max-width: 480px) { … } /* Kleine tablets en grote telefoons (≥ 600px) */
@media (min-width: 600px) { … } /* Tablets (≥ 768px) */
@media (min-width: 768px) { … } /* Laptops/desktops (≥ 992px) */
@media (min-width: 992px) { … } /* Grote desktops (≥ 1200px) */
@media (min-width: 1200px) { … }
📌 Let op: deze zijn richtlijnen, geen vaste regels. Je kunt ze aanpassen aan de noden van jouw ontwerp.Bij mobile first design begin je met de CSS-opmaak voor het kleinste schermformaat (vaak smartphones), en bouw je daarna uit met @media queries voor grotere schermen.✅ Structuur voorbeeld (mobile first):/* Basisopmaak voor kleine schermen */
body { font-size: 1rem;
} /* Grotere schermen krijgen extra styling */
@media (min-width: 768px) { body { font-size: 1.25rem; }
}
🚀 Voordelen:
Snellere laadtijd op mobiele apparaten
Meer controle over performance
Gebaseerd op het toenemende mobiele gebruik
Bij desktop first design is het omgekeerd: je begint met een layout voor grote schermen en werkt met @media queries naar kleinere schermformaten toe.✅ Structuur voorbeeld (desktop first):/* Basisopmaak voor desktops */
body { font-size: 1.25rem;
} /* Kleinere schermen krijgen aangepaste styling */
@media (max-width: 767px) { body { font-size: 1rem; }
}
⚠️ Desktop first is eenvoudiger bij projecten die standaard op grotere schermen draaien, zoals admin dashboards of intranetwebsites.✅ @media queries zijn de sleutel tot responsive design
✅ Je kunt ze gebruiken met min-width, max-width, orientation, enz.
✅ Gebruik mobile first of desktop first afhankelijk van je doelgroep
✅ Combineer meerdere queries voor verfijnde controle over layout en styling]]></description><link>4.-responsive-design/4.3-@media.html</link><guid isPermaLink="false">4. Responsive Design/4.3 - @Media.md</guid><pubDate>Fri, 20 Jun 2025 12:16:27 GMT</pubDate><enclosure url="media/css-media-query.png" length="0" type="image/png"/><content:encoded>&lt;figure&gt;&lt;img src=&quot;media/css-media-query.png&quot;&gt;&lt;/figure&gt;</content:encoded></item><item><title><![CDATA[4.2 - Viewport]]></title><description><![CDATA[<img alt="images.png" height="313" src="media/images.png" target="_self" style="width: 625px; max-width: 100%;">De viewport is het zichtbare deel van een webpagina binnen het scherm van een gebruiker. Wat een gebruiker ziet, is dus afhankelijk van de grootte van zijn of haar scherm: een desktop heeft een grotere viewport dan een smartphone.🧠 Vroeger waren websites vaak statisch en afgestemd op slechts één schermformaat: de standaard pc-monitor. Tegenwoordig is dat ondenkbaar. Gebruikers surfen op mobiele telefoons, tablets, laptops én televisies. Responsive design moet dus adaptief zijn — en dat begint bij het begrijpen van de viewport.Met de introductie van HTML5 kwam de gamechanger: een specifieke meta-tag die de browser vertelt hoe hij de pagina moet schalen op verschillende schermen.✅ Codevoorbeeld:&lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt; width=device-width → de breedte van de viewport wordt ingesteld op die van het apparaat.
initial-scale=1.0 → zoomniveau is 100%, zonder automatisch in- of uitzoomen.
🚀 Zonder deze meta-tag schalen mobiele browsers je website vaak verkeerd in, waardoor alles er klein of onleesbaar uitziet.✅ Vermijd vaste afmetingen zoals width: 800px;. Werk liever met:
percentages → width: 100%
flexibele eenheden → em, rem, vw, vh
max-width / min-width → voor schaalbare content
✅ Test je site op verschillende devices en schermgroottes → Tools zoals de developer tools in Chrome of Firefox helpen je daarbij enorm.✅ Combineer met @media queries → Die leggen voorwaarden op voor CSS afhankelijk van de schermgrootte. Hier gaan we later dieper op in.Meer handige media breakpoints vind je in dit overzicht: gist.github.com/gokulkrishh✅ De viewport bepaalt het zichtbare deel van je webpagina
✅ HTML5 introduceerde een standaard &lt;meta name="viewport"&gt; tag
✅ Gebruik flexibele eenheden i.p.v. vaste pixels
✅ Combineer met @media queries voor echte responsiviteit]]></description><link>4.-responsive-design/4.2-viewport.html</link><guid isPermaLink="false">4. Responsive Design/4.2 - Viewport.md</guid><pubDate>Fri, 20 Jun 2025 12:14:10 GMT</pubDate><enclosure url="media/images.png" length="0" type="image/png"/><content:encoded>&lt;figure&gt;&lt;img src=&quot;media/images.png&quot;&gt;&lt;/figure&gt;</content:encoded></item><item><title><![CDATA[4.1 - Inleiding]]></title><description><![CDATA[<img alt="iStock-612224522.jpg" height="433" src="media/istock-612224522.jpg" target="_self" style="width: 664px; max-width: 100%;">Responsive design is het streven naar een website die er goed uitziet op elk apparaat, ongeacht het formaat: van grote pc-schermen tot smalle smartphones en zelfs smart-tv’s.De techniek draait niet alleen om het schalen van elementen, maar soms ook om het volledig aanpassen van de layout afhankelijk van het gebruikte scherm. Denk aan menuknoppen die bij mobiel in een uitklapmenu verdwijnen of kolommen die worden gestapeld tot één scrollbare kolom.📱💻🖥️ Een goede responsive site voelt slim aan: hij past zich aan zonder dat de gebruiker zich er zorgen om hoeft te maken.✅ Toegankelijkheid → Iedereen, ongeacht schermgrootte of toestel, kan je site gebruiken.
✅ Gebruikerservaring (UX) → Navigeren zonder in- of uitzoomen.
✅ SEO-vriendelijk → Zoekmachines geven de voorkeur aan mobile-friendly sites.
✅ Efficiënt beheer → Eén website onderhouden i.p.v. aparte mobiele versies.🔧 Responsive design gaat dus verder dan alleen styling—het is ook een bouwfilosofie.Er zijn drie grote technieken om een layout responsive te maken:📌 In deze cursus focussen we op flexbox en grid, dé standaarden van vandaag. 🧠 Float werd al besproken in paragraaf 3.7, en wordt nu vooral voor specifieke toepassingen gebruikt.Wist je dat deze gedachtegang niet alleen bij websites voorkomt? Ook in programmeertalen zoals C# kun je bijvoorbeeld de UI laten aanpassen aan schermgroottes. Bij desktopapps kunnen knoppen meeschalen, componenten herschikken, of menu's worden samengevouwen, net als in HTML/CSS.Kortom, responsive denken is taalonafhankelijk en staat centraal in moderne gebruikersinterfaces.✅ Responsive design = meeschalen &amp; aanpassen aan elk schermformaat
✅ Gebruik geen vaste pixels meer, maar werk met verhoudingen en slimme layouts
✅ Wij focussen op flexbox en grid, niet op de verouderde float-lay-outs
✅ Het principe gaat verder dan alleen web – het geldt ook in softwareontwikkeling]]></description><link>4.-responsive-design/4.1-inleiding.html</link><guid isPermaLink="false">4. Responsive Design/4.1 - Inleiding.md</guid><pubDate>Fri, 20 Jun 2025 12:12:41 GMT</pubDate><enclosure url="media/istock-612224522.jpg" length="0" type="image/jpeg"/><content:encoded>&lt;figure&gt;&lt;img src=&quot;media/istock-612224522.jpg&quot;&gt;&lt;/figure&gt;</content:encoded></item><item><title><![CDATA[3.8 - Lijsten en tabellen]]></title><description><![CDATA[Hoewel lijsten en tabellen in HTML worden aangemaakt, geeft CSS je de mogelijkheid om deze op visueel aantrekkelijke manieren te stylen. In deze paragraaf behandelen we hoe je lijsten vormgeeft met opsommingstekens, afbeeldingen of posities. Tabellen komen straks in hoofdstuk 4 uitgebreider aan bod bij het onderwerp responsive layout, maar we geven hier alvast de basis mee.HTML-lijsten zoals &lt;ul&gt; en &lt;ol&gt; zijn van zichzelf vrij sober. CSS biedt drie hoofdmethoden om hun uiterlijk aan te passen:Bepaalt welk opsommingsteken wordt gebruikt.ul { list-style-type: circle; }
ol { list-style-type: decimal; }
ol { list-style-type: none; }
ol { list-style-type: upper-roman; }
💡 Andere populaire opties:
disc, square, circle (voor &lt;ul&gt;)
decimal-leading-zero, lower-alpha, upper-latin, lower-greek (voor &lt;ol&gt;)
Door list-style-type: none; toe te passen, kun je je eigen opsommingstekens ontwerpen of bijvoorbeeld pictogrammen toevoegen via een achtergrondafbeelding of een pseudo-element.Hiermee kun je een eigen afbeelding als opsommingsteken gebruiken.ul { list-style-image: url("../icons/bullet_circlearrow_red.gif");
}
📌 Let erop dat het pad relatief is ten opzichte van je CSS-bestand (niet je HTML-bestand).🧠 Tip: gebruik kleine, transparante PNG- of SVG-bestanden voor een nette weergave op verschillende schermen.Bepaalt of het opsommingsteken binnen of buiten het lijst-item wordt weergegeven.ul { list-style-position: outside; /* standaard */
}
ul { list-style-position: inside;
} outside: Bullet staat buiten de tekst, links uitgelijnd
inside: Bullet staat inline met de tekst (meeschuivend bij tekstomloop)
Je kunt deze eigenschappen ook combineren met de shorthand-eigenschap list-style.ul { list-style: square inside;
}
Hoewel tabellen worden besproken in hoofdstuk 2.10 (HTML) en geavanceerder in hoofdstuk 4.4 (CSS layout), kun je met CSS wel snel en eenvoudig de visuele weergave verbeteren:table { border-collapse: collapse; width: 100%;
} th, td { border: 1px solid #ddd; padding: 8px; text-align: left;
} th { background-color: #f4f4f4;
}
✅ Handige CSS-tips voor tabellen:
Gebruik border-collapse: collapse; om dubbele celranden te vermijden
Pas padding toe voor luchtigere weergave
Maak kolomkoppen visueel onderscheidend met background-color
✅ Gebruik list-style-type om HTML-lijsten een klassiek of creatief uiterlijk te geven
✅ Met list-style-image kun je eigen bullets instellen (denk aan icoontjes!)
✅ list-style-position beïnvloedt hoe bullets zich gedragen ten opzichte van tekst
✅ Tabellen kun je eenvoudig opfrissen met border, padding en background-color]]></description><link>3.-css/3.8-lijsten-en-tabellen.html</link><guid isPermaLink="false">3. CSS/3.8 - Lijsten en tabellen.md</guid><pubDate>Fri, 20 Jun 2025 12:08:59 GMT</pubDate></item><item><title><![CDATA[3.7 - Position]]></title><description><![CDATA[In deze paragraaf duiken we dieper in de manier waarop individuele elementen gepositioneerd worden op een pagina. Waar display vooral iets zegt over de algemene opbouw van de flow (elementen onder of naast elkaar), bepaalt position waar het element op het scherm of binnen zijn container terechtkomt.De position-eigenschap maakt het mogelijk een element nauwkeuriger te plaatsen, met optionele coördinaten als top, right, bottom en left.✅ Overzicht van position-waarden:✅ Voorbeeld: verschil tussen relative en absolute:.relative-box { position: relative; top: 16px; left: 10px;
} .absolute-box { position: absolute; top: 16px; left: 10px;
} Bij relative wordt het element verplaatst vanaf zijn originele plek, maar blijft binnen de flow van het document.
Bij absolute wordt het element uit de flow gehaald en exact op die plek bovenop andere elementen geplaatst. Dat vereist dus nauwkeurige controle.
🧠 Let op: een absolute element zoekt naar een ouder die óók position: relative|absolute|fixed heeft om zich tegen te positioneren. Is die er niet, dan positioneert het zich ten opzichte van &lt;html&gt;.De eigenschap float wordt gebruikt om elementen naast elkaar te plaatsen en andere inhoud eromheen te laten vloeien, zoals tekst om een afbeelding.✅ Voorbeeld:img { float: left; margin-right: 10px;
}
Je kunt kiezen uit:
left → laat het element links zweven
right → laat het element rechts zweven
none → haalt float weg
⚠️ Belangrijk: float werkt niet met position: absolute en kan onverwachte layout-bugs veroorzaken als je niet goed cleart.Als je wilt dat een element niet naast een gefloated element komt te staan, gebruik je clear.✅ Mogelijke waarden:
none (standaard)
left
right
both
✅ Voorbeeld:h1, h2, h3, h4 { clear: both;
}
Dit zorgt ervoor dat deze koppen altijd onder een zwevend element terechtkomen. Handig als je een nieuwe sectie start na een reeks afbeeldingen.Vroeger werden volledige webpagina’s opgebouwd met float, maar dat is grotendeels vervangen door modernere technieken zoals flexbox (zie volgende paragraaf) en CSS grid. Toch blijft float relevant voor bepaalde situaties, zoals:✔ Tekst laten omlopen rond een afbeelding
✔ Simpele horizontale uitlijning zonder complex grid
✔ Tweecolomsindelingen bij oudere browsers✅ Wrapperdiv aanmaken:&lt;div class="container"&gt; &lt;!-- navbar, content, sidebar --&gt;
&lt;/div&gt;
💡 Deze container helpt je om gefloatte elementen netjes af te sluiten binnen een blok.✅ Gebruik position om elementen relatief, absoluut of vast te plaatsen
✅ Gebruik float om elementen te laten zweven, zodat andere inhoud eromheen stroomt
✅ Gebruik clear om te bepalen waar gefloatte elementen mogen stoppen
✅ Wees voorzichtig met position: absolute, want het kan overlapping veroorzaken
✅ Moderne layout gebeurt vooral met flexbox en grid, maar float blijft handig voor detailwerk]]></description><link>3.-css/3.7-position.html</link><guid isPermaLink="false">3. CSS/3.7 - Position.md</guid><pubDate>Fri, 20 Jun 2025 12:08:20 GMT</pubDate></item><item><title><![CDATA[3.6 - Display]]></title><description><![CDATA[In de vorige paragraaf hebben we gezien hoe elk HTML-element zich gedraagt als een blok binnen het boxmodel. Maar hoe deze blokken zich gedragen in de flow van de pagina — of ze naast elkaar komen, onder elkaar staan, of helemaal verdwijnen — wordt bepaald door de display-eigenschap.De displaywaarde van een element bepaalt dus hoe het wordt weergegeven in de browser.Standaard zijn HTML-elementen verdeeld in twee grote groepen:✔ Elementen verschijnen naast elkaar
✔ Geen breedte of hoogte instelbaar met CSS
✔ Alleen zo breed als de inhoud
✔ Reageert als onderdeel van de omringende tekst💡 Voorbeelden: &lt;span&gt;, &lt;img&gt;, &lt;a&gt;, &lt;input&gt;, &lt;strong&gt;✔ Elementen breken automatisch naar een nieuwe regel
✔ Wel breedte en hoogte instelbaar
✔ Strekken zich standaard uit over de volledige breedte van de oudercontainer💡 Voorbeelden: &lt;div&gt;, &lt;p&gt;, &lt;h1&gt; t/m &lt;h6&gt;, &lt;ul&gt;, &lt;section&gt;Met display kun je het weergavemodel handmatig aanpassen, ongeacht het standaardgedrag van een element.✅ Overzicht van veelgebruikte display-waarden:📌 Voorbeeld – blok van inline naar block:a { display: block; padding: 10px; background-color: lightblue;
}
📌 Voorbeeld – inline-block:button { display: inline-block; width: 120px; height: 40px;
}
💡 Handig als je knoppen, afbeeldingen of korte elementen in een rij wilt zetten, maar toch controle nodig hebt over afmetingen.Deze zijn belangrijk bij moderne layout-technieken (zoals responsive design), maar vereisen extra configuratie.
display: flex → Richt child-elementen horizontaal of verticaal uit
display: grid → Bouwt een raster waarin je child-elementen kunt indelen op rijen en kolommen
📌 Wordt uitgebreid behandeld in hoofdstuk 4!Meer displaywaarden ontdekken? Bekijk de volledige lijst op W3Schools - CSS display property✅ display bepaalt hoe een element zich gedraagt in de layout-flow
✅ Gebruik block voor volledige controle, inline-block voor flexibele combinaties
✅ Gebruik none om elementen te verbergen zonder ze te verwijderen
✅ flex en grid vormen de kern van modern layout design]]></description><link>3.-css/3.6-display.html</link><guid isPermaLink="false">3. CSS/3.6 - Display.md</guid><pubDate>Fri, 20 Jun 2025 12:07:52 GMT</pubDate></item><item><title><![CDATA[3.5 - Padding, margin en border]]></title><description><![CDATA[Nu we weten hoe we tekst en achtergronden kunnen stylen, zoomen we in op een cruciaal onderdeel van CSS: het boxmodel. Elk HTML-element wordt weergegeven als een rechthoekig blok, ook al zie je het niet. CSS geeft je controle over hoeveel ruimte dat blok inneemt — van binnenuit tot ver daarbuiten.Een element bestaat in CSS uit vier lagen van binnen naar buiten:[ margin ] [ border ] [ padding ] [ content ]
De volledige grootte van een element wordt dus bepaald door:Totale breedte = width + padding + border + margin
Totale hoogte = height + padding + border + margin💡 In moderne browsers zoals Edge en Chrome, en in IDE’s zoals PhpStorm kun je het boxmodel live bekijken via de developer tools!Met width en height bepaal je de inhoudsgrootte van een blok (de "content box").✅ Voorbeeld:header { width: 400px; height: 75px;
}
Je kunt ook werken met minimale of maximale afmetingen:header { min-width: 300px; max-height: 100px;
}
💡 Gebruik min- en max- eigenschappen om responsief gedrag te bevorderen.Padding is de ruimte tussen de inhoud en de rand van het element (de border).✅ Voorbeeld:.foto { padding-right: 5px; padding-bottom: 10px;
} #album { padding: 12px; /* rondom evenveel ruimte */
}
Padding zorgt ervoor dat je content wat ademruimte krijgt. Je kunt per zijde instellen: padding-top, padding-right, padding-bottom, padding-left of shorthand:padding: 10px 20px 30px 40px; /* top, right, bottom, left */
Een border is een zichtbare lijn rond een element. Je kunt de dikte, stijl en kleur instellen:✅ Voorbeeld:.nav { border-width: 5px; border-style: dashed; border-color: aqua;
}
Of gebruik shorthand:.nav { border: 5px dashed aqua;
}
🧠 Tip: om randstijlen in tabellen aan te passen, gebruik border-collapse: collapse;.Margin is de lege ruimte buiten het element, richting de omliggende blokken. Het is standaard transparant en beïnvloedt de afstand tussen elementen.✅ Voorbeeld:.container { margin-top: 25px; margin-bottom: 30%;
} #foto { margin: 10px; /* rondom */
}
En ja — marges kunnen ook negatief zijn:article p { margin-bottom: -50px;
}
🚨 Dit laat elementen overlappen! Handig voor visuele effecten, maar gebruik met voorzichtigheid.✅ width en height – bepalen de inhoudsafmetingen
✅ padding – ruimte tussen inhoud en border
✅ border – zichtbare rand (dikte, stijl, kleur)
✅ margin – ruimte buiten het element, richting de omgevingSamen vormen ze het boxmodel — een essentieel fundament voor layoutcontrole in CSS.]]></description><link>3.-css/3.5-padding,-margin-en-border.html</link><guid isPermaLink="false">3. CSS/3.5 - Padding, margin en border.md</guid><pubDate>Fri, 20 Jun 2025 12:07:12 GMT</pubDate></item><item><title><![CDATA[3.4 - Achtergronden]]></title><description><![CDATA[In deze paragraaf leer je hoe je met CSS achtergrondkleuren, kleurverlopen en afbeeldingen toevoegt aan HTML-elementen. Of je nu een eenvoudige effen kleur wilt instellen of een complexe afbeelding op de achtergrond wilt gebruiken—CSS biedt alle tools!Met de eigenschap background-color kun je de achtergrond van een element van een kleur voorzien:✅ Voorbeelden:body { background-color: red;
} section { background-color: #ff0000;
} h1 { background-color: rgb(0, 128, 255);
}
Je kunt kleuren op drie manieren specificeren:
met een kleurnaam: red, blue, orange
met een hexcode: #ff0000
met een RGB-waarde: rgb(255, 255, 255)
💡 Voor meer kleurinspiratie zie CSS3 Color NamesEen gradient is een geleidelijke overgang tussen twee of meer kleuren. Een lineair gradient loopt in een rechte lijn.✅ Voorbeelden:body { background: linear-gradient(to right, black, white);
} header { background: linear-gradient(135deg, black, orange, yellow 75%);
} section { background: linear-gradient(to right, #B5FFCC 15px, black 15px);
}
🎯 Richtingen kun je aangeven in woorden of graden:
to right (90deg)
to bottom (180deg)
to top left (315deg)
45deg, 135deg, etc.
Je kunt ook percentages of stops toevoegen om het kleurverloop te beïnvloeden.Een radial gradient straalt uit vanaf een middelpunt zoals een cirkel of ovaal.✅ Voorbeelden:body { background: radial-gradient(circle, white, black);
} main { background: radial-gradient(circle at top left, green, orange);
} footer { background: radial-gradient(farthest-side circle at right bottom, black, red);
}
🔍 Je kunt de vorm (circle of ellipse) aanpassen, evenals de locatie van het middelpunt (at center, at top left, enz.).Voor het instellen van een afbeelding als achtergrond gebruik je o.a. background of background-image.✅ Voorbeeld:body { background: #B5FFCC url(../images/oceaan.png);
}
📌 Belangrijk: het pad naar de afbeelding is relatief t.o.v. het CSS-bestand (niet het HTML-bestand!).✅ Voorbeeld met meerdere instellingen:body { background: url(../images/oceaan.png) no-repeat center center fixed; background-size: cover;
}
✅ Gebruik background-color voor een effen kleur.
✅ Gebruik linear-gradient of radial-gradient voor kleurverlopen.
✅ Gebruik background-image voor afbeeldingen op de achtergrond.
✅ Combineer met repeat, position, attachment en size voor volledige controle.
✅ Let altijd op het correcte pad t.o.v. je CSS-bestand!]]></description><link>3.-css/3.4-achtergronden.html</link><guid isPermaLink="false">3. CSS/3.4 - Achtergronden.md</guid><pubDate>Fri, 20 Jun 2025 12:05:57 GMT</pubDate></item><item><title><![CDATA[3.3 - Tekst]]></title><description><![CDATA[In deze paragraaf gaan we bekijken hoe je met CSS tekst kunt opmaken en manipuleren. Denk hierbij aan het bepalen van lettertype, grootte, kleur, uitlijning en meer. Je leert hoe je met CSS een unieke typografische stijl geeft aan je website.✅ In CSS kun je tekst targeten op basis van het HTML-element of met klassen en ID’s.✅ Voorbeeld:h1 { font-size: 36px; text-align: center;
}
.intro { font-style: italic; color: gray;
}
#hoofdtitel { text-transform: uppercase; letter-spacing: 2px;
}
Hieronder een overzicht van veelgebruikte CSS-properties voor tekst:✅ Voorbeeld: opmaak voor alinea's in een artikel.article p { font-family: Georgia, serif; font-size: 1.1rem; line-height: 1.7; color: #444; text-align: justify;
}
✅ Voorbeeld: titels in hoofdletters, vetgedrukt en gecentreerdh2 { text-transform: uppercase; font-weight: bold; text-align: center; letter-spacing: 1px;
}
✅ Met CSS kun je de volledige opmaak van tekst naar jouw hand zetten.
✅ Gebruik selectors om elementen (zoals h1, .class, #id) te targeten.
✅ Teksteigenschappen zoals font-family, font-size, color en text-align geven je volledige controle over de uitstraling.
✅ Maak gebruik van relatieve eenheden (zoals em en rem) voor flexibele schaalbaarheid.]]></description><link>3.-css/3.3-tekst.html</link><guid isPermaLink="false">3. CSS/3.3 - Tekst.md</guid><pubDate>Fri, 20 Jun 2025 12:05:29 GMT</pubDate></item><item><title><![CDATA[3.1 - Inleiding]]></title><description><![CDATA[In dit hoofdstuk gaan we onze HTML-pagina’s voorzien van opmaak met CSS (Cascading Style Sheets). CSS is dé taal voor het opmaken van websites en vormt samen met HTML en JavaScript de heilige drie-eenheid van webontwikkeling.🚀 Wat leer je in dit hoofdstuk?
✔ De basis en syntaxis van CSS
✔ Verschillende manieren om CSS toe te passen
✔ Waarom CSS essentieel is voor moderne websitesCSS staat voor Cascading Style Sheets. Het is een taal waarmee je de presentatie en opmaak van een HTML-document kunt bepalen. Waar HTML zich richt op de structuur en inhoud, zorgt CSS voor de vormgeving en stijl.✅ CSS wordt gebruikt voor:
✔ Kleuren, achtergronden, lettertypes
✔ Marges, ruimte, lijnen, schaduwen
✔ Layouts, grids, responsiviteit
✔ Dynamische overgangen en animaties🧠 Let op: CSS werkt nooit op zichzelf → Het wordt altijd gebruikt in combinatie met HTML.✔ Scheiding van inhoud en opmaak → HTML voor structuur, CSS voor stijl
✔ Betere prestaties → Kleiner bestand, snellere laadtijden
✔ Toegankelijkheid en vindbaarheid → Beter voor SEO en screenreaders
✔ Flexibiliteit → Eén stylesheet kan meerdere pagina’s aansturen🔥 In modern webdesign is CSS niet optioneel, maar onmisbaar!✅ CSS2.1 → Wordt volledig ondersteund door alle moderne browsers.
✅ CSS3 → Standaard in moderne webontwikkeling. Onderverdeeld in modules zoals flexbox, grid, animations, transitions, enz.💡 Browsers blijven evolueren, en CSS groeit mee. De meeste nieuwe features vallen onder CSS3.Je kunt CSS op drie manieren gebruiken binnen een HTML-document:CSS wordt als attribuut toegevoegd aan een HTML-element.&lt;p style="color: red;"&gt;Deze tekst is rood.&lt;/p&gt;
❌ Niet aangeraden → Rommelig, moeilijk onderhoudbaar. Alleen gebruiken voor tests of uitzonderingen.CSS wordt tussen de &lt;style&gt;-tags in de &lt;head&gt; van je HTML-bestand geschreven.&lt;head&gt; &lt;style&gt; p { color: blue; } &lt;/style&gt;
&lt;/head&gt;
✅ Handig bij kleine projecten of prototypes.CSS wordt in een apart .css-bestand geschreven en gekoppeld via &lt;link&gt; in de &lt;head&gt; van je HTML.&lt;head&gt; &lt;link rel="stylesheet" href="style.css"&gt;
&lt;/head&gt;
✅ Beste en meest gebruikte methode.
✔ Houdt HTML en CSS gescheiden
✔ Maakt hergebruik en onderhoud eenvoudiger✅ CSS = opmaaktaal voor webpagina’s
✅ CSS3 is de moderne standaard
✅ Gebruik bij voorkeur externe stylesheets voor overzicht en herbruikbaarheid
✅ Inline CSS vermijden waar mogelijk]]></description><link>3.-css/3.1-inleiding.html</link><guid isPermaLink="false">3. CSS/3.1 - Inleiding.md</guid><pubDate>Fri, 20 Jun 2025 12:00:08 GMT</pubDate></item><item><title><![CDATA[3.2 - Syntaxis]]></title><description><![CDATA[In deze paragraaf leer je hoe CSS-code is opgebouwd: van selectors tot eigenschappen en waarden. CSS volgt altijd een duidelijke en gestructureerde syntaxis, waardoor je code leesbaar, onderhoudbaar én krachtig blijft.CSS-regels bestaan altijd uit drie onderdelen:✅ Algemene syntaxis:selector { eigenschap: waarde; eigenschap: waarde;
}
✅ Voorbeeld:h1 { text-align: center; font-size: 24px; color: darkblue;
}
<img alt="img_selector.gif" src="media/img_selector.gif" target="_self">CSS werkt met eenheden om lengtes, afmetingen en groottes te definiëren. Deze kunnen absoluut of relatief zijn.✅ Voorbeelden:h1 { font-size: 48px; } /* Absoluut */
p { font-size: 150%; } /* Relatief tov parent */
p { font-size: 2em; } /* 2 × font-size van parent */
p { font-size: 1.5rem; } /* 1.5 × root-font-size (meestal 16px) */
🚀 Wanneer gebruik je wat?
px → Snelle, vaste styling
em / rem → Voor schaalbare, toegankelijke lay-outs
% → Voor flexibele breedtes/hoogtes van elementen
Een pseudoklasse beschrijft een specifieke toestand van een element, zoals wanneer je muis over een link zweeft.✅ Syntaxis:selector:pseudoklasse { eigenschap: waarde;
}
✅ Veelgebruikte pseudoklassen voor links:a:link { color: green; /* Niet-bezochte link */
}
a:visited { color: gray; /* Bezochte link */
}
a:hover { color: red; /* Wanneer muis over link gaat */
}
a:active { color: orange; /* Op het moment van klikken */
}
✅ Overige nuttige pseudoklassen:
:focus – wanneer een element de focus heeft (bijv. een inputveld)
:nth-child(n) – stijl het n-de kind van een ouder
tr:nth-child(even) { background-color: #f2f2f2; }
p:nth-child(2) { font-style: italic; }
Meer over pseudoklassen:
Pseudoklassen – W3Schools
Pseudo-elementen – W3Schools
✅ CSS gebruikt selectors, eigenschappen en waarden voor styling.
✅ Je kunt absolute (px) of relatieve (%, em, rem) eenheden gebruiken.
✅ Pseudoklassen passen stijl toe op specifieke toestanden van een element.
✅ Gebruik een moderne code-editor voor slimme suggesties en minder fouten.]]></description><link>3.-css/3.2-syntaxis.html</link><guid isPermaLink="false">3. CSS/3.2 - Syntaxis.md</guid><pubDate>Fri, 20 Jun 2025 11:59:45 GMT</pubDate><enclosure url="media/img_selector.gif" length="0" type="image/gif"/><content:encoded>&lt;figure&gt;&lt;img src=&quot;media/img_selector.gif&quot;&gt;&lt;/figure&gt;</content:encoded></item><item><title><![CDATA[2.12 - Div - basis]]></title><description><![CDATA[Het &lt;div&gt;-element is een veelzijdig container-element in HTML waarmee je delen van een webpagina kunt groeperen en structureren. Het wordt vaak gebruikt in combinatie met CSS om lay-outs en stijlen te beheren.🚀 Waarom een &lt;div&gt; gebruiken?
✔ Groeperen van elementen → Maakt het makkelijker om secties te organiseren.
✔ Styling met CSS → Je kunt een class of id toewijzen voor specifieke stijlen.
✔ Handig voor complexe lay-outs → &lt;div&gt; helpt bij het indelen van webpagina's.Een &lt;div&gt; werkt als een container voor andere HTML-elementen.✅ Voorbeeld:&lt;div id="sportvereniging"&gt; &lt;h1&gt;Schaatsvereniging "De Sneeuwmannen"&lt;/h1&gt; &lt;p&gt;"De Sneeuwmannen is een schaatsclub in Antwerpen die ook skeeler- en skatelessen organiseert."&lt;/p&gt; &lt;h2&gt;Gegevens&lt;/h2&gt; &lt;dl&gt; &lt;dt&gt;Naam&lt;/dt&gt; &lt;dd&gt;De Sneeuwmannen&lt;/dd&gt; &lt;dt&gt;Sport&lt;/dt&gt; &lt;dd&gt;Schaatsen&lt;/dd&gt; &lt;dt&gt;Locatie&lt;/dt&gt; &lt;dd&gt;Antwerpen&lt;/dd&gt; &lt;/dl&gt;
&lt;/div&gt;
🚀 Hier wordt een sectie met informatie gegroepeerd binnen een &lt;div&gt;!Door een &lt;div&gt; een class of id te geven, kun je unieke stijlen toepassen in CSS.✅ Voorbeeld met CSS:&lt;div class="sportvereniging"&gt; &lt;h1&gt;Schaatsvereniging "De Sneeuwmannen"&lt;/h1&gt;
&lt;/div&gt;
.sportvereniging { background-color: lightblue; padding: 10px; border: 2px solid darkblue;
}
🚀 Voordelen van CSS-styling:
✔ Maakt tekst of secties beter zichtbaar.
✔ Maakt aangepaste lay-outs en kleuren mogelijk.
✔ Maakt het beheer van webpagina's eenvoudiger.&lt;div&gt; en &lt;span&gt; zijn beide containers, maar hebben verschillende toepassingen:🚀 Gebruik &lt;div&gt; voor complete secties en &lt;span&gt; voor kleine wijzigingen binnen tekst!✅ Het &lt;div&gt;-element is een container voor het groeperen van HTML-elementen.
✅ Het kan worden gestyled met een class of id in CSS.
✅ Gebruik &lt;div&gt; voor secties en &lt;span&gt; voor inline tekstwijzigingen.]]></description><link>2.-html/2.12-div-basis.html</link><guid isPermaLink="false">2. HTML/2.12 - Div - basis.md</guid><pubDate>Fri, 20 Jun 2025 11:56:55 GMT</pubDate></item><item><title><![CDATA[2.11 - Forms]]></title><description><![CDATA[Forms (formulieren) maken het mogelijk om gebruikersgegevens te verzamelen op een webpagina. Denk aan een contactformulier, registratieformulier, loginpagina of een zoekbalk.🚀 Waarom forms gebruiken in HTML?
✔ Interactie met gebruikers → Gebruikers kunnen gegevens invoeren en verzenden.
✔ Essentieel voor webapplicaties → Loginsystemen, registraties en zoekbalken.
✔ Kan worden verwerkt met PHP of JavaScript → Data opslaan of verzenden naar een server.Een formulier begint altijd met het &lt;form&gt;-element, waarin je formulieren en invoervelden plaatst.✅ Basisstructuur:&lt;form&gt; &lt;!-- Form elementen en invoervelden --&gt;
&lt;/form&gt;
✔ Alle invoervelden, labels en knoppen komen binnen &lt;form&gt; te staan.Binnen een formulier zijn labels en inputvelden essentieel voor de gebruikerservaring.✅ Voorbeeld van een eenvoudig formulier:&lt;form&gt; &lt;label for="voornaam"&gt;Voornaam&lt;/label&gt; &lt;input type="text" name="voornaam" id="voornaam"&gt; &lt;br&gt; &lt;label for="achternaam"&gt;Achternaam&lt;/label&gt; &lt;input type="text" name="achternaam" id="achternaam"&gt;
&lt;/form&gt;
🚀 Waarom labels gebruiken?
✔ Verbetert toegankelijkheid → Gebruikers en screenreaders weten welk veld waarvoor dient.
✔ Moet altijd gekoppeld worden met het for-attribuut → Bijvoorbeeld for="voornaam" gekoppeld aan id="voornaam".Een formulier kan verschillende inputtypes bevatten, afhankelijk van het doel.✅ Veelgebruikte inputtypes:🚀 Gebruik het juiste inputtype om de gebruikservaring te verbeteren!Meer uitleg over inputtypes vind je op W3Schools.✅ Forms verzamelen gebruikersgegevens op een website.
✅ Gebruik &lt;form&gt; als basis en inputvelden zoals &lt;input type="text"&gt;.
✅ Gebruik labels (&lt;label&gt;) voor duidelijke beschrijvingen.
✅ Er zijn verschillende inputtypes zoals text, email, password en checkbox.]]></description><link>2.-html/2.11-forms.html</link><guid isPermaLink="false">2. HTML/2.11 - Forms.md</guid><pubDate>Fri, 20 Jun 2025 11:56:18 GMT</pubDate></item><item><title><![CDATA[2.10 - Tabellen]]></title><description><![CDATA[Tabellen maken het mogelijk om gegevens overzichtelijk weer te geven in rijen en kolommen. Net als in Microsoft Word, kun je met HTML tabellen maken om tekst, cijfers, afbeeldingen en andere informatie te structureren.🚀 Waarom tabellen gebruiken in HTML?
✔ Voor gestructureerde gegevens zoals prijzen, agenda’s of statistieken.
✔ Voor een overzichtelijke weergave van complexe informatie.
✔ Niet meer aanbevolen voor lay-outs → Gebruik hiervoor CSS.Een tabel wordt gemaakt met het &lt;table&gt;-element, waarin je rijen (&lt;tr&gt;) en cellen (&lt;td&gt; of &lt;th&gt;) plaatst.✅ Basisstructuur:&lt;table&gt; &lt;tr&gt; &lt;th&gt;Kolom 1&lt;/th&gt; &lt;th&gt;Kolom 2&lt;/th&gt; &lt;th&gt;Kolom 3&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Rij 1, Cel 1&lt;/td&gt; &lt;td&gt;Rij 1, Cel 2&lt;/td&gt; &lt;td&gt;Rij 1, Cel 3&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Rij 2, Cel 1&lt;/td&gt; &lt;td&gt;Rij 2, Cel 2&lt;/td&gt; &lt;td&gt;Rij 2, Cel 3&lt;/td&gt; &lt;/tr&gt;
&lt;/table&gt;
🚀 Belangrijke tabel-elementen:
✔ &lt;table&gt; → Start en einde van een tabel.
✔ &lt;tr&gt; → Een nieuwe rij in de tabel.
✔ &lt;td&gt; → Een datacel (standaard inhoud).
✔ &lt;th&gt; → Een titelcel (vaak vetgedrukt en gecentreerd).Soms wil je cellen samenvoegen zodat ze meerdere kolommen of rijen beslaan. Hiervoor gebruik je colspan en rowspan.✅ Voorbeeld met colspan (samengevoegde kolommen):&lt;table&gt; &lt;tr&gt; &lt;th colspan="2"&gt;Titel over 2 kolommen&lt;/th&gt; &lt;th&gt;Kolom 3&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Cel 1&lt;/td&gt; &lt;td&gt;Cel 2&lt;/td&gt; &lt;td&gt;Cel 3&lt;/td&gt; &lt;/tr&gt;
&lt;/table&gt;
✅ Voorbeeld met rowspan (samengevoegde rijen):&lt;table&gt; &lt;tr&gt; &lt;th rowspan="2"&gt;Categorie&lt;/th&gt; &lt;th&gt;Subcategorie 1&lt;/th&gt; &lt;th&gt;Subcategorie 2&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Detail 1&lt;/td&gt; &lt;td&gt;Detail 2&lt;/td&gt; &lt;/tr&gt;
&lt;/table&gt;
🚀 Hierdoor kunnen tabellen complexere informatie weergeven op een overzichtelijke manier!Tabellen kunnen met CSS worden gestyled om een unieke uitstraling te krijgen.✅ Voorbeeld van een CSS-opgemaakte tabel:&lt;style&gt; table { border-collapse: collapse; width: 100%; } th, td { border: 1px solid black; padding: 8px; text-align: center; } th { background-color: #f2f2f2; }
&lt;/style&gt; &lt;table&gt; &lt;tr&gt; &lt;th&gt;Naam&lt;/th&gt; &lt;th&gt;Leeftijd&lt;/th&gt; &lt;th&gt;Land&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Maria&lt;/td&gt; &lt;td&gt;25&lt;/td&gt; &lt;td&gt;Nederland&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;John&lt;/td&gt; &lt;td&gt;30&lt;/td&gt; &lt;td&gt;België&lt;/td&gt; &lt;/tr&gt;
&lt;/table&gt;
🚀 CSS-opties voor tabellen:
✔ border-collapse: collapse; → Zorgt ervoor dat celranden niet dubbel worden weergegeven.
✔ padding en text-align → Verbeteren de leesbaarheid.
✔ background-color → Kleurt de headercellen.✅ Tabellen bestaan uit rijen (&lt;tr&gt;) en cellen (&lt;td&gt; of &lt;th&gt;).
✅ Gebruik colspan en rowspan om cellen samen te voegen.
✅ Gebruik CSS voor een betere opmaak en leesbaarheid van tabellen.]]></description><link>2.-html/2.10-tabellen.html</link><guid isPermaLink="false">2. HTML/2.10 - Tabellen.md</guid><pubDate>Fri, 20 Jun 2025 11:53:52 GMT</pubDate></item><item><title><![CDATA[2.9 - Afbeeldingen]]></title><description><![CDATA[Afbeeldingen maken een website visueel aantrekkelijk en helpen bij het overbrengen van informatie. Het toevoegen van een afbeelding in HTML is eenvoudig en gebeurt met het &lt;img&gt;-element.✅ Waarom afbeeldingen gebruiken in HTML?
✔ Verhoogt de visuele aantrekkelijkheid van een website → Websites zonder afbeeldingen voelen kaal aan.
✔ Kan informatie verduidelijken → Grafieken, diagrammen en pictogrammen helpen de gebruiker.
✔ Kan als hyperlink fungeren → Klikbare afbeeldingen voor navigatie.🚀 HTML-afbeeldingen verbeteren de gebruikerservaring!Een afbeelding wordt toegevoegd met het &lt;img&gt;-element, dat geen sluitingstag heeft.✅ Basisstructuur:&lt;img src="afbeeldingen/foto.jpg" alt="Beschrijving van de afbeelding"&gt;
✔ src="..." → Staat voor source, het pad naar de afbeelding.
✔ alt="..." → Staat voor alternative text, weergegeven als de afbeelding niet geladen wordt.🚀 Afbeeldingen moeten altijd een alt-attribuut hebben voor toegankelijkheid!Afbeeldingen bestaan in verschillende bestandsformaten, elk met unieke eigenschappen.✅ Bitmap-afbeeldingen → Gebouwd uit pixels, geschikt voor foto’s.
✅ Vector-afbeeldingen → Opgebouwd uit wiskundige berekeningen, goed voor logo’s en iconen.🚀 Vergelijking van veelgebruikte bitmap-formaten:Afbeeldingen kunnen worden gebruikt als klikbare links door ze in een &lt;a&gt;-element te plaatsen.✅ Voorbeeld:&lt;a href="pagina.html"&gt; &lt;img src="afbeeldingen/button.jpg" alt="Klik hier"&gt;
&lt;/a&gt;
🚀 Hier wordt de afbeelding een klikbaar element!Een favicon is een klein pictogram dat wordt weergegeven in het tabblad van een browser.✅ Favicon toevoegen in HTML:&lt;head&gt; &lt;link rel="icon" type="image/png" href="images/favicon.png"&gt;
&lt;/head&gt;
✔ Meest gebruikte formaten: .ico, .png.
✔ Plaats de &lt;link&gt;-tag in de &lt;head&gt; van de pagina.🚀 Een favicon geeft een website een herkenbaar visueel element in de browser!✅ Gebruik het &lt;img&gt;-element met src en alt om afbeeldingen toe te voegen.
✅ JPG, PNG en GIF zijn de meest gebruikte bitmapformaten.
✅ Afbeeldingen kunnen als hyperlink gebruikt worden met &lt;a&gt;.
✅ Een favicon kan worden toegevoegd aan een webpagina met &lt;link rel="icon"&gt;.]]></description><link>2.-html/2.9-afbeeldingen.html</link><guid isPermaLink="false">2. HTML/2.9 - Afbeeldingen.md</guid><pubDate>Fri, 20 Jun 2025 11:53:13 GMT</pubDate></item><item><title><![CDATA[2.8 - Links]]></title><description><![CDATA[Links (hyperlinks) maken een website interactief en verbinden webpagina’s met elkaar. Wanneer een gebruiker op een link klikt, wordt hij doorgestuurd naar een andere pagina, bestand, afbeelding, video of een extern document.🚀 Links kunnen verwijzen naar:
✔ Andere pagina’s binnen dezelfde website
✔ Externe websites
✔ Specifieke inhoud op dezelfde pagina
✔ Documentrelaties zoals een stylesheet of inhoudsopgaveHet gebruik van hyperlinks vereist het &lt;a&gt;-element (anchor) en het href-attribuut.✅ Basisstructuur:&lt;a href="https://www.example.com"&gt;Bezoek deze website&lt;/a&gt;
✔ &lt;a&gt; → Staat voor anchor (anker), het element dat de link creëert.
✔ href="..." → Staat voor Hypertext Reference, het adres van de link.🚀 Dit zorgt ervoor dat gebruikers met één klik naar een nieuwe pagina gaan!Wanneer je wilt linken naar een andere pagina op je eigen website, gebruik je een relatief pad.✅ Voorbeeld van lokale links:&lt;a href="pagina1.html"&gt;Ga naar Pagina 1&lt;/a&gt;
&lt;a href="../pagina2.html"&gt;Ga naar Pagina 2 (bovenliggende map)&lt;/a&gt;
&lt;a href="/inhoud/pagina3.html"&gt;Ga naar Pagina 3 (rootmap)&lt;/a&gt;
✔ Plaats een bestand in de juiste map → Bijvoorbeeld /inhoud/pagina3.html.
✔ Gebruik relatieve paden → Dit voorkomt problemen bij het verplaatsen van je website.
✔ Gebruik commentaar in je code (&lt;!-- ... --&gt;) → Dit helpt bij documentatie.Een externe link verwijst naar een pagina buiten je eigen website. Hiervoor moet je een volledig pad (absolute URL) gebruiken.✅ Voorbeeld van een externe link:&lt;a href="https://www.wikipedia.org"&gt;Bezoek Wikipedia&lt;/a&gt;
&lt;a href="https://www.google.com/search?q=webdevelopment"&gt;Google Zoekresultaten&lt;/a&gt;
✔ Vermeld de volledige URL inclusief https:// of http://. ✔ Voeg een titel toe voor een beschrijving:&lt;a href="https://www.wikipedia.org" title="De grootste online encyclopedie"&gt;Wikipedia&lt;/a&gt;
✔ Externe links openen vaak in een nieuw tabblad → Gebruik target="_blank" als je dat wilt.Met het id-attribuut kun je snel naar een specifieke sectie op dezelfde pagina navigeren.✅ Voorbeeld van een id-link:&lt;p&gt;&lt;a href="#inhoud"&gt;Spring naar de inhoud&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Een lange inleiding...&lt;/p&gt; &lt;p id="inhoud"&gt;Dit is de inhoud van de pagina.&lt;/p&gt;
🚀 Zo werkt het:
✔ id="inhoud" → Markeert een specifiek element.
✔ href="#inhoud" → Verwijst naar dat specifieke element.Naast standaard hyperlinks kun je documentrelaties definiëren met het &lt;link&gt;-element. Dit wordt vaak gebruikt in de &lt;head&gt;-sectie van een pagina.✅ Voorbeeld van documentrelaties:&lt;head&gt; &lt;link rel="stylesheet" href="styles.css"&gt; &lt;!-- Link naar een CSS-bestand --&gt; &lt;link rel="next" href="hoofdstuk3.html"&gt; &lt;!-- Volgende hoofdstuk --&gt; &lt;link rel="prev" href="hoofdstuk1.html"&gt; &lt;!-- Vorige hoofdstuk --&gt; &lt;link rel="alternate" lang="en" href="chapter2.html"&gt; &lt;!-- Alternatieve taalversie --&gt;
&lt;/head&gt;
🚀 Documentrelaties geven structuur aan je website:
✔ rel="stylesheet" → Linkt naar een CSS-bestand voor opmaak.
✔ rel="next" en rel="prev" → Navigatie tussen pagina’s.
✔ rel="alternate" → Alternatieve versies van een pagina (zoals een printversie).✅ Gebruik het &lt;a&gt;-element met href om links te maken.
✅ Gebruik relatieve paden voor lokale links en absolute paden voor externe links.
✅ Gebruik het id-attribuut om naar specifieke secties op een pagina te springen.
✅ Gebruik &lt;link&gt; in de &lt;head&gt;-sectie voor documentrelaties zoals stylesheets en navigatie.]]></description><link>2.-html/2.8-links.html</link><guid isPermaLink="false">2. HTML/2.8 - Links.md</guid><pubDate>Fri, 20 Jun 2025 11:52:45 GMT</pubDate></item><item><title><![CDATA[2.7 - Paden]]></title><description><![CDATA[Wanneer je in HTML verwijst naar webpagina’s, bestanden of afbeeldingen, gebruik je een pad. Dit pad is het adres dat bepaalt waar een bestand zich bevindt. Er zijn twee soorten paden:✅ Absolute paden → De volledige URL naar een bestand.
✅ Relatieve paden → De locatie van een bestand ten opzichte van je huidige webpagina.🚀 Relatieve paden zijn vaak de beste keuze voor websites en applicaties!Een absoluut pad bevat het volledige, exacte adres van een bestand op een website.✅ Voorbeeld van een absoluut pad:&lt;img src="http://www.example.com/images/banner.jpg" alt="Website banner"&gt;
🚀 Regels voor absolute paden:
✔ Bevat het volledige domein → Inclusief http:// of https://.
✔ Werkt altijd, ongeacht de pagina waarop het wordt gebruikt.
✔ Niet ideaal voor websites die later worden verplaatst → Als de URL verandert, werken de links niet meer.Een relatief pad verwijst naar een bestand ten opzichte van de huidige webpagina.✅ Voorbeeld van een relatief pad:&lt;img src="images/banner.jpg" alt="Website banner"&gt;
🚀 Regels voor relatieve paden:
✔ Veel flexibeler dan absolute paden → Werkt zonder volledige URL.
✔ Ideaal voor websites die later worden verplaatst → Geen URL-wijzigingen nodig.
✔ Gaat uit van de locatie van het HTML-bestand → Je moet weten waar je bestanden zich bevinden.Relatieve paden laten je door mappen navigeren zonder het volledige adres te gebruiken.✅ Voorbeelden van padstructuren:🚀 Met relatieve paden blijft je website flexibel en eenvoudig te beheren!✅ Drie manieren om naar dezelfde bestanden te verwijzen:🚀 Voor de meeste websites zijn relatieve paden de beste keuze!✅ Absolute paden geven de volledige URL van een bestand weer en werken altijd.
✅ Relatieve paden zijn flexibeler en worden meestal gebruikt in webontwikkeling.
✅ Je kunt navigeren door mappen met relatieve paden, zoals ../ en /.
✅ Gebruik relatieve paden om websites beter beheersbaar te houden.]]></description><link>2.-html/2.7-paden.html</link><guid isPermaLink="false">2. HTML/2.7 - Paden.md</guid><pubDate>Fri, 20 Jun 2025 11:52:08 GMT</pubDate></item><item><title><![CDATA[2.6 - Lijsten]]></title><description><![CDATA[Net als in Microsoft Word kun je in HTML lijsten maken om gegevens overzichtelijk weer te geven. Er bestaan geordende lijsten (genummerd) en ongeordende lijsten (met bullets).✅ Waarom lijsten gebruiken in HTML?
✔ Maakt informatie overzichtelijk → Helpt bij gestructureerde content.
✔ Kan met CSS worden gestyled → Vormgeving van opsommingstekens, kleuren en marges.
✔ Wordt gebruikt in menu’s en navigatie → Bijvoorbeeld &lt;ul&gt; voor een website-menu.🚀 Lijsten helpen bij de opmaak en structuur van een webpagina!In HTML kunnen lijsten worden gemarkeerd met drie belangrijke elementen:✅ Geordende lijst (&lt;ol&gt;) → Genummerde lijst (1, 2, 3 of A, B, C).
✅ Ongeordende lijst (&lt;ul&gt;) → Lijst met bullets (•).
✅ Lijstitem (&lt;li&gt;) → Elk item binnen een lijst.🚀 Elk lijstitem wordt altijd binnen &lt;li&gt; geplaatst!Een geordende lijst wordt gebruikt wanneer de volgorde van de items belangrijk is.✅ Voorbeeld van een genummerde lijst:&lt;ol&gt; &lt;li&gt;Eerste stap&lt;/li&gt; &lt;li&gt;Tweede stap&lt;/li&gt; &lt;li&gt;Derde stap&lt;/li&gt;
&lt;/ol&gt;
🚀 Standaard markering:
✔ Nummers (1, 2, 3…) → Automatisch toegewezen.
✔ Kan worden aangepast met attributen:
reversed → Keert de volgorde om.
start="5" → Begint bij nummer 5.
type="A" → Hoofdletters (A, B, C…).
✅ Voorbeeld van een geordende lijst met attributen:&lt;ol reversed start="3" type="I"&gt; &lt;li&gt;Item 3&lt;/li&gt; &lt;li&gt;Item 2&lt;/li&gt; &lt;li&gt;Item 1&lt;/li&gt;
&lt;/ol&gt;
Een ongeordende lijst wordt gebruikt wanneer de volgorde niet belangrijk is.✅ Voorbeeld van een lijst met bullets:&lt;ul&gt; &lt;li&gt;Item A&lt;/li&gt; &lt;li&gt;Item B&lt;/li&gt; &lt;li&gt;Item C&lt;/li&gt;
&lt;/ul&gt;
🚀 Standaard markering:
✔ Bullets (•) → Standaard voor &lt;ul&gt;.
✔ Kan worden aangepast met CSS → Vierkantjes of andere iconen.Lijsten kunnen met CSS worden gestyled om een unieke uitstraling te krijgen.✅ Voorbeeld van een lijst met een ID (#) in CSS:&lt;ul id="lijstEen"&gt; &lt;li&gt;Item 1&lt;/li&gt; &lt;li&gt;Item 2&lt;/li&gt; &lt;li&gt;Item 3&lt;/li&gt;
&lt;/ul&gt;
#lijstEen { font-family: Verdana, sans-serif; list-style-type: square;
}
🚀 CSS-opties voor lijsten:
✔ list-style-type → Verandert de opsommingstekens.
✔ margin en padding → Past de afstand tussen items aan.
✔ Unieke stijlen met id en class → Opmaak van individuele lijsten.✅ Geordende lijsten (&lt;ol&gt;) zijn genummerd en kunnen worden aangepast met attributen.
✅ Ongeordende lijsten (&lt;ul&gt;) gebruiken bullets en kunnen worden gestyled met CSS.
✅ Lijstitems (&lt;li&gt;) maken deel uit van zowel &lt;ol&gt; als &lt;ul&gt;.
✅ CSS kan gebruikt worden om lijsten een unieke stijl te geven.]]></description><link>2.-html/2.6-lijsten.html</link><guid isPermaLink="false">2. HTML/2.6 - Lijsten.md</guid><pubDate>Fri, 20 Jun 2025 11:51:05 GMT</pubDate></item><item><title><![CDATA[2.5 - Tekst structureren]]></title><description><![CDATA[Binnen HTML kun je tekst structureren op een manier die vergelijkbaar is met het verwerken van tekst in Microsoft Word. Je kunt werken met koppen, titels, alinea’s, quotes en verwijzingen, zodat je tekst leesbaar en overzichtelijk blijft.✅ Waarom is tekst structureren belangrijk?
✔ Maakt een webpagina beter leesbaar → Gebruikers kunnen snel informatie vinden.
✔ Optimaliseert zoekmachine-indexering (SEO) → Koppen en gestructureerde tekst helpen zoekmachines.
✔ Maakt webdesign overzichtelijker → CSS kan stijl toepassen op gestructureerde elementen.🚀 Een goed gestructureerde tekst verhoogt de gebruiksvriendelijkheid van je website!Koppen (headings) zorgen ervoor dat een webpagina een duidelijke hiërarchie krijgt.✅ Voorbeeld van koppen:&lt;h1&gt;Hoofdtitel van de pagina&lt;/h1&gt;
&lt;h2&gt;Subtitel of belangrijk hoofdstuk&lt;/h2&gt;
&lt;h3&gt;Een subsectie&lt;/h3&gt;
&lt;h4&gt;Kleinere onderverdeling&lt;/h4&gt;
&lt;h5&gt;Specifieke details&lt;/h5&gt;
&lt;h6&gt;Kleinste kopniveau&lt;/h6&gt;
🚀 Regels voor koppen:
✔ Gebruik slechts één &lt;h1&gt; per pagina (belangrijk voor SEO).
✔ Spring niet over niveaus → Van &lt;h1&gt; naar &lt;h3&gt; zonder &lt;h2&gt; is niet correct.
✔ Koppen kunnen met CSS worden gestyled (grootte, kleur, lettertype).Een paragraaf maakt tekst overzichtelijk en gestructureerd.✅ Voorbeeld van alinea's:&lt;p&gt;Dit is een eerste alinea.&lt;/p&gt;
&lt;p&gt;Dit is een tweede alinea.&lt;/p&gt;
&lt;p&gt;Dit is een derde alinea.&lt;/p&gt;
🚀 Regels voor alinea's:
✔ Gebruik &lt;p&gt; voor langere tekstblokken → Niet voor losse woorden.
✔ Standaard voegt HTML witruimte toe tussen alinea’s → Dit kan met CSS worden aangepast.
✔ Gebruik nooit &lt;br&gt; voor complete alinea's → Gebruik daarvoor &lt;p&gt;.Met &lt;span&gt; kun je specifieke stukjes tekst apart markeren.✅ Voorbeeld van &lt;span&gt; gebruik:&lt;p&gt;"Tot ziens" is in het Duits &lt;span lang="de"&gt;"Auf Wiedersehen"&lt;/span&gt;.&lt;/p&gt;
🚀 Regels voor &lt;span&gt;:
✔ Gebruik &lt;span&gt; voor inline aanpassingen → Bijvoorbeeld kleurwijzigingen met CSS.
✔ Voeg attributen toe → Bijvoorbeeld lang="de" voor taalinstellingen.
✔ Gebruik &lt;span&gt; niet om hele secties te markeren → Gebruik &lt;div&gt; voor grotere blokken.De &lt;br&gt;-tag zorgt voor een harde regelafbreking.✅ Voorbeeld van &lt;br&gt; gebruik:Dit is een eerste regel.&lt;br&gt;
Dit is een tweede regel.
🚀 Regels voor &lt;br&gt;:
✔ Gebruik &lt;br&gt; alleen als een harde enter echt nodig is.
✔ Gebruik geen &lt;br&gt; voor complete alinea’s → Gebruik daarvoor &lt;p&gt;.
✔ Niet aanbevolen voor opmaak → CSS kan beter regelafstand beheren.Gebruik &lt;cite&gt; om een verwijzing naar een film, boek, website of ander creatief werk te maken.✅ Voorbeeld van &lt;cite&gt; gebruik:We hebben de film &lt;cite&gt;The Matrix&lt;/cite&gt; gezien.
🚀 Regels voor &lt;cite&gt;:
✔ Gebruik &lt;cite&gt; niet voor normale citaten → Gebruik daarvoor &lt;q&gt; of &lt;blockquote&gt;.
✔ Kan gestyled worden met CSS → Bijvoorbeeld cursief weergeven.Gebruik &lt;q&gt; en &lt;blockquote&gt; om citaten en quotes correct weer te geven.✅ Voorbeeld van korte quotes (&lt;q&gt;)&lt;q&gt;Dit is een quote van een bekende schrijver.&lt;/q&gt;
🚀 Regels voor &lt;q&gt;:
✔ Wordt automatisch weergegeven tussen aanhalingstekens.
✔ Geschikt voor korte citaten → Gebruik &lt;blockquote&gt; voor langere citaten.✅ Voorbeeld van blokquotes (&lt;blockquote&gt;)&lt;blockquote cite="https://www.mijneigengenialewebsite.be"&gt; &lt;p&gt;Hallo Wereld!&lt;/p&gt; &lt;cite&gt;Hulk Hogan&lt;/cite&gt;
&lt;/blockquote&gt;
🚀 Regels voor &lt;blockquote&gt;:
✔ Gebruik &lt;blockquote&gt; voor langere citaten.
✔ Gebruik het cite="..." attribuut om de bron aan te geven.
✔ Voeg een &lt;cite&gt; toe om de auteur te markeren.✅ Gebruik koppen (&lt;h1&gt; – &lt;h6&gt;) om tekst te structureren.
✅ Gebruik &lt;p&gt; voor alinea’s en &lt;span&gt; voor kleine inline wijzigingen.
✅ Gebruik &lt;br&gt; alleen als een harde enter nodig is.
✅ Gebruik &lt;cite&gt; voor verwijzingen naar boeken, films, muziek en andere werken.
✅ Gebruik &lt;q&gt; voor korte quotes en &lt;blockquote&gt; voor langere citaten.]]></description><link>2.-html/2.5-tekst-structureren.html</link><guid isPermaLink="false">2. HTML/2.5 - Tekst structureren.md</guid><pubDate>Fri, 20 Jun 2025 11:50:34 GMT</pubDate></item><item><title><![CDATA[2.4 - Attributen]]></title><description><![CDATA[In HTML kunnen attributen worden toegevoegd aan tags om extra informatie en functionaliteit aan een element te geven. Attributen beïnvloeden hoe een element werkt en hoe het wordt weergegeven in de browser.✅ Waarom zijn HTML-attributen belangrijk?
✔ Voegen extra eigenschappen toe aan elementen → Bijvoorbeeld kleuren, afmetingen of links.
✔ Bepalen gedrag van een element → Bijvoorbeeld of een formulier verplicht is.
✔ Verbeteren toegankelijkheid en functionaliteit → Bijvoorbeeld door alternatieve tekst voor afbeeldingen.🚀 Attributen maken HTML flexibeler en krachtiger!Een attribuut bestaat altijd uit een naam en een waarde. De waarde wordt tussen dubbele of enkele aanhalingstekens geplaatst.✅ Voorbeeld van een HTML-element met een attribuut:&lt;p class="intro"&gt;Dit is een alinea met een attribuut.&lt;/p&gt;
✔ class="intro" → Dit attribuut geeft de paragraaf een CSS-klasse, zodat we de stijl kunnen aanpassen.✅ Belangrijke attributen die vaak worden gebruikt:🚀 Door attributen te gebruiken, kunnen we HTML-elementen aanpassen en verbeteren!✅ HTML-attributen voegen eigenschappen en functionaliteit toe aan elementen.
✅ Een attribuut bestaat uit een naam en een waarde tussen aanhalingstekens.
✅ Veelgebruikte attributen zijn id, class, src, href en alt.]]></description><link>2.-html/2.4-attributen.html</link><guid isPermaLink="false">2. HTML/2.4 - Attributen.md</guid><pubDate>Fri, 20 Jun 2025 11:48:26 GMT</pubDate></item><item><title><![CDATA[2.3 - Elementen en tags]]></title><description><![CDATA[In HTML werken we met elementen en tags om de structuur en inhoud van een webpagina te bepalen. Hoewel de termen vaak door elkaar gebruikt worden, is er een belangrijk verschil. Een tag is een instructie in HTML, terwijl een element de combinatie is van een tag en de inhoud die erbij hoort.✅ Wat is een tag?
✔ Een HTML-tag is een code-onderdeel dat aangeeft wat een stuk inhoud doet op een webpagina. Bijvoorbeeld &lt;h1&gt;, &lt;p&gt; of &lt;a&gt;.
✔ Tags beginnen altijd met een kleiner-dan teken &lt; en eindigen met een groter-dan teken &gt;.
✔ Sommige tags hebben een openings- en sluitingstag, zoals &lt;p&gt;...&lt;/p&gt;. Andere tags staan op zichzelf, zoals &lt;br&gt;.✅ Wat is een element?
✔ Een HTML-element is een tag met inhoud, en soms attributen:&lt;p class="intro"&gt;Dit is een paragraaf met een attribuut.&lt;/p&gt;
✔ Hier bestaat het element uit:
De openingstag: &lt;p class="intro"&gt;
De inhoud: Dit is een paragraaf met een attribuut.
De sluitingstag: &lt;/p&gt;
🚀 HTML-elementen vormen de bouwstenen van een webpagina!<img alt="GetImage (6).png" src="media/getimage-(6).png" target="_self">✅ Een tag is een los HTML-onderdeel dat aangeeft wat er gebeurt.
✅ Een element bevat een tag én de inhoud binnen die tag.🚀 Elementen bevatten meer informatie en structuur dan losse tags!Een element kan bestaan uit:
✔ Een openingstag → Bijvoorbeeld &lt;p&gt; voor een paragraaf.
✔ Inhoud → De tekst, afbeelding of data die bij het element hoort.
✔ Een sluitingstag → Bijvoorbeeld &lt;/p&gt;.✅ Voorbeeld van een volledig HTML-element:&lt;p class="intro"&gt;Dit is een voorbeeld van een HTML-element.&lt;/p&gt;
🚀 Hier heeft het &lt;p&gt;-element een attribuut (class="intro") dat later in CSS kan worden gebruikt.✅ HTML bestaat uit verschillende soorten elementen:🚀 Deze elementen vormen de basis van vrijwel elke webpagina!Meer uitleg over veelgebruikte HTML-elementen vind je op W3Schools.Naast de standaard elementen zijn er speciale elementen die unieke functionaliteiten hebben:✅ Lege elementen (self-closing tags)
✔ Sommige HTML-tags hebben geen inhoud en geen aparte sluitingstag. Bijvoorbeeld:&lt;br&gt; &lt;!-- Zorgt voor een nieuwe regel --&gt;
&lt;hr&gt; &lt;!-- Tekent een horizontale lijn --&gt;
&lt;img src="foto.jpg" alt="Afbeelding"&gt; &lt;!-- Voegt een afbeelding toe --&gt;
✅ Semantische elementen
✔ HTML5 introduceerde semantische elementen die de betekenis van content verduidelijken:&lt;article&gt;Nieuwsbericht&lt;/article&gt;
&lt;nav&gt;Menu-items&lt;/nav&gt;
&lt;footer&gt;Copyright 2025&lt;/footer&gt;
🚀 Deze tags maken de structuur van een webpagina logischer en toegankelijker!✅ Een tag is een HTML-label, een element bevat zowel een tag als inhoud.
✅ HTML-elementen vormen de bouwstenen van een webpagina.
✅ Er zijn verschillende soorten HTML-elementen, zoals koppen, alinea's, links en formulieren.
✅ Lege elementen, zoals &lt;br&gt; en &lt;img&gt;, hebben geen sluitingstag.
✅ Semantische HTML-elementen helpen bij het structureren van webpagina’s.]]></description><link>2.-html/2.3-elementen-en-tags.html</link><guid isPermaLink="false">2. HTML/2.3 - Elementen en tags.md</guid><pubDate>Fri, 20 Jun 2025 11:47:17 GMT</pubDate><enclosure url="." length="0" type="false"/><content:encoded>&lt;figure&gt;&lt;img src=&quot;.&quot;&gt;&lt;/figure&gt;</content:encoded></item><item><title><![CDATA[2.1 - Inleiding]]></title><description><![CDATA[Nu we hebben gekeken naar de geschiedenis en achtergrond van HTML, is het tijd om zelf aan de slag te gaan. In dit hoofdstuk gaan we stap voor stap een website opbouwen:✅ Eerst HTML → De basisstructuur van een webpagina.
✅ Dan CSS → Voor styling en lay-out.
✅ Vervolgens JavaScript → Voor interactie en dynamiek.
✅ Ten slotte PHP → Voor databasekoppelingen en server-side functionaliteit.🚀 Het einddoel: Een website die eerst statisch is en vervolgens interactief en dynamisch wordt!Hoewel moderne websites vaak gebruik maken van frameworks zoals Bootstrap of WordPress, blijft HTML de basis van elke webpagina.✅ Waarom HTML nog steeds belangrijk is?
✔ Fundamenteel voor webontwikkeling → Zonder HTML geen website.
✔ Maakt structuur en inhoud mogelijk → Tekst, afbeeldingen, formulieren en links.
✔ Werkt samen met andere technologieën → CSS voor styling, JavaScript voor dynamiek, PHP voor dataverwerking.🚀 Een goede basis in HTML maakt het makkelijker om complexe webtechnologieën te begrijpen.In dit hoofdstuk behandelen we de fundamentele concepten van HTML, zodat je de structuur van een webpagina kunt begrijpen en opbouwen.✅ Onderwerpen die we gaan behandelen:
✔ De basisstructuur van een HTML-document → Hoe een HTML-bestand eruitziet.
✔ Veelgebruikte HTML-tags → Zoals &lt;h1&gt;, &lt;p&gt;, &lt;a&gt; en &lt;img&gt;.
✔ Lijsten en tabellen → Hoe je gegevens overzichtelijk weergeeft.
✔ Formulieren en invoervelden → Voor interactie met gebruikers.
✔ Hyperlinks en navigatie → Verbindingen tussen webpagina’s.🚀 We beginnen bij het begin, zodat je een sterke basis krijgt!✅ HTML is nog steeds essentieel, ondanks de opkomst van frameworks zoals Bootstrap en WordPress.
✅ HTML vormt de basis van elke website en werkt samen met CSS, JavaScript en PHP.
✅ In dit hoofdstuk leren we de basisstructuur van HTML en hoe we een webpagina opbouwen.]]></description><link>2.-html/2.1-inleiding.html</link><guid isPermaLink="false">2. HTML/2.1 - Inleiding.md</guid><pubDate>Fri, 20 Jun 2025 11:43:26 GMT</pubDate></item><item><title><![CDATA[1.3 - Soorten internetverbindingen]]></title><description><![CDATA[Het internet is toegankelijk via verschillende soorten verbindingen, die variëren in snelheid, technologie en gebruiksgemak. In deze paragraaf kijken we naar hoe we met het internet verbinden en welke technologieën hierachter zitten.✅ Waarom is het belangrijk om de verschillende soorten internetverbindingen te begrijpen?
✔ Helpt bij het kiezen van de juiste verbinding voor je behoeften.
✔ Maakt het makkelijker om internetproblemen te diagnosticeren en oplossen.
✔ Geeft inzicht in de evolutie van netwerktechnologieën.<img alt="1674120193035-1-_Types_of_Internet_Connection.png" height="272" src="media/1674120193035-1-_types_of_internet_connection.png" target="_self" style="width: 696px; max-width: 100%;">Breedbandinternet is de standaard manier om met het internet te verbinden. Het biedt hoge snelheden en stabiele verbindingen.✅ Soorten breedbandverbindingen:
✔ DSL (Digital Subscriber Line) → Internet via de telefoonlijn, vroeger veel gebruikt.
✔ Kabelinternet → Internet via de kabel-TV aansluiting, zeer gangbaar in stedelijke gebieden.
✔ Glasvezel → Razendsnel internet via lichtsignalen in glasvezelkabels.🚀 Glasvezel is de snelste optie en wordt steeds vaker uitgerold.Naast breedband is mobiel internet essentieel voor toegang tot het web onderweg.✅ Generaties mobiele netwerken:
✔ 3G → Basis mobiel internet, geschikt voor e-mail en lichte browsingtaken.
✔ 4G LTE → Sneller dan 3G, ondersteunt HD-streaming en videobellen.
✔ 5G → Ultieme snelheid en lage vertraging, ideaal voor gaming en IoT.🚀 5G-netwerken bieden extreem hoge snelheden, maar zijn nog niet overal beschikbaar.Wi-Fi is een van de meest gebruikte methoden om internet te gebruiken, vooral binnenshuis.✅ Wi-Fi standaarden:
✔ Wi-Fi 4 (802.11n) → Oudere standaard, tot 600 Mbps snelheid.
✔ Wi-Fi 5 (802.11ac) → Sneller, met verbeterde dekking en minder storing.
✔ Wi-Fi 6 (802.11ax) → Nieuwste standaard, geschikt voor slimme apparaten en drukke netwerken.🚀 Wi-Fi 6 zorgt voor betere prestaties en minder vertraging in netwerken met veel verbonden apparaten.Satellietinternet wordt gebruikt op afgelegen locaties waar geen kabels of mobiele netwerken beschikbaar zijn.✅ Voordelen en nadelen:
✔ Beschikbaar overal ter wereld.
✔ Geen fysieke kabels nodig.
✔ Hogere vertraging (latency), minder geschikt voor gaming en live streaming.🚀 Bedrijven zoals Starlink verbeteren de snelheid en betrouwbaarheid van satellietinternet.✅ Breedband (DSL, kabel, glasvezel) is de standaard voor snelle en stabiele internetverbindingen.
✅ Mobiel internet via 4G en 5G maakt internetgebruik onderweg mogelijk.
✅ Wi-Fi is essentieel voor draadloze toegang, vooral met Wi-Fi 6 voor moderne netwerken.
✅ Satellietinternet is een oplossing voor afgelegen locaties zonder vaste netwerken.]]></description><link>1.-het-internet/1.3-soorten-internetverbindingen.html</link><guid isPermaLink="false">1. Het internet/1.3 - Soorten internetverbindingen.md</guid><pubDate>Fri, 20 Jun 2025 11:42:04 GMT</pubDate><enclosure url="media/1674120193035-1-_types_of_internet_connection.png" length="0" type="image/png"/><content:encoded>&lt;figure&gt;&lt;img src=&quot;media/1674120193035-1-_types_of_internet_connection.png&quot;&gt;&lt;/figure&gt;</content:encoded></item><item><title><![CDATA[1.2 - Hoe werkt het internet]]></title><description><![CDATA[Het internet lijkt misschien magisch, maar in werkelijkheid is het een complex netwerk van computers, servers en protocollen die samenwerken om informatie wereldwijd toegankelijk te maken.✅ Waarom is het belangrijk om te begrijpen hoe het internet werkt?
✔ Helpt bij het ontwikkelen van websites en webapplicaties.
✔ Maakt het makkelijker om internetproblemen te diagnosticeren en oplossen.
✔ Geeft inzicht in netwerken en data-uitwisseling.Wanneer je een website opent, zoals <a data-tooltip-position="top" aria-label="http://www.google.com" rel="noopener nofollow" class="external-link is-unresolved" href="http://www.google.com" target="_self">www.google.com</a>, gebeurt er achter de schermen een reeks processen:✅ Stap 1: Jouw browser stuurt een verzoek
✔ Jij typt een webadres in of klikt op een link.
✔ Jouw computer vraagt via het internet om de pagina te laden.✅ Stap 2: DNS vertaalt het webadres<br>
✔ Een DNS-server zet <a data-tooltip-position="top" aria-label="http://www.google.com" rel="noopener nofollow" class="external-link is-unresolved" href="http://www.google.com" target="_self">www.google.com</a> om naar een IP-adres (bijv. 172.217.16.196).
✔ Dit IP-adres vertelt je computer welke server de website host.✅ Stap 3: De server stuurt de webpagina terug
✔ De server die de website beheert verwerkt het verzoek en stuurt de HTML, CSS en JavaScript van de pagina naar jouw browser.
✔ Jouw browser bouwt de webpagina op basis van de ontvangen data.<br><img alt="internet-diagram.gif" height="414" src="media/internet-diagram.gif" target="_self" style="width: 580px; max-width: 100%;">Elke computer op het internet heeft een uniek IP-adres (Internet Protocol-adres). Dit is vergelijkbaar met een postadres, waarmee computers elkaar kunnen vinden en met elkaar kunnen communiceren. Tijdens de lessen systeem- en netwerkbeheer komt dit nog uitgebreid aan bod!✅ Soorten IP-adressen:
✔ IPv4 → Bestaat uit 4 getallen (bijv. 192.168.1.1).
✔ IPv6 → Langere versie met een grotere adresruimte (bijv. 2001:0db8:85a3::8a2e:0370:7334).<br><img alt="ezgif.com-webp-to-jpg-converter.jpg" src="media/ezgif.com-webp-to-jpg-converter.jpg" target="_self">Wanneer je een website bezoekt, wordt informatie verzonden via het HyperText Transfer Protocol (HTTP) of een veilige variant, HTTPS.✅ Verschil tussen HTTP en HTTPS:
✔ HTTP → Gegevens worden openlijk verzonden en kunnen onderschept worden.
✔ HTTPS → Gegevens worden versleuteld, waardoor hackers ze niet kunnen lezen.🚀 Daarom is HTTPS standaard bij banken en webshops voor beveiligde transacties.Meer uitleg over HTTPS en webbeveiliging vind je op SSL.com.Data wordt verzonden in kleine pakketten die via routers en servers door het netwerk bewegen. Dit werkt als volgt:✔ Een bestand (bijv. een webpagina) wordt opgedeeld in datablokken.
✔ Deze blokken reizen via verschillende netwerken naar hun bestemming.
✔ Als alle blokken aankomen, worden ze weer samengevoegd tot het originele bestand.🚀 Vergelijk het met een puzzel: je stuurt de losse stukjes op en de ontvanger zet ze weer in elkaar.✅ Het internet werkt via netwerken, servers en protocollen zoals DNS, IP en HTTP(S).
✅ Websites worden geladen door een DNS-server die een webadres omzet naar een IP-adres.
✅ Data reist via het netwerk in kleine pakketten die weer worden samengevoegd bij de ontvanger.
✅ HTTPS zorgt voor beveiligde verbindingen en beschermt gebruikers tegen hackers.]]></description><link>1.-het-internet/1.2-hoe-werkt-het-internet.html</link><guid isPermaLink="false">1. Het internet/1.2 - Hoe werkt het internet.md</guid><pubDate>Fri, 20 Jun 2025 11:39:52 GMT</pubDate><enclosure url="media/internet-diagram.gif" length="0" type="image/gif"/><content:encoded>&lt;figure&gt;&lt;img src=&quot;media/internet-diagram.gif&quot;&gt;&lt;/figure&gt;</content:encoded></item><item><title><![CDATA[1.7 - Geschiedenis van PHP]]></title><description><![CDATA[<img alt="PHP-logo.svg.png" height="176" src="media/php-logo.svg.png" target="_self" style="width: 327px; max-width: 100%;">PHP (Hypertext Preprocessor) is een van de meest gebruikte programmeertalen voor server-side webontwikkeling. Het werd oorspronkelijk ontwikkeld om dynamische webpagina’s te maken en is inmiddels uitgegroeid tot een krachtige taal die wordt gebruikt voor content management systemen, e-commerce platforms en API’s.✅ Waarom is PHP belangrijk?
✔ Maakt dynamische websites mogelijk → Bijvoorbeeld inlogsystemen en contactformulieren.
✔ Werkt samen met databases → Bijvoorbeeld MySQL voor het opslaan van gebruikersgegevens.
✔ Wordt gebruikt door grote platforms → Zoals WordPress, Facebook en Wikipedia.Meer uitleg over PHP en webontwikkeling vind je op PHP.net.PHP werd in 1994 ontwikkeld door Rasmus Lerdorf, een Deens-Canadese programmeur. Hij wilde een eenvoudige manier om bezoekersstatistieken bij te houden op zijn persoonlijke website en schreef een set scripts in C. Dit werd bekend als PHP/FI (Personal Home Page/Forms Interpreter).✅ Belangrijke mijlpalen in de geschiedenis van PHP:
✔ 1994 → Rasmus Lerdorf ontwikkelt de eerste versie van PHP/FI.
✔ 1995 → PHP/FI wordt openbaar en ontwikkelaars beginnen het te gebruiken voor dynamische webpagina’s.
✔ 1997 → PHP 3 wordt gelanceerd, met een volledig herschreven parser door Zeev Suraski en Andi Gutmans.
✔ 2000 → PHP 4 introduceert de Zend Engine, die de prestaties van PHP aanzienlijk verbetert.
✔ 2004 → PHP 5 voegt ondersteuning toe voor object-georiënteerd programmeren (OOP) en PHP Data Objects (PDO).
✔ 2015 → PHP 7 wordt uitgebracht, met enorme prestatieverbeteringen en nieuwe taalfeatures.
✔ 2020 → PHP 8 introduceert Just-in-Time (JIT) Compilation, waardoor PHP sneller wordt dan ooit.PHP blijft een belangrijke speler in webontwikkeling, ondanks de opkomst van andere talen zoals Python en JavaScript (Node.js).✅ Waar wordt PHP gebruikt?
✔ Content Management Systemen (CMS) → WordPress, Joomla en Drupal.
✔ E-commerce platforms → Magento en WooCommerce.
✔ API’s en backend-systemen → Laravel en Symfony frameworks.🚀 PHP blijft evolueren met nieuwe functies en verbeteringen!✅ PHP werd in 1994 ontwikkeld door Rasmus Lerdorf en groeide uit tot een van de belangrijkste server-side programmeertalen.
✅ PHP evolueerde van een eenvoudige scriptcollectie naar een krachtige taal met ondersteuning voor databases en OOP.
✅ PHP wordt nog steeds veel gebruikt in CMS-systemen, e-commerce platforms en backend-webontwikkeling.]]></description><link>1.-het-internet/1.7-geschiedenis-van-php.html</link><guid isPermaLink="false">1. Het internet/1.7 - Geschiedenis van PHP.md</guid><pubDate>Fri, 20 Jun 2025 11:33:39 GMT</pubDate><enclosure url="media/php-logo.svg.png" length="0" type="image/png"/><content:encoded>&lt;figure&gt;&lt;img src=&quot;media/php-logo.svg.png&quot;&gt;&lt;/figure&gt;</content:encoded></item><item><title><![CDATA[1.6 - Geschiedenis van JavaScript]]></title><description><![CDATA[<img alt="JavaScript-logo.png" height="196" src="media/javascript-logo.png" target="_self" style="width: 196px; max-width: 100%;">JavaScript is een van de meest gebruikte programmeertalen ter wereld en vormt samen met HTML en CSS de kern van moderne webontwikkeling. Het werd oorspronkelijk ontwikkeld om webpagina’s interactief te maken, maar is inmiddels uitgegroeid tot een veelzijdige taal die wordt gebruikt voor webapplicaties, servers en zelfs mobiele apps.✅ Waarom is JavaScript belangrijk?
✔ Maakt websites dynamisch en interactief → Knoppen, animaties, formulieren en meer.
✔ Werkt op alle moderne browsers → Ondersteund door Chrome, Firefox, Edge en Safari.
✔ Kan zowel client-side als server-side worden gebruikt → Dankzij technologieën zoals Node.js..JavaScript werd in 1995 ontwikkeld door Brendan Eich, een programmeur bij Netscape Communications. Netscape wilde een lichte en toegankelijke programmeertaal toevoegen aan hun webbrowser, zodat ontwikkelaars interactieve elementen konden maken zonder complexe software.✅ Belangrijke mijlpalen in de geschiedenis van JavaScript:
✔ 1995 → Brendan Eich ontwikkelt JavaScript in slechts 10 dagen voor Netscape Navigator.
✔ 1996 → JavaScript wordt opgenomen in Netscape 2 en wint snel aan populariteit.
✔ 1997 → JavaScript wordt een officiële ECMA-standaard (ECMA-262), bekend als ECMAScript.
✔ 2009 → ECMAScript 5 wordt uitgebracht, met verbeterde functies zoals strict mode.
✔ 2015 → ECMAScript 6 (ES6) introduceert moderne functies zoals let, const, arrow functions en classes.
✔ 2024 → ECMAScript blijft evolueren, met nieuwe updates en verbeteringen.JavaScript wordt beheerd door ECMA International, een organisatie die standaarden vaststelt voor programmeertalen. De officiële naam van de taal is ECMAScript, maar in de praktijk wordt de term JavaScript gebruikt.✅ Wat is ECMAScript?
✔ ECMAScript is de officiële standaard → JavaScript volgt deze richtlijnen.
✔ Nieuwe versies worden regelmatig uitgebracht → ES6, ES7, ES8, enz.
✔ Browsers implementeren ECMAScript-functies → Chrome, Firefox, Edge en Safari ondersteunen de nieuwste versies.JavaScript is niet langer beperkt tot webpagina’s, maar wordt gebruikt in servers, mobiele apps en zelfs hardware. Dankzij technologieën zoals Node.js kan JavaScript nu ook server-side worden gebruikt.✅ Waar wordt JavaScript gebruikt?
✔ Webontwikkeling → Dynamische websites en interactieve elementen.
✔ Server-side applicaties → Met Node.js kunnen backend-systemen worden gebouwd.
✔ Mobiele apps → Frameworks zoals React Native maken mobiele ontwikkeling mogelijk.
✔ Internet of Things (IoT) → JavaScript wordt gebruikt in slimme apparaten en sensoren.✅ JavaScript werd in 1995 ontwikkeld door Brendan Eich en groeide uit tot een van de belangrijkste programmeertalen.
✅ ECMAScript bepaalt de standaarden voor JavaScript en introduceert regelmatig nieuwe functies.
✅ JavaScript wordt niet alleen gebruikt voor webpagina’s, maar ook voor servers, mobiele apps en IoT.]]></description><link>1.-het-internet/1.6-geschiedenis-van-javascript.html</link><guid isPermaLink="false">1. Het internet/1.6 - Geschiedenis van JavaScript.md</guid><pubDate>Fri, 20 Jun 2025 11:33:00 GMT</pubDate><enclosure url="media/javascript-logo.png" length="0" type="image/png"/><content:encoded>&lt;figure&gt;&lt;img src=&quot;media/javascript-logo.png&quot;&gt;&lt;/figure&gt;</content:encoded></item><item><title><![CDATA[1.5 - Geschiedenis van CSS]]></title><description><![CDATA[<img alt="CSS3_logo_and_wordmark.svg.png" height="264" src="media/css3_logo_and_wordmark.svg.png" target="_self" style="width: 187px; max-width: 100%;">CSS (Cascading Style Sheets) is de technologie die webpagina’s visueel aantrekkelijk maakt. Het werd ontwikkeld om HTML-opmaak te scheiden van de inhoud, waardoor websites flexibeler en beter beheersbaar werden.✅ Waarom is CSS belangrijk?
✔ Maakt websites visueel aantrekkelijk → Kleuren, lettertypen, lay-outs en animaties.
✔ Scheiding van inhoud en opmaak → HTML blijft schoon en gestructureerd.
✔ Maakt responsive design mogelijk → Websites passen zich aan verschillende schermformaten aan.In de vroege jaren ‘90 bestond er geen standaard manier om webpagina’s op te maken. Webdesigners moesten HTML gebruiken voor styling, wat leidde tot rommelige en moeilijk te onderhouden code.✅ Belangrijke mijlpalen in de geschiedenis van CSS:
✔ 1994 → Håkon Wium Lie, een Noorse webpionier, stelt het eerste CSS-concept voor.
✔ 1996 → CSS1 wordt officieel goedgekeurd door het World Wide Web Consortium (W3C).
✔ 1998 → CSS2 introduceert geavanceerde lay-outopties zoals absolute en relatieve positionering.
✔ 2011 → CSS2.1 verfijnt de standaard en verbetert browsercompatibiliteit.
✔ 2010s → CSS3 wordt modulair ontwikkeld, met nieuwe functies zoals animaties, flexbox en grid.CSS3 is de meest recente versie van CSS en biedt krachtige nieuwe functies voor webdesign.✅ Wat maakt CSS3 beter?
✔ Flexbox en Grid → Geavanceerde lay-outtechnieken voor responsieve websites.
✔ Animaties en overgangen → Websites worden dynamischer zonder JavaScript.
✔ Media queries → Websites passen zich automatisch aan verschillende schermformaten aan.
✔ Variabele lettertypen → Betere typografie-opties voor moderne webdesigns.✅ CSS werd in 1994 voorgesteld door Håkon Wium Lie als oplossing voor HTML-opmaakproblemen.
✅ CSS1 werd in 1996 officieel goedgekeurd en evolueerde naar CSS2 en CSS3.
✅ CSS3 biedt moderne functies zoals flexbox, grid, animaties en media queries.]]></description><link>1.-het-internet/1.5-geschiedenis-van-css.html</link><guid isPermaLink="false">1. Het internet/1.5 - Geschiedenis van CSS.md</guid><pubDate>Fri, 20 Jun 2025 11:31:42 GMT</pubDate><enclosure url="media/css3_logo_and_wordmark.svg.png" length="0" type="image/png"/><content:encoded>&lt;figure&gt;&lt;img src=&quot;media/css3_logo_and_wordmark.svg.png&quot;&gt;&lt;/figure&gt;</content:encoded></item><item><title><![CDATA[1.4 - Geschiedenis van HTML]]></title><description><![CDATA[<img alt="HTML5_logo_and_wordmark.svg.png" src="media/html5_logo_and_wordmark.svg.png" target="_self">HTML (HyperText Markup Language) is de basisstructuur van het World Wide Web en vormt het fundament van elke webpagina. Sinds de introductie in 1991 heeft HTML zich enorm ontwikkeld, waardoor websites steeds dynamischer en visueel aantrekkelijker zijn geworden.✅ Waarom is HTML belangrijk?
✔ HTML vormt de ruggengraat van elke webpagina → Zonder HTML geen internet zoals we dat kennen.
✔ Biedt een gestructureerde manier om content weer te geven → Tekst, afbeeldingen, formulieren en links.
✔ Werkt samen met CSS en JavaScript → Voor styling en interactiviteit.HTML werd in 1991 ontwikkeld door Tim Berners-Lee en zijn collega Robert Cailliau bij CERN, de Europese organisatie voor nucleair onderzoek. Samen werkten zij aan een methode om wetenschappelijke documenten makkelijker te delen en te verbinden via hyperlinks. Dit leidde tot de eerste versie van HTML en het ontstaan van het World Wide Web.✅ Belangrijke mijlpalen in de geschiedenis van HTML:
✔ 1989 → Tim Berners-Lee en Robert Cailliau werken aan een voorstel voor een hypertekst-systeem.
✔ 1991 → De eerste versie van HTML wordt gebruikt binnen CERN.
✔ 1993 → HTML 1.0 wordt openbaar en begint zich wereldwijd te verspreiden.
✔ 1995 → HTML 2.0 introduceert formulieren en tabellen, waardoor websites interactiever worden.
✔ 1997 → HTML 3.2 voegt ondersteuning toe voor scripts en stijlen, wat de visuele kwaliteit van webpagina’s verbetert.
✔ 1999 → HTML 4.01 wordt de standaard en introduceert CSS voor betere opmaak.
✔ 2014 → HTML5 wordt officieel gelanceerd en biedt ondersteuning voor video, audio en interactieve elementen.Hoewel Tim Berners-Lee vaak wordt gezien als de uitvinder van het web, speelde Belg Robert Cailliau een cruciale rol in de ontwikkeling en verspreiding ervan.✅ Belangrijke bijdragen van Robert Cailliau:
✔ Hij hielp bij het ontwikkelen van het eerste webprototype.
✔ Hij promootte het World Wide Web buiten CERN, waardoor het wereldwijd werd geadopteerd.
✔ Hij werkte mee aan het standaardiseren van HTML en webtechnologieën.🚀 Zonder Robert Cailliau had HTML en het web zich mogelijk minder snel verspreid!HTML5 is de meest recente versie van HTML en biedt krachtige nieuwe functies voor webontwikkeling.✅ Wat maakt HTML5 beter?
✔ Ondersteuning voor multimedia → Video en audio zonder externe plugins.
✔ Verbeterde semantiek → Nieuwe tags zoals &lt;article&gt;, &lt;section&gt; en &lt;nav&gt; maken code overzichtelijker.
✔ Interactie zonder JavaScript → &lt;canvas&gt; en &lt;svg&gt; maken grafische elementen mogelijk.
✔ Betere prestaties en compatibiliteit → Werkt op alle moderne browsers en apparaten.✅ HTML werd in 1991 ontwikkeld door Tim Berners-Lee en Robert Cailliau als basis voor het World Wide Web.
✅ Door de jaren heen evolueerde HTML van een eenvoudige opmaaktaal naar een krachtige webstandaard.
✅ Robert Cailliau speelde een sleutelrol in de promotie en standaardisering van HTML.
✅ HTML5 biedt moderne functies zoals multimedia, semantische tags en betere prestaties.**]]></description><link>1.-het-internet/1.4-geschiedenis-van-html.html</link><guid isPermaLink="false">1. Het internet/1.4 - Geschiedenis van HTML.md</guid><pubDate>Fri, 20 Jun 2025 11:30:44 GMT</pubDate><enclosure url="media/html5_logo_and_wordmark.svg.png" length="0" type="image/png"/><content:encoded>&lt;figure&gt;&lt;img src=&quot;media/html5_logo_and_wordmark.svg.png&quot;&gt;&lt;/figure&gt;</content:encoded></item><item><title><![CDATA[1.1 - Inleiding]]></title><description><![CDATA[Het internet en het World Wide Web (WWW) hebben de manier waarop we communiceren, werken en informatie delen revolutionair veranderd. Hoewel veel mensen denken dat het internet en het web hetzelfde zijn, is dat niet het geval:✅ Het internet → Een wereldwijd netwerk van computers die met elkaar communiceren.
✅ Het World Wide Web → Een dienst die via het internet werkt en webpagina’s toegankelijk maakt.Het internet begon als een militair project in de Verenigde Staten tijdens de Koude Oorlog. Wetenschappers wilden een veerkrachtig communicatienetwerk ontwikkelen dat kon blijven functioneren, zelfs als delen ervan werden vernietigd.✅ Belangrijke mijlpalen in de geschiedenis van het internet:
✔ 1969 → ARPANET wordt gelanceerd, het eerste netwerk dat computers verbindt.
✔ 1971 → De eerste e-mail wordt verzonden door Ray Tomlinson.
✔ 1983 → TCP/IP wordt de standaard netwerkprotocol, waardoor verschillende netwerken met elkaar kunnen communiceren.
✔ 1998 → Google wordt opgericht en verandert de manier waarop we informatie zoeken.Hoewel het internet al bestond, was er nog geen eenvoudige manier om informatie te organiseren en toegankelijk te maken. In 1989 bedacht Tim Berners-Lee samen met Robert Caulliau het World Wide Web terwijl ze werkten bij CERN.<img alt="ezgif.com-resize-1.jpg" src="media/ezgif.com-resize-1.jpg" target="_self">✅ Belangrijke mijlpalen in de geschiedenis van het web:
✔ 1989 → Tim Berners-Lee en Robert Caulliau stellen een systeem voor met hyperlinks en webpagina’s.
✔ 1991 → De eerste website wordt gelanceerd.
✔ 1993 → De eerste grafische webbrowser, Mosaic, wordt uitgebracht.
✔ 1995 → Commerciële websites en zoekmachines zoals Yahoo! en AltaVista verschijnen.
✔ 2000s → Sociale media en streamingdiensten veranderen het internet.Sinds de jaren 2000 heeft het internet zich razendsnel ontwikkeld:✔ Web 2.0 → Interactieve websites, sociale media en gebruikerscontent.
✔ Cloud computing → Data wordt online opgeslagen en toegankelijk gemaakt.
✔ Mobiel internet → Smartphones en apps maken internetgebruik overal mogelijk.
✔ AI en machine learning → Slimme algoritmes personaliseren zoekresultaten en aanbevelingen.<br><img alt="4169c68d-44be-4674-9ade-b6b72bbebb3d_5950x2418.png" height="280" src="media/4169c68d-44be-4674-9ade-b6b72bbebb3d_5950x2418.png" target="_self" style="width: 690px; max-width: 100%;">✅ Het internet begon als een militair project en groeide uit tot een wereldwijd netwerk.
✅ Het World Wide Web werd in 1989 ontwikkeld door Tim Berners-Lee en maakte internet toegankelijk.
✅ Sinds de jaren 2000 heeft het web zich ontwikkeld met sociale media, cloud computing en AI.]]></description><link>1.-het-internet/1.1-inleiding.html</link><guid isPermaLink="false">1. Het internet/1.1 - Inleiding.md</guid><pubDate>Fri, 20 Jun 2025 11:29:12 GMT</pubDate><enclosure url="media/ezgif.com-resize-1.jpg" length="0" type="image/jpeg"/><content:encoded>&lt;figure&gt;&lt;img src=&quot;media/ezgif.com-resize-1.jpg&quot;&gt;&lt;/figure&gt;</content:encoded></item><item><title><![CDATA[8.12 - Uitloggen en sessies stoppen]]></title><description><![CDATA[Wanneer een gebruiker klaar is met zijn bezoek aan je website, wil je hem of haar de mogelijkheid geven om veilig uit te loggen. Door uit te loggen, wordt de sessie beëindigd en is de gebruiker niet langer aangemeld. Dit is belangrijk voor zowel beveiliging als gebruiksgemak.Een actieve sessie onthoudt wie de gebruiker is. Als je die niet afsluit, blijft een andere bezoeker op dezelfde computer mogelijk automatisch ingelogd. Daarom voeg je best een uitlogknop of -link toe aan je navigatie.Maak een bestand logout.php aan met deze code:&lt;?php
session_start();
session_unset(); // Verwijder alle sessievariabelen
session_destroy(); // Vernietig de sessie // (Optioneel) Sessie-cookie wissen
if (ini_get("session.use_cookies")) { $params = session_get_cookie_params(); setcookie(session_name(), '', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"] );
} // Verwijs de gebruiker door naar de loginpagina
header("Location: login.php?uitgelogd=1");
exit();
?&gt;
Je plaatst deze link op je pagina voor ingelogde gebruikers (bijv. dashboard.php):&lt;a href="logout.php" class="btn btn-outline-secondary"&gt;Uitloggen&lt;/a&gt;
Je kunt op login.php een melding tonen:&lt;?php
if (isset($_GET["uitgelogd"])) { echo "&lt;div class='alert alert-info'&gt;Je bent uitgelogd.&lt;/div&gt;";
}
?&gt;
Om sessiekaping te voorkomen, kun je vlak na het inloggen een nieuwe sessie-id genereren:session_regenerate_id(true);
Plaats dit net nadat je een sessie start bij een succesvolle login.✅ Sessies onthouden de identiteit van een gebruiker
✅ Met session_destroy() sluit je veilig af
✅ Toon een melding na het uitloggen
✅ Voeg altijd een zichtbare “Uitloggen”-link toe
✅ Beheer sessies zorgvuldig voor maximale veiligheid]]></description><link>8.-databases/8.12-uitloggen-en-sessies-stoppen.html</link><guid isPermaLink="false">8. Databases/8.12 - Uitloggen en sessies stoppen.md</guid><pubDate>Sun, 15 Jun 2025 07:49:34 GMT</pubDate></item><item><title><![CDATA[8.9 - Betere user experience]]></title><description><![CDATA[Een goed werkende website geeft de gebruiker niet alleen functies, maar ook duidelijke feedback. In deze paragraaf leer je hoe je met PHP en HTML meldingen toont, automatische doorverwijzingen (redirects) instelt, en bevestigingen toevoegt — zodat je site professioneel en intuïtief aanvoelt.Na het toevoegen, bewerken of verwijderen van gegevens wil je de gebruiker een duidelijke boodschap geven:echo "&lt;div class='alert alert-success'&gt;Leerling succesvol toegevoegd.&lt;/div&gt;";
Of bij een fout:echo "&lt;div class='alert alert-danger'&gt;Er is iets fout gegaan.&lt;/div&gt;";
💡 Deze meldingen maken gebruik van de klassen van Bootstrap alerts:
alert-success → groene boodschap alert-danger → rode foutmelding alert-warning, alert-info enz. ook mogelijk Na een actie (zoals toevoegen of verwijderen) wil je soms terugsturen naar een overzichtspagina. Dit kan met:header("Location: index.php");
exit();
⚠️ Let op: dit moet uitgevoerd worden vóór er iets op het scherm is getoond (dus vóór elke echo).Voorbeeld in context:if ($stmt-&gt;execute()) { header("Location: index.php?toegevoegd=1"); exit();
}
En op index.php kun je dan tonen:if (isset($_GET["toegevoegd"])) { echo "&lt;div class='alert alert-success'&gt;Leerling toegevoegd!&lt;/div&gt;";
}
Verwijderen is vaak onomkeerbaar. Laat daarom eerst een bevestiging zien met JavaScript:&lt;a href="verwijder.php?id=5" onclick="return confirm('Weet je zeker dat je deze leerling wilt verwijderen?')" class="btn btn-danger"&gt;Verwijder&lt;/a&gt;
⚠️ Als de gebruiker op “Annuleren” klikt, wordt de link niet gevolgd.Zorg dat gebruikers makkelijk terug kunnen naar het overzicht:&lt;a href="index.php" class="btn btn-secondary"&gt;← Terug naar overzicht&lt;/a&gt;
Voeg ook een eenvoudige menubalk of header toe op al je pagina’s voor consistentie.✅ Geef gebruikers directe feedback met Bootstrap alerts
✅ Gebruik header("Location: ...") om automatisch door te sturen
✅ Toon bevestigingen vóór kritieke acties zoals verwijderen
✅ Maak navigatie makkelijk met duidelijke knoppen of links
✅ Met kleine UX-details voelt je site als een échte toepassing]]></description><link>8.-databases/8.9-betere-user-experience.html</link><guid isPermaLink="false">8. Databases/8.9 - Betere user experience.md</guid><pubDate>Sun, 15 Jun 2025 07:42:55 GMT</pubDate></item><item><title><![CDATA[6.9 - JavaScript en Bootstrap]]></title><description><![CDATA[Nu je een stevige basis hebt in zowel JavaScript als Bootstrap, is het tijd om die twee krachten te bundelen. Veel Bootstrap-componenten — zoals modals, dropdowns, carrousels en collapsibles — werken pas écht optimaal als je ze met JavaScript aanstuurt of uitbreidt.Gelukkig maakt Bootstrap dit makkelijk: je hoeft zelden zelf complexe scripts te schrijven. Vaak gebruik je slechts HTML met speciale data-bs-* attributen, of je roept een component aan via JavaScript.Sommige componenten, zoals de modal, worden automatisch actief via HTML. Maar je kunt ze ook manueel activeren met JavaScript.let mijnModal = new bootstrap.Modal(document.getElementById('voorbeeldModal'));
mijnModal.show();
&lt;button class="btn btn-primary" data-bs-toggle="collapse" data-bs-target="#info"&gt; Toon informatie
&lt;/button&gt; &lt;div id="info" class="collapse"&gt; Dit is extra informatie die zichtbaar wordt.
&lt;/div&gt;
📌 Hier hoef je geen eigen JavaScript te schrijven — Bootstrap regelt het gedrag via data-bs-*.&lt;div id="mijnSlider" class="carousel slide" data-bs-ride="carousel"&gt; &lt;div class="carousel-inner"&gt; &lt;div class="carousel-item active"&gt;&lt;img src="img1.jpg" class="d-block w-100"&gt;&lt;/div&gt; &lt;div class="carousel-item"&gt;&lt;img src="img2.jpg" class="d-block w-100"&gt;&lt;/div&gt; &lt;/div&gt; &lt;button class="carousel-control-prev" type="button" data-bs-target="#mijnSlider" data-bs-slide="prev"&gt; &lt;span class="carousel-control-prev-icon"&gt;&lt;/span&gt; &lt;/button&gt; &lt;button class="carousel-control-next" type="button" data-bs-target="#mijnSlider" data-bs-slide="next"&gt; &lt;span class="carousel-control-next-icon"&gt;&lt;/span&gt; &lt;/button&gt;
&lt;/div&gt;
Met slechts een paar klassen en attributen bouw je een volledig functionele slider — zonder extra scriptwerk!Wil je extra gedrag toevoegen, zoals een alert tonen wanneer een gebruiker op een knop klikt?&lt;button id="extraKnop" class="btn btn-success"&gt;Klik mij&lt;/button&gt;
document.getElementById("extraKnop").addEventListener("click", function () { alert("Je klikte op een Bootstrap-knop met eigen JS!");
});
💡 Zo combineer je moeiteloos visuele kracht (Bootstrap) met logica en gedrag (JavaScript).✅ Bootstrap bevat interactieve componenten die deels of volledig afhankelijk zijn van JavaScript
✅ Met data-bs-* attributen activeer je gedrag zonder zelf code te schrijven
✅ Voor meer controle kun je zelf JS schrijven met bootstrap.Modal(), collapse, enz.
✅ Door eigen JavaScript toe te voegen aan Bootstrap-knoppen of -velden, maak je je site écht op maat
✅ Een dynamisch, responsief én interactief resultaat ontstaat wanneer je HTML + CSS + JavaScript + Bootstrap slim samen laat spelen]]></description><link>6.-javascript/6.9-javascript-en-bootstrap.html</link><guid isPermaLink="false">6. JavaScript/6.9 - JavaScript en Bootstrap.md</guid><pubDate>Sun, 15 Jun 2025 06:34:59 GMT</pubDate></item><item><title><![CDATA[5.8 - Breakpoints]]></title><description><![CDATA[Breakpoints zijn de fundamentele schakelmomenten waarop je layout zich aanpast aan de breedte van het scherm. Dit is cruciaal voor responsive design: een site moet zich niet hetzelfde gedragen op een breed desktopscherm als op een smalle smartphone. Bootstrap regelt dit met een reeks vooraf gedefinieerde schermgroottes, die je eenvoudig kunt aanspreken in je klassen en media queries.Bootstrap hanteert deze breakpoint-richtlijnen:⚠️ Let op: Voor de kleinste schermen (xs) gebruik je geen prefix.Bootstrap-componenten kunnen met prefix-klassen vanaf een bepaald schermformaat gedrag aanpassen.✅ Voorbeeld: kolommen per breakpoint&lt;div class="row"&gt; &lt;div class="col-12 col-sm-6 col-md-4 col-lg-3"&gt;Responsieve kolom&lt;/div&gt;
&lt;/div&gt;
Deze kolom is:
Volledige breedte op mobiel Halve breedte op tablets 1/3 op middelgrote schermen 1/4 op desktops Met display utility-klassen kun je elementen tonen of verbergen per schermtype:&lt;p class="d-none d-md-block"&gt;Toon alleen op schermen ≥768px&lt;/p&gt;
&lt;p class="d-block d-md-none"&gt;Toon alleen op smartphones&lt;/p&gt;
Combinaties als deze maken het mogelijk om verschillende content te tonen op verschillende apparaten.&lt;nav class="navbar d-none d-lg-flex"&gt; &lt;!-- Grote scherm navigatie --&gt;
&lt;/nav&gt; &lt;nav class="navbar d-flex d-lg-none"&gt; &lt;!-- Mobiele menu (hamburger) --&gt;
&lt;/nav&gt;
Zo kun je verschillende menu’s tonen afhankelijk van het schermformaat.✅ Breakpoints zijn de schakelmomenten voor responsieve gedrag
✅ Gebruik col-*, d-*, text-*, enz. met prefixen als -md-, -lg-, enz.
✅ Pas componenten aan per schermgrootte
✅ Combineer breakpoints slim voor precieze controle]]></description><link>5.-bootsrap/5.8-breakpoints.html</link><guid isPermaLink="false">5. Bootsrap/5.8 - Breakpoints.md</guid><pubDate>Sun, 15 Jun 2025 06:16:18 GMT</pubDate></item><item><title><![CDATA[5.7 - Forms]]></title><description><![CDATA[Formulieren vormen de kern van interactie op bijna elke website: van contactformulieren tot inlogpagina’s. Bootstrap 5 biedt hiervoor een uitgebreide set gestylede formuliercomponenten die er niet alleen professioneel uitzien, maar ook perfect responsief en goed toegankelijk zijn.Met slechts een paar klassen maak je al nette tekstvelden:&lt;form&gt; &lt;div class="mb-3"&gt; &lt;label for="voornaam" class="form-label"&gt;Voornaam&lt;/label&gt; &lt;input type="text" class="form-control" id="voornaam" placeholder="Typ je voornaam"&gt; &lt;/div&gt; &lt;div class="mb-3"&gt; &lt;label for="email" class="form-label"&gt;E-mailadres&lt;/label&gt; &lt;input type="email" class="form-control" id="email" placeholder="voorbeeld@mail.com"&gt; &lt;/div&gt;
&lt;/form&gt;
📌 form-control geeft het veld de typische Bootstrap-opmaak, terwijl form-label zorgt voor nette uitlijning en afstand.Gebruik form-check om je keuzes netjes te groeperen:&lt;div class="form-check"&gt; &lt;input class="form-check-input" type="radio" name="leeftijd" id="optie1"&gt; &lt;label class="form-check-label" for="optie1"&gt; Onder de 18 &lt;/label&gt;
&lt;/div&gt; &lt;div class="form-check"&gt; &lt;input class="form-check-input" type="checkbox" id="voorwaarden"&gt; &lt;label class="form-check-label" for="voorwaarden"&gt; Ik ga akkoord met de voorwaarden &lt;/label&gt;
&lt;/div&gt;
✅ Je kunt meerdere form-check blokken naast elkaar zetten of onder elkaar, afhankelijk van je layout.Dropdowns zijn eenvoudig toe te voegen:&lt;label for="keuze" class="form-label"&gt;Selecteer een optie&lt;/label&gt;
&lt;select class="form-select" id="keuze"&gt; &lt;option&gt;Keuze 1&lt;/option&gt; &lt;option&gt;Keuze 2&lt;/option&gt; &lt;option&gt;Keuze 3&lt;/option&gt;
&lt;/select&gt;
Gebruik een Bootstrap-knop om het formulier te verzenden:&lt;button type="submit" class="btn btn-primary"&gt;Versturen&lt;/button&gt;
Je kunt uiteraard andere kleuren, iconen of grootte toevoegen via utility-klassen.Bootstrap ondersteunt standaardformulier-validatie met visuele feedback. Een voorbeeld:&lt;form class="was-validated" novalidate&gt; &lt;div class="mb-3"&gt; &lt;label for="gebruikersnaam" class="form-label"&gt;Gebruikersnaam&lt;/label&gt; &lt;input type="text" class="form-control" id="gebruikersnaam" required&gt; &lt;div class="valid-feedback"&gt;Ziet er goed uit!&lt;/div&gt; &lt;div class="invalid-feedback"&gt;Dit veld is verplicht.&lt;/div&gt; &lt;/div&gt;
&lt;/form&gt;
📌 Voeg required toe aan het veld, en gebruik was-validated op het formulier om validatie visueel te tonen na verzending.Bootstrap maakt het makkelijk om meerdere velden naast elkaar weer te geven:&lt;form class="row g-3"&gt; &lt;div class="col-md-6"&gt; &lt;input type="text" class="form-control" placeholder="Voornaam"&gt; &lt;/div&gt; &lt;div class="col-md-6"&gt; &lt;input type="text" class="form-control" placeholder="Achternaam"&gt; &lt;/div&gt;
&lt;/form&gt;
De klasse row g-3 geeft automatisch ruimte (gap) tussen de rijen/kolommen.✅ Gebruik form-control, form-check, form-label en form-select voor professionele, toegankelijke formulieren
✅ Voeg Bootstrap’s validatie toe voor directe feedback
✅ Combineer met utility-klassen (mb-3, text-center, col-md-6, enz.) voor volledige controle
✅ Plaats knoppen eenvoudig met btn klassenMeer info en voorbeelden vind je op Bootstrap Formulieren]]></description><link>5.-bootsrap/5.7-forms.html</link><guid isPermaLink="false">5. Bootsrap/5.7 - Forms.md</guid><pubDate>Sun, 15 Jun 2025 06:15:09 GMT</pubDate></item><item><title><![CDATA[5.6 - Utility-klassen]]></title><description><![CDATA[In Bootstrap 5 zijn utility-klassen kleine, kant-en-klare CSS-klassen waarmee je snel en efficiënt veelvoorkomende stijlregels toepast — zónder dat je zelf CSS hoeft te schrijven. Denk aan marges, padding, kleuren, tekstuitlijning, positionering, zichtbaarheidsinstellingen, en nog veel meer.Ze maken je workflow razendsnel: even een klas toevoegen in je HTML, en klaar!✅ Geen aparte CSS nodig voor kleine wijzigingen
✅ Snel aanpasbaar en goed leesbaar
✅ Krachtige controle over spacing, display, alignment, enz.
✅ Werkt perfect samen met componenten, grid en eigen styling📌 Bootstrap is hiermee “class-first” geworden: het meeste stijlwerk doe je direct in je HTML!
m = margin p = padding Richtingen: t (top), b (bottom), s (start/left), e (end/right), x (horizontaal), y (verticaal) Voorbeelden:&lt;div class="m-3"&gt;Margin rondom 1.0rem&lt;/div&gt;
&lt;div class="mt-2"&gt;Margin bovenaan&lt;/div&gt;
&lt;div class="px-4"&gt;Padding links en rechts&lt;/div&gt;
&lt;div class="ps-5 pe-1"&gt;Start 3rem, end 0.25rem&lt;/div&gt;
Cijfers gaan meestal van 0 t/m 5 of auto.&lt;p class="text-center text-primary"&gt;Centrale, blauwe tekst&lt;/p&gt;
&lt;h3 class="text-end text-success"&gt;Rechts uitgelijnde, groene titel&lt;/h3&gt;
Andere kleurklassen: text-danger, text-info, text-muted, text-dark, enz.&lt;div class="bg-warning text-dark p-3"&gt;Gele achtergrond&lt;/div&gt;
&lt;div class="bg-dark text-white p-2"&gt;Donkere achtergrond&lt;/div&gt;
Let op: tekstkleur pas je aan met text-* om voldoende contrast te behouden.&lt;div class="d-none d-md-block"&gt;Toon pas vanaf tablets&lt;/div&gt;
&lt;div class="d-flex justify-content-between"&gt;Flex container&lt;/div&gt;
Andere displayopties: d-inline, d-grid, d-sm-none, enz.&lt;div class="position-relative top-0 start-50 translate-middle-x"&gt;Gepositioneerd&lt;/div&gt;
&lt;div class="align-self-end"&gt;Einde van de flexbox&lt;/div&gt;
Ook handig in combinatie met Flexbox of Grid.&lt;img class="img-thumbnail border border-primary rounded-circle" src="profiel.jpg"&gt; border, border-top, enz. rounded, rounded-pill, rounded-0 De echte kracht komt pas tot leven als je utilities combineert:&lt;div class="bg-light text-center text-muted p-4 mb-3 shadow rounded"&gt; Welkom bij mijn website!
&lt;/div&gt;
✅ Utility-klassen = directe styling zonder CSS
✅ Supersnel voor spacing, kleuren, uitlijning, zichtbaarheid
✅ Combineer ze om mooie, nette blokken te maken
✅ Werkt uitstekend samen met componenten en grids
✅ Volledige lijst op Bootstrap Utility Docs]]></description><link>5.-bootsrap/5.6-utility-klassen.html</link><guid isPermaLink="false">5. Bootsrap/5.6 - Utility-klassen.md</guid><pubDate>Sun, 15 Jun 2025 06:13:15 GMT</pubDate></item><item><title><![CDATA[5.2 - Bootstrap bestanden koppelen]]></title><description><![CDATA[Om Bootstrap correct te gebruiken in je project, moet je de juiste CSS- en JavaScript-bestanden koppelen aan je HTML-pagina. Dit gebeurt deels in de &lt;head&gt;, deels vlak voor &lt;/body&gt;. Hieronder leggen we uit hoe je dat doet in je PhpStorm-project.Begin in de &lt;head&gt; van je HTML met het instellen van de viewport. Hierdoor weet de browser hoe breed het scherm van de gebruiker is — essentieel voor responsive gedrag:&lt;meta name="viewport" content="width=device-width, initial-scale=1"&gt;
Koppel eerst het Bootstrap CSS-bestand, gevolgd door je eigen stylesheet:&lt;link rel="stylesheet" type="text/css" href="css/bootstrap.min.css"&gt;
&lt;link rel="stylesheet" type="text/css" href="css/sheet.css"&gt;
📌 Let op:
bootstrap.min.css is de gecomprimeerde versie (sneller laden) Je eigen CSS (sheet.css) mag na Bootstrap staan, zodat je stijlen kunt overschrijven indien nodig Voor interactieve Bootstrap-componenten (zoals modals, carrousels, dropdowns) is JavaScript vereist. Die koppel je meestal vlak voor de sluiting van &lt;/body&gt;:&lt;script src="js/bootstrap.min.js"&gt;&lt;/script&gt;
&lt;/body&gt;
💡 Reden voor die plaatsing: eerst wordt alle HTML geladen, daarna pas het script. Zo weet JavaScript zeker dat de elementen waar het naar verwijst al bestaan.✅ Als je eigen JS gebruikt (bijvoorbeeld custom.js), voeg dat script na het Bootstrap-script toe:&lt;script src="js/bootstrap.min.js"&gt;&lt;/script&gt;
&lt;script src="js/custom.js"&gt;&lt;/script&gt;
&lt;/body&gt;
✅ Zet &lt;meta name="viewport"&gt; in de &lt;head&gt; voor responsief gedrag
✅ Koppel eerst bootstrap.min.css, daarna je eigen CSS
✅ Koppel bootstrap.min.js onderaan, net voor &lt;/body&gt;
✅ Voeg daarna je eigen JavaScriptbestanden toe indien nodig]]></description><link>5.-bootsrap/5.2-bootstrap-bestanden-koppelen.html</link><guid isPermaLink="false">5. Bootsrap/5.2 - Bootstrap bestanden koppelen.md</guid><pubDate>Sun, 15 Jun 2025 06:05:12 GMT</pubDate></item><item><title><![CDATA[4.6 - Alles samen]]></title><description><![CDATA[In de vorige paragrafen hebben we de bouwstenen geleerd: viewport, @media queries, flexbox en grid. In deze paragraaf gaan we die technieken samenbrengen in een complete, responsive layout.De meeste moderne webpagina’s bestaan uit terugkerende onderdelen zoals:
header – meestal met logo en navigatie
nav – een horizontale of verticale menubalk
main – de hoofdinhoud van de pagina
aside – zij-informatie zoals widgets of reclames
footer – copyright en contactgegevens
✅ HTML-structuurvoorbeeld:&lt;div class="container"&gt; &lt;header class="hdr"&gt;Header&lt;/header&gt; &lt;nav class="nav"&gt;Navigatie&lt;/nav&gt; &lt;main class="main"&gt;Hoofdinhoud&lt;/main&gt; &lt;aside class="side"&gt;Zijbalk&lt;/aside&gt; &lt;footer class="ftr"&gt;Footer&lt;/footer&gt;
&lt;/div&gt;
.container { display: grid; grid-template-areas: "hdr hdr" "nav main" "nav side" "ftr ftr"; grid-template-columns: 1fr 3fr; grid-template-rows: auto; gap: 10px;
} .hdr { grid-area: hdr; }
.nav { grid-area: nav; }
.main { grid-area: main; }
.side { grid-area: side; }
.ftr { grid-area: ftr; }
💡 Hier hebben we een 2-koloms layout waarin nav verticaal langs de linkerkant loopt.Binnen secties zoals .main of .nav kun je Flexbox gebruiken om rijen, knoppen of kaarten mooi te ordenen..main { display: flex; flex-wrap: wrap; justify-content: space-between;
}
Gebruik @media om de layout aan te passen bij kleinere schermen:@media (max-width: 768px) { .container { grid-template-areas: "hdr" "nav" "main" "side" "ftr"; grid-template-columns: 1fr; } .main { flex-direction: column; }
}
🎯 Hiermee wordt de 2-koloms layout op tablets en smartphones omgevormd tot één enkele kolom — veel gebruiksvriendelijker.✅ Combineer CSS Grid voor de hoofdlayout met Flexbox voor de inhoud
✅ Gebruik @media queries om het gedrag op verschillende schermformaten aan te passen
✅ Start je layout met viewport correct ingesteld
✅ Een goede responsive layout is mobielvriendelijk, flexibel en goed leesbaar]]></description><link>4.-responsive-design/4.6-alles-samen.html</link><guid isPermaLink="false">4. Responsive Design/4.6 - Alles samen.md</guid><pubDate>Sun, 15 Jun 2025 06:00:09 GMT</pubDate></item><item><title><![CDATA[2.13 - Externe inhoud]]></title><description><![CDATA[Naast afbeeldingen kun je in HTML ook video's, audio en externe webpagina's toevoegen. Dit maakt je website interactiever en dynamischer.🚀 Waarom externe inhoud gebruiken?
✔ Verbeterde gebruikerservaring → Video’s en audio maken content aantrekkelijker.
✔ Meer interactiviteit → Gebruikers kunnen direct media afspelen.
✔ Inhoud van andere websites insluiten → Bijvoorbeeld YouTube-video’s of Google Maps.Het &lt;video&gt;-element wordt gebruikt om een video op een webpagina te plaatsen.✅ Basisstructuur:&lt;video width="320" height="240" controls&gt; &lt;source src="videos/movie.mp4" type="video/mp4"&gt;
&lt;/video&gt;
✔ controls → Voegt afspeelknoppen toe.
✔ width en height → Bepaalt de grootte van de videospeler.
✔ type="video/mp4" → Geeft het bestandsformaat aan.🚀 Je kunt meerdere &lt;source&gt;-elementen gebruiken voor compatibiliteit met verschillende browsers!Het &lt;audio&gt;-element maakt het mogelijk om geluidsfragmenten en muziek toe te voegen.✅ Voorbeeld:&lt;audio controls&gt; &lt;source src="sounds/music.mp3" type="audio/mpeg"&gt;
&lt;/audio&gt;
✔ controls → Voegt afspeelknoppen toe.
✔ type="audio/mpeg" → Geeft het bestandsformaat aan.🚀 Je kunt MP3, OGG en WAV-bestanden gebruiken voor audio-afspelen!Met &lt;iframe&gt; kun je een andere webpagina insluiten in jouw website.✅ Voorbeeld:&lt;iframe src="https://www.wikipedia.org" width="600" height="400"&gt;&lt;/iframe&gt;
✔ src → De URL van de externe pagina.
✔ width en height → Bepaalt de grootte van het iframe.🚀 Gebruik &lt;iframe&gt; voorzichtig, omdat sommige sites het insluiten kunnen blokkeren!✅ Gebruik &lt;video&gt; om video's toe te voegen met afspeelknoppen.
✅ Gebruik &lt;audio&gt; voor geluid en muziek.
✅ Gebruik &lt;iframe&gt; om externe webpagina’s in te voegen.]]></description><link>2.-html/2.13-externe-inhoud.html</link><guid isPermaLink="false">2. HTML/2.13 - Externe inhoud.md</guid><pubDate>Sat, 14 Jun 2025 18:36:56 GMT</pubDate></item></channel></rss>