1. modul · Alapozás · 1. lecke
Mielőtt leírnád az első <p> taget, értsd meg, hol fut az,
amit írsz, és ki csinál belőle weboldalt. Enélkül a HTML csak értelmetlen kacskaringók
sorozata — utána viszont minden a helyére kerül.
Képzeld el, hogy bemész egy könyvtárba, és odaszólsz a pultnál ülő könyvtárosnak: „Kérem a Kis herceget!” A könyvtáros hátramegy, megkeresi, és a kezedbe adja. Te nem tudod, hol volt a könyv, melyik polcon, milyen rendszer szerint — csak kértél, és kaptál.
A web pontosan így működik. Két szereplő van:
| Szereplő | Ki ez, és mit csinál? |
|---|---|
| Kliens (te) |
A böngésződ: Chrome, Firefox, Edge, Safari. Ez fut a te gépeden vagy telefonodon. Ő kér, és ő jeleníti meg, amit kapott. |
| Szerver (a könyvtáros) |
Egy másik számítógép, ami valahol a világban éjjel-nappal be van kapcsolva, és arra vár, hogy valaki kérjen tőle valamit. Ő küld. |
www.example.com, és leütöd az Enter-t.A szerver nem képet küld az oldalról. Szöveget küld. Hogy abból mi lesz látható, azt teljes egészében a böngésző dönti el, a szöveg utasításai alapján. Ezeket az utasításokat fogod te írni.
Ez a lecke legfontosabb mondata: a weboldal nem valami misztikus dolog, hanem néhány fájl egy mappában. Ugyanolyan fájlok, mint a Word-dokumentumaid — csak más a kiterjesztésük, és a böngésző nyitja meg őket.
Egy tipikus kis weboldal mappája így néz ki:
bemutatkozo-oldal/
├── index.html ← a kezdőlap (a tartalom)
├── style.css ← a megjelenés (színek, méretek)
├── script.js ← a viselkedés (nem kötelező)
└── kepek/
├── profil.jpg
└── hatter.jpg
| Kiterjesztés | Mi ez? | Mire való? |
|---|---|---|
.html | HTML-fájl | A tartalom és a szerkezet: mi a címsor, mi a bekezdés, hol van kép, hol van link. |
.css | Stíluslap | A megjelenés: színek, betűtípus, méret, elrendezés, térközök. |
.js | Szkript | A viselkedés: mi történjen kattintásra. Ezzel most nem foglalkozunk. |
.jpg .png .svg | Képek | Amiket az oldalon megjelenítesz. |
A .html és a .css fájlok sima
szövegfájlok. Ki tudod nyitni őket Jegyzettömbbel is. Azért használunk mégis VS Code-ot,
mert az színezi a kódot és szól, ha elrontottad — de a fájl attól még ugyanaz a sima szöveg.
Amíg tanulsz, egyáltalán nincs szükséged szerverre. Elkészíted a fájlt a gépeden,
duplán rákattintasz, és a böngésző megnyitja. A címsorban ilyenkor nem https://
áll, hanem file:///C:/web/index.html — vagyis a saját merevlemezedről olvassa.
Szerverre csak akkor lesz szükséged, ha az oldalt mások is el akarják érni az interneten.
A weben három nyelv dolgozik együtt, és mindegyiknek pontosan meghatározott feladata van. A legjobb hasonlat egy ház:
| Nyelv | A házban… | A weboldalon… |
|---|---|---|
| HTML | a szerkezet: falak, szobák, ajtók, ablakok | a tartalom és a váz: „ez itt egy főcím”, „ez egy bekezdés”, „itt van egy kép”, „ide kattintva máshova jutsz” |
| CSS | a burkolat: festés, csempe, bútor, világítás | a megjelenés: milyen színű, mekkora, hol helyezkedik el, mennyi körülötte a hely |
| JavaScript | a gépészet: villanykapcsoló, riasztó, garázskapu | a viselkedés: gombnyomásra változik valami, adat érkezik, animáció indul |
Ház nem épül falak nélkül. Ha a HTML rossz — hiányos, kusza, nincsenek benne megnevezhető részek —, akkor a CSS-sel csak szenvedni fogsz. Előbb mindig a tartalom, utána a megjelenés. Ezért tanuljuk ebben a sorrendben.
Az alábbi két doboz ugyanazt a HTML-t tartalmazza. Az egyetlen különbség, hogy a másodikhoz tartozik egy stíluslap is. Figyeld meg: a szöveg mindkettőben azonos — csak a külseje más.
<h1>Kovács Anna</h1> <p>Szoftverfejlesztő tanuló vagyok.</p> <a href="#">Írj nekem</a>
<h1>Kovács Anna</h1> <p>Szoftverfejlesztő tanuló vagyok.</p> <a href="#">Írj nekem</a>
body {
font-family: "Segoe UI", Arial, sans-serif;
background-color: #fdf2f5;
padding: 20px;
}
h1 {
color: #be123c;
border-bottom: 3px solid #fb7185;
padding-bottom: 6px;
}
p { color: #52434b; }
a {
display: inline-block;
margin-top: 8px;
background-color: #be123c;
color: white;
text-decoration: none;
padding: 8px 18px;
border-radius: 6px;
}
A fenti CSS-t most nem kell értened. A 12. leckétől kezdve minden sorát megtanulod. Most csak azt lásd, hogy ugyanaz a tartalom kétféleképpen is kinézhet.
Jogos a kérdés: ha a HTML csak szöveg, miért kellenek bele azok a furcsa
<kacskaringók>? Miért nem írjuk le simán, amit akarunk?
Azért, mert a böngésző nem tud olvasni. Nem érti, hogy az első sor egy cím és a második egy bekezdés. Neked kell megjelölnöd — innen a HTML neve is: HyperText Markup Language, vagyis jelölőnyelv.
Nézd meg, mi történik, ha jelölés nélkül írunk le egy szöveget:
Kovács Anna Szoftverfejlesztő tanuló vagyok. Szeretek weboldalakat készíteni. Elérhetőség: anna@example.com
<h1>Kovács Anna</h1> <p>Szoftverfejlesztő tanuló vagyok. Szeretek weboldalakat készíteni.</p> <p>Elérhetőség: anna@example.com</p>
A jelölés nem díszítés, hanem jelentés. Amikor azt írod,
<h1>, nem azt mondod, hogy „legyen nagy betű” — hanem azt, hogy
„ez az oldal főcíme”. Hogy ettől nagy lesz, az csak következmény. Ez a különbség
fontossá válik, amikor CSS-t írsz.
Mivel a szerver szöveget küld, ezt a szöveget bármikor megnézheted — bármelyik weboldalon a világon. Nincs titkolnivaló: ez a webes tanulás egyik legjobb eszköze.
| Billentyű | Mit csinál? |
|---|---|
| Ctrl + U | Megmutatja a nyers HTML-forrást, pontosan úgy, ahogy a szervertől érkezett. |
| F12 | Megnyitja a fejlesztői eszközöket — itt már az élő oldalt vizsgálod, és a CSS-t is látod. |
| Ctrl + Shift + C | Elemválasztó: rámutatsz valamire az oldalon, és megmutatja, melyik kódrészlet az. |
Nyiss meg egy kedvenc oldalt, és nyomj Ctrl+U-t. Ijesztően sok lesz benne —
ez normális, egy nagy oldal több ezer sor. De keresd meg benne a <title>
szót, vagy egy <img kezdetű részt. Ezeket a lecke végére már felismered.
A forrásban nincs benne a szerver kódja, az adatbázis vagy a jelszavak. Azok a szerveren maradnak. Csak azt látod, amit a szerver elküldött neked — ez pedig már csak a kész HTML.
Sokan „programozásnak” hívják a HTML-írást. Nem az — és ezt érdemes tisztázni, mert megkönnyíti a tanulást.
| A HTML… | …de nem |
|---|---|
| leírja, mi van az oldalon és milyen szerepben | nem számol, nem dönt, nem ismétel |
| fentről lefelé, sorban végrehajtódik | nincs benne if, for, változó, függvény |
| hibás kódnál is megpróbál valamit megjeleníteni | nem dob hibaüzenetet — némán furcsán fog kinézni |
Egy programozási nyelv szól, ha hibázol. A HTML nem szól. Ha lefelejtesz egy záró taget, a böngésző kitalál valamit, és megjelenít egy oldalt — csak épp nem azt, amit szerettél volna. Ezért tanulunk majd külön ellenőrzést és hibakeresést (25. lecke), és ezért lesz fontos a rendezett, behúzott kód.
Előbb válaszolj magadban (vagy írd le!), csak utána nézd meg a megoldást.
1. Mi a különbség a kliens és a szerver között?
A kliens a te böngésződ: ő kér és ő jelenít meg. A szerver egy másik gép, ami várja a kéréseket, és elküldi a kért fájlokat. A kliens kér, a szerver ad.
2. A szerver képet küld az oldalról, vagy szöveget?
Szöveget — egy HTML-fájlt. Hogy abból milyen lesz a látvány, azt a böngésző dönti el, a szövegben lévő jelölések alapján.
3. Melyik nyelv dolga, hogy egy gomb piros legyen? És hogy egyáltalán legyen ott gomb?
Hogy legyen ott gomb: HTML (szerkezet, tartalom). Hogy piros legyen: CSS (megjelenés). Hogy kattintásra történjen valami: JavaScript (viselkedés).
4. Leírsz három sort egymás alá egy HTML-fájlban, jelölés nélkül. Hány sorban jelenik meg?
Egyben — a böngésző az egymás utáni szóközöket és sortöréseket egyetlen szóközzé vonja össze. Ha külön sorokat akarsz, jelölni kell (például <p> bekezdésekkel).
5. Miért veszélyesebb egy HTML-hiba, mint egy programozási hiba?
Mert nem kapsz hibaüzenetet. A böngésző megpróbálja „megjavítani”, amit írtál, és megjelenít valamit. Így a hiba észrevétlen maradhat — csak az látszik, hogy furcsa az eredmény.
.html, .css, képek.