🏠 Course Library🧱 Web Design CourseLEVEL 1 of 2Next: A Notebook, Not a Novel ➑
πŸ€–

Kodi's Code Clubhouse

Learn HTML, CSS & JavaScript β€” and build your first website!

A Koinder Global Limited production

πŸ”’

This lesson is part of Kodi Premium

Unlock unlimited access to HTML, CSS, JavaScript, the Website Project, Python, and unlimited questions to Kodi.

🧱 HTML β€” Meet Your Website's Body

Meet Bobo β€” he's going to help us understand websites forever! πŸ§‘

Bobo has a head and a body (arms, legs, feet). That's exactly how every website is built too:

Colorful poster showing how HTML is like the human body: the head is the head tag holding the title and styles, the upper body is a div holding content, the legs are the footer, and the browser's face is the nav bar. Includes an ASCII table showing A equals 65, less-than equals 60, and greater-than equals 62.
πŸ‘† Study the picture, then try the interactive version below!
πŸ§‘ HTML IS LIKE YOU! πŸ–₯️
πŸ‘† Tap any part of the kid β€” watch the browser light up and see its secret ASCII code!
🧠
😊
<head>
🧭
<nav>
πŸ–ΌοΈ
πŸ“
▢️
πŸ”—
<div>
✍️
<input>
<footer>
πŸ‘€ kidssite.com πŸ‘€
HOMEABOUTGAMES
πŸͺ
Welcome!
❀️
🐱
πŸ‘€ Your name?
SEND

πŸ‘† Tap a body part to begin!

Every part of you matches a part of a web page β€” and every tag is really just letters with secret ASCII numbers underneath.

🧠 The <head> tag is like Bobo's head β€” it holds the "thinking" stuff nobody sees directly: the website's title (like a name tag), and other behind-the-scenes info. You don't see a brain when you look at someone, but it's controlling everything!

🧍 The <body> tag is like Bobo's actual body β€” arms, legs, feet β€” everything people can actually SEE and interact with. All your headings, pictures, and buttons live here.

And who's looking AT Bobo? That's the browser β€” like a boy standing in front of Bobo, watching him, dressed and moving!

πŸ““ A Notebook, Not a Novel A novel is just paragraphs of flowing words β€” no labels, no sections. But HTML is written like a notebook with labeled tabs: "Chapter 1," "Chapter 2," each clearly marked. That's what <tags> do β€” they LABEL each part so the browser knows exactly what it's looking at: "this is a heading," "this is Bobo's head," "this is his body."

πŸ‘‰ Scroll down to Dress Up Bobo below β€” you'll see exactly how his "clothes" (CSS) and "movements" (JavaScript) get added on top of his body (HTML)!

πŸ”€ Why the Pointy Brackets ( < > )? Every tag looks like <div> ... </div> β€” the angle brackets act like open and closed hands, clearly wrapping around whatever's inside so the browser instantly knows "this is a labeled instruction, not just plain words." The slash ( / ) in the closing tag means "this label is now finished" β€” like closing a folder you opened earlier.
πŸ“– Meet the Man Who Invented HTML β€” Using the Secret Code You Already Know In 1989, at CERN β€” the very same place HΓ₯kon later invented CSS β€” a scientist named Tim Berners-Lee wanted computers everywhere to share documents that could link to each other. But he had a problem: how do you write a "label" inside plain text, without confusing it with the actual words?

His answer was brilliant: he remembered that every computer already agreed on ASCII β€” the secret number for every character, including < and >. He decided: "Whenever a browser's eyes see the ASCII code for <, it should stop reading normal words and start reading a special LABEL instead β€” until it sees >, when normal words continue again."

That single rule is HTML. Tim didn't invent new secret numbers β€” he reused the ASCII table everyone already had, and just taught browsers a new RULE for what to do when they spot certain characters. That's it. That's the whole invention.

🧱 Common HTML Tags β€” One at a Time

