STRUCTURE & ELEMENTS
HTML
HyperText Markup Language defines the structure and elements of a page.
Explore HTMLA WEB DEVELOPMENT PORTFOLIO
Structure. Style. Interaction.
From the first HTML tag to a responsive website.
Based on the VTTECH 2026 course slides.

01 / FOUNDATIONS
Files become a website.
Each language has its own role.
STRUCTURE & ELEMENTS
HyperText Markup Language defines the structure and elements of a page.
Explore HTMLSTYLE & APPEARANCE
Cascading Style Sheets define appearance, including color, fonts and layout.
Explore CSSLOGIC & INTERACTION
The browser executes JavaScript to add logic and interaction to a website.
Explore JavaScriptThe browser requests pages and resources from a server, interprets HTML, applies CSS, executes JavaScript and renders the website.
HTTP request: https://google.com
HTTP response: index.html and resources.
portfolio/
├── index.html
├── css/
│ └── style.css
├── js/
│ └── script.js
└── assets/
├── images/
├── video/
├── audio/
└── models/index.html is the entry point. CSS, JavaScript and media get their own folders. References must be exact; paths are case sensitive on UNIX.
Any text editor can be used. Helpful features include syntax highlighting, auto-completion, error detection, formatting and live preview.
Popular editors: Visual Studio Code, WebStorm, Sublime Text, Notepad++ and Vim / Neovim.
Use browser DevTools and the device toolbar to test responsiveness. Check property compatibility using the slide’s MDN box-shadow reference ↗.
02 / HTML FUNDAMENTALS
Use tags for their meaning.
Build a readable page structure.
Use HTML tags based on meaning and not just functionality.
Semantic structure improves readability and helps search engines understand the content.
<!DOCTYPE html>
<html lang="en">
<head>
<title>Page title</title>
</head>
<body>
Page content
</body>
</html>| Example src | Location |
|---|---|
logo.png or ./logo.png | Same folder |
images/logo.png | Subfolder |
../logo.png | Up one folder |
../../logo.png | Up two folders |
/images/logo.png | From the website root |
03 / CSS FOUNDATIONS
Selectors, properties and values.
Reusable classes, consistent styles.
COLOR · TYPOGRAPHY · SPACING
Classes start with a dot in CSS. Use the HTML class attribute to apply them to any tag.
<section class="container">…</section>
.container {
max-width: 1100px;
margin: 0 auto;
padding: 0 2rem;
}.container is the selector, padding is a property and 0 2rem is its value.
From a separate CSS file, linked in the head.
<link rel="stylesheet"
href="css/style.css">Inside a style element in the head.
<style>
a { color: green; }
</style>Inside a tag’s style attribute.
<p style="color:red;">
A red paragraph.
</p>color: #ffffffbackground-color: #2563ebfont-size: 24pxfont-family: Arialfont-weight: 700text-align: centerwidth: 320pxheight: 140pxmargin: 20pxpadding: 24pxborder: 2px solid blueborder-radius: 15pxdisplay: blockposition: relativeopacity: 0.8line-height: 1.504 / RESPONSIVE LAYOUTS
Three columns. Then two. Then one.
Resize the browser to see it happen.
Flexbox creates vertical or horizontal layouts that adapt when the screen size changes.
Choose a row or column.
Let items move to a new line.
Distribute space and align items.
Grid creates layouts with rows and columns. A container holds items arranged into tracks, cells and areas.
Rows and columns form the layout.
Give parts of the layout names.
Place and span individual items.
grid-template-columns, grid-template-rows and grid-template-areas define the structure. gap separates tracks.
justify-items and align-items align items in their cells; justify-content and align-content align the whole grid.
Item alignment: start, center, end, stretch. Grid alignment also supports space-between, space-around and space-evenly.
Use grid-column-start, grid-column-end, grid-row-start and grid-row-end, or the grid-column / grid-row shorthands. Use span for multiple tracks and grid-area for named areas.





05 / RESPONSIVE CSS
Support mobile, tablets and desktop.
Adapt images, text and layout.
One column.
Two columns.
Three columns.
<meta name="viewport"
content="width=device-width,
initial-scale=1.0">Use media queries to define styles for different browser sizes. For example, hide an element when the browser is 600px wide or less.
@media (max-width: 600px) {
.example { display: none; }
}Media query reference ↗width: 100% stretches an image inside its container.max-width: 100% limits an image to its intrinsic pixel width.<picture> chooses different images based on screen width.object-fit: fill | contain | cover controls how an image fills its container.vw sizes text relative to viewport width: 1vw = 1% of viewport width.The hero uses picture, the images use cover or contain, and the headings use viewport-relative sizing.
06 / JAVASCRIPT
Change content, attributes,
styles and the HTML DOM.
JavaScript is a scripting language using C-like notation. It can be integrated as an external resource, inside the head, or directly in attribute values.
Variables store values. Functions perform actions. The dot operator calls functions on objects, such as document.getElementById('id').
These are the slide’s JavaScript examples, shown as reference code in this HTML-and-CSS portfolio.
JavaScript introduction from the slides ↗let name = "John";
const pi = 3.14159;
function getName() {
return "John";
}
function addFive(number) {
return number + 5;
}
function changeText() {
document.getElementById("myLabel")
.innerHTML = "New Text";
}Use alert("Hello world!") to test execution. Every HTML element can have an id. The button’s onclick attribute can call a function to change the label.
<div id="myLabel">Hello world!</div>
<button onclick="changeText()">Press me</button>07 / MULTIMEDIA CONTENT
Images, video and 3D assets.
Choose the right format.

JPEG for lossy compression. PNG for lossless images and transparency. WebP / AVIF for modern compression. SVG for scalable icons, diagrams and logos.
Image markupA real video embedded with an iframe. Use the player controls to play, pause or enter fullscreen. Watch on YouTube ↗
Video markupExplore the astronaut model from modelviewer.dev. Drag to rotate; scroll or pinch to zoom. Download the GLB ↗
3D markup<img src="hero.webp"
alt="Girl in a jacket"
title="Girl in a jacket"
width="800" height="1200"
loading="lazy">Verify visual quality and browser support when choosing an image format.
<video controls preload="metadata"
poster="preview.jpg" playsinline>
<source src="demo.webm"
type="video/webm">
<source src="demo.mp4"
type="video/mp4">
<track kind="captions"
src="captions.vtt"
srclang="en" label="English">
Your browser does not support video.
</video><iframe
src="https://www.youtube-nocookie.com/embed/s_ST3hzMsVE"
title="YouTube video selected for this portfolio"
loading="lazy"
allow="accelerometer; autoplay;
encrypted-media; picture-in-picture"
allowfullscreen>
</iframe>The live player above uses the selected YouTube video. Native video filenames remain the slide’s markup examples.
<script type="module"
src="js/vendor/model-viewer.min.js">
</script>
<model-viewer src="assets/models/neil-armstrong.glb"
alt="3D model of an astronaut suit"
camera-controls auto-rotate
poster="assets/slides/image71.png">
</model-viewer>The live model uses the locally downloaded astronaut GLB and model-viewer module. The slide’s original markup used chair.glb; this version uses the astronaut pictured in the slide.
modelviewer.dev — slide reference ↗08 / PUBLISHING
Upload your website.
Make your files available on the web.
Web-/FTP Ausbildungsserver.
Neue Webseite erstellen.
Erstellen.
FTP transfers files between a computer and a server over a network. An FTP client such as FileZilla connects to the server that stores and provides the files.
Upload sends files to the server. Download copies files from the server to your computer.
Detailansicht…and note the FTP server, username and password.
New site, name it and enter the connection details.
Only use plain FTP…for this test-server walkthrough.