Real mastery comes from seeing the same idea again and again, in small doses. Here are the tags you'll use the most β€” each one explained, shown, and ready for you to try.

<h1>My Big Title</h1>
<h1> makes the biggest, boldest heading on a page β€” like the title of a book.

My Big Title

<p>Just a regular sentence.</p>
<p> stands for "paragraph" β€” it's for normal, everyday sentences.

Just a regular sentence.

<div>A labeled box</div>
<div> is an invisible box that groups things together β€” remember, Bobo's entire body is built from divs!
A labeled box
<button>Click Me</button>
<button> makes a real, clickable button β€” though it needs JavaScript (next lesson!) to actually DO something when clicked.
<img src="cat.jpg">
<img> shows a picture. Notice it has NO closing tag β€” it's a "self-closing" tag because a picture doesn't wrap around other content.
πŸ–ΌοΈ
<a href="lessons.html">Go to Lessons</a>
<a> stands for "anchor" β€” it's a clickable link that takes you to another page, like the ones in our own navigation bar!

πŸ‘‰ Now scroll down to Dress Up Bobo and your own Playground below β€” try adding one of these tags yourself and watch what happens!

πŸ““ Notebook vs Novel β€” See the Browser's Face!

Tap the coloured tabs on the notebook and watch how fast the browser finds each part β€” then look at the poor confused novel beside it!

πŸ““ A Notebook, Not a Novel!

Why does HTML use all those <tags>? Tap the coloured tabs on the notebook and watch the browser's face β€” then look at the poor confused novel! πŸ‘€

πŸ“– The Novel β€” no labels!

Just flowing words... which part is the title? Where's the picture? Nobody knows!

welcome to my page i love cats my cat is called whiskers here is a picture of whiskers playing also please click this button to say hello this website was made in 2026 thank you for visiting goodbye the end

is this a heading is it a paragraph is that a picture or a button who can even tell the words just go on and on and on with no signs no labels no sections nothing!

😡 The Browser: "Help! Which part is the heading?? Where do I hang the picture?? There are NO LABELS!"

πŸ““ The Notebook β€” HTML with labeled tabs!

πŸ‘‡ Tap a tab β€” the browser finds that part instantly:

<head>🧠 Chapter 0: the thinking part β€” the page's title & secrets (hidden!)
<h1>πŸ“£ Chapter 1: Welcome to my page!
<p>✍️ Chapter 2: I love my cat Whiskers. He is very funny.
<img>🐱 Chapter 3: [Whiskers' photo hangs here]
<footer>🦢 Chapter 4: Β© 2026 β€” made with ❀️ and HTML
πŸ™‚ The Browser: "Tap a tab above β€” I'll show you how fast I find things when they're labeled!"
πŸ’‘ That's the whole secret: a novel is words with no signs, but HTML is a notebook with labeled tabs. Every <tag> is a label that tells the browser: "this is a heading", "this is Bobo's head", "this is his body" β€” so it never, ever gets confused! πŸ““βœ¨

πŸ“¦ How Real Websites Break Their Body Into Rooms

Remember, <div> is just an invisible box. Real websites use LOTS of divs, each one NAMED for the job it's doing β€” like rooms in a house, each with a label on the door.

<div class="nav">...</div>
A div named nav holds the website's navigation menu β€” the links at the top, like our own nav bar!
🧭 Navigation
<div class="logo">...</div>
A div named logo holds the little picture or name that represents the website β€” like Bobo himself could be a logo!
πŸ€–
<div class="article">...</div>
A div named article holds one whole piece of writing β€” like one blog post or one story.
πŸ“° Article
<div class="image">...</div>
A div named image holds a picture, keeping it neatly separated from the text around it.
πŸ–ΌοΈ Image
<div class="audio">...</div>
A div named audio holds a sound or music player β€” remember Kodi's own voice buttons? Something like this holds them!
πŸ”Š Audio

Navigation menus and logo lists often use a special tag too β€” a list! There are two kinds:

<ul><li>Home</li><li>About</li></ul>
<ul> (unordered list) is for items where the ORDER doesn't matter β€” like nav menu links.
  • Home
  • About
  • Contact
<ol><li>Step 1</li><li>Step 2</li></ol>
<ol> (ordered list) is for items where the ORDER matters β€” like steps in a recipe.
  1. Wake up
  2. Brush teeth
  3. Go to school

πŸ’‘ A real webpage is really just LOTS of small, named divs and lists, stacked together like labeled boxes in a room β€” nothing more mysterious than that!

🧩 Tag Puzzle β€” Drag & Build Your Own Page!

Pick up a tag block from the library and drop it into the editor. Watch it appear as real code AND as a real page β€” at the same time!

πŸ“š Your Tag Library β€” drag one down!
πŸ“’<h1>
πŸ“<p>
πŸ–ΌοΈ<img>
🎬<video>
πŸ”—<a>
πŸ“‹<ul>
πŸ”˜<button>
πŸ“ Your Code (the notebook)
Drag a tag block here (or tap one) to start building...
πŸ‘€ What The Browser Shows
Your page will appear here!

🐷 Where Does Your Website Actually LIVE?

πŸ“– The Story of the Piggy Bank Imagine you have a piggy bank 🐷. Every coin you drop inside is safe, and you always know where to find it. Now imagine you have several piggy banks: one for school money, one for sweets, one for gifts β€” each holding different things, each clearly labeled.

Your computer works exactly the same way! Each thing you make β€” a picture, a video, a page you wrote β€” is called a file, like a single coin. And a folder is the piggy bank that holds them, keeping everything organized so nothing gets lost.

But here's the thing: a piggy bank at home can only be reached by people IN your house. So how does the whole world visit your website? You send a copy of your piggy bank up into the cloud ☁️ β€” a huge, very safe building full of computers (called servers) that never sleep. Once your files live there, anyone, anywhere on Earth, can visit your page β€” day or night.

That's exactly what happened with Kodi's Code Clubhouse! These very files you're reading right now live in a folder on a server, and travelled through cables (remember the 0s and 1s racing through?) all the way to your screen. 🌍
πŸͺ™

A File

One single thing β€” a picture, a video, or one page you wrote.

🐷

A Folder

The piggy bank that holds lots of files together, neatly organized.

☁️

The Cloud

A giant building full of computers that never sleep, so the whole world can visit.

πŸ’‘ So a website is really just: files (your work) β†’ inside folders (your piggy banks) β†’ uploaded to the cloud (so everyone can see it).

πŸ› οΈ Your Playground

HTML
CSS
JavaScript
πŸ‘€ Your Website

🎨 Dress Up & Move Bobo!

Bobo's body (HTML) never changes β€” but his clothes (CSS) and his movement (JavaScript) do, every time you click something below!

πŸ”’

Unlock HTML, CSS & JavaScript to play with Bobo!

πŸ‘• Shirt Color (his CSS)
πŸ‘– Pants Color (his CSS)
🎬 Movement (his JavaScript)

πŸ’» Here's the real code behind what you just did:

Click a color or movement above to see the code!

πŸŽ‰ You've met Bobo's body β€” now let's give him some style!

CSS is exactly like choosing Bobo's clothes. Ready to dress him up properly?

🧩 Try the Full HTML Playground β†’ 🎨 Next: CSS β€” Bobo's Clothes β†’
πŸ…

An Official Koinder Skills Academy Programme

Kodi's Code Clubhouse is produced by Koinder Global Limited. Koinder Global Limited is licensed by the FCT Department of Mass Education to provide vocational skills training and run Non-Formal Education programmes.

Lead Tutor & Curriculum Developer: Glory N. Nweke

`; previewFrame.srcdoc = doc; } [htmlBox, cssBox, jsBox].forEach(box => box.addEventListener('input', renderPreview)); htmlBox.value = `
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
`; cssBox.value = `body { background:#F0F4FF; text-align:center; padding-top:40px; }\n.bobo { position:relative; width:120px; height:220px; margin:0 auto; }\n.bobo-head { width:70px; height:70px; background:#FFD199; border-radius:50%; margin:0 auto; position:relative; }\n.eye { width:8px; height:8px; background:#333; border-radius:50%; position:absolute; top:25px; }\n.eye.left { left:18px; } .eye.right { right:18px; }\n.smile { width:26px; height:13px; border:3px solid #333; border-top:none; border-radius:0 0 20px 20px; position:absolute; top:38px; left:22px; }\n.bobo-body { width:60px; height:80px; background:hotpink; margin:0 auto; border-radius:10px; }\n.bobo-arm { width:15px; height:60px; background:hotpink; position:absolute; top:75px; border-radius:8px; }\n.bobo-arm.left { left:5px; } .bobo-arm.right { right:5px; }\n.bobo-leg { width:18px; height:60px; background:#3D2470; position:absolute; top:150px; border-radius:8px; }\n.bobo-leg.left { left:28px; } .bobo-leg.right { right:28px; }`; jsBox.value = ``; renderPreview(); markLessonSeen('html'); /* ---------------- NOTEBOOK vs NOVEL DEMO ---------------- */ const synth = window.speechSynthesis; let voice=null; function pickVoice(){ if(!synth) return; const vs=synth.getVoices(); voice = vs.find(v=>/en-NG/i.test(v.lang)) || vs.find(v=>/en-GB/i.test(v.lang)) || vs.find(v=>/^en/i.test(v.lang)) || vs[0] || null; } if(synth){pickVoice(); synth.onvoiceschanged=pickVoice;} function speak(t, btn){ if(!synth) return; synth.cancel(); const u=new SpeechSynthesisUtterance(t.replace(/[\u{1F300}-\u{1FAFF}\u{2600}-\u{27BF}\u{FE0F}]/gu,'')); if(voice) u.voice=voice; u.rate=.95; u.pitch=1.15; if(btn){btn.classList.add('speaking'); u.onend=u.onerror=()=>btn.classList.remove('speaking');} synth.speak(u); } document.getElementById('mainSay').addEventListener('click', function(){ if(this.classList.contains('speaking')){synth.cancel();this.classList.remove('speaking');return;} speak("A notebook, not a novel! A novel is just paragraphs of flowing words. No labels, no sections. The poor browser gets confused. It cannot tell which part is the heading, or where to hang the picture. But HTML is written like a notebook with labeled tabs. Chapter one, chapter two, each clearly marked. That is what tags do. They label each part, so the browser knows exactly what it is looking at. This is a heading. This is Bobo's head. This is his body. Tap the coloured tabs on the notebook and watch the browser find each part instantly!", this); }); const face=document.getElementById('browserFace'); const speech=document.getElementById('browserSpeech'); const faces=['πŸ˜ƒ','🀩','πŸ˜„','πŸ₯³','😁']; document.querySelectorAll('.tab').forEach((tab,i)=>{ tab.addEventListener('click', ()=>{ document.querySelectorAll('.tab').forEach(t=>t.classList.remove('active')); document.querySelectorAll('.n-row').forEach(r=>r.classList.remove('glow')); tab.classList.add('active'); const row=document.getElementById(tab.dataset.row); void row.offsetWidth; row.classList.add('glow'); face.textContent=faces[i%faces.length]; speech.innerHTML='The Browser: "'+tab.dataset.msg+'"'; speak('The browser says: '+tab.dataset.msg); }); }); /* ---------------- INTERACTIVE "HTML IS LIKE YOU" DIAGRAM ---------------- */ const HLY_PARTS = { head: { tag: '', bodyPart: 'BRAIN 🧠', glow: 'hlyBarEl', desc: "Your brain thinks and holds information nobody sees β€” the page's title, its styles, its hidden settings. In the browser, that's the very top bar!" }, nav: { tag: '