Naloga 1
Izdelali boste spletno stran, ki iz strežnika naloži seznam uporabnikov in jih prikaže v tabeli.
Če se vam vmes kdaj zatakne, je vsa koda na voljo na tem repozitoriju.
Navodila za izdelavo
Osnovna postavitev
-
Ustvarimo datoteke
index.html,style.cssinscript.js. -
Generiramo osnovno postavitev spletne strani (v VS Code pritisnemo
!inEnter).<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>Naloga 1</title> </head> <body></body> </html> -
V datoteko
index.htmlpovežemostyle.csstako, v<head>dodamo vrstico<link rel="stylesheet" href="style.css" /> -
Nato na enak način povežemo še
script.js:<script defer src="script.js"></script>
HTML
-
V
<body>spletne strani dodamo naslov<h1>in tabelo (<table>) z idjemid="users". -
Nato v tabelo dodamo še znački za glavo (
<thead>) in telo (<tbody>) tabele. -
Podatki, ki jih bomo prikazovali o uporabnikih so
id,ime,uporabniško imeinemail, zato v glavo tabele dodamo<th>za vsakega od njih. -
Zaženite
Live Serverali pa odpriteindex.htmlv brskalniku in spletna stran bi morala izgledati tako:
JavaScript
V script.js bomo napisali kodo, ki bo iz strežnika naložila seznam uporabnikov in jih dodala v html tabelo.
-
Ustvarimo novo asinhrono funkcijo
getUsers():async function getUsers() {}
Nalaganje podatkov s strežnika
-
Za nalaganje podatkov s strežnika uporablajmo vgrajeno funkcijo
fetch(). -
Beseda
awaitpočaka na odgovor s strežnika, medtem ko ostala koda na spletni strani še vedno teče. -
Naložimo podatke s strežnika in odgovor shranimo v konstanto
response:const response = await fetch('https://jsonplaceholder.typicode.com/users'); -
Odgovor dobimo v obliki JSONa (JavaScript Object Notation):
- Kvadratni oklepaji
[ ]predstavljajo seznam - Zaviti oklepaji
{ }predstavljajo objekt
[ { "id": 1, "name": "Leanne Graham", "username": "Bret", "email": "Sincere@april.biz" }, { "id": 2, "name": "Ervin Howell", "username": "Antonette", "email": "Shanna@melissa.tv" }, { "id": 3, "name": "Clementine Bauch", "username": "Samantha", "email": "Nathan@yesenia.net" }, ... ] - Kvadratni oklepaji
-
Pretvorimo JSON v JavaScript objekt s klicom funkcije
json()in ga shranimo v konstantousers:const users = await response.json(); -
userssedaj izgleda tako:const users = [ { id: 1, name: 'Leanne Graham', username: 'Bret', email: 'Sincere@april.biz', }, { id: 2, name: 'Ervin Howell', username: 'Antonette', email: 'Shanna@melissa.tv', }, { id: 3, name: 'Clementine Bauch', username: 'Samantha', email: 'Nathan@yesenia.net', }, ... ]; -
Vsebino spremenljivke lahko izpišete v konzolo z funkcijo
console.log(users); -
Do konzole dostopate:
Desni klik>inspect>console
Vstavljanje podatkov v tabelo
Sedaj ko imamo želene podatke v spremenljivki users, jih moramo vstaviti v tabelo.
-
Z zanko
forzaženemo kodo za vsakega uporabnika -
Spremenljivka
userse vsak krog spremeni na naslednjega v seznamuusersfor (const user of users) { // Vso nadalnjo kodo pišite sem notri } -
Da ustvarimo novo vrstico v tabeli uporabimo funkcijo
const row = document.createElement('tr'); -
Enaka stvar v html-ju:
<tr></tr> -
Nato dodamo vsebino z
innerHTML -
Da lahko besedilo napišemo v več vrstic, namesto navadnih narekovajev uporabimo backticke
`(AltGr + 7). -
Poleg tega lahko spremenljivke vstavljamo direktno v besedilo z
${spremenljivka}.row.innerHTML = ` <td>${user.id}</td> <td>${user.name}</td> <td>${user.username}</td> <td>${user.email}</td> `; -
Enaka stvar v html-ju:
<tr> <td>(vrednost user.id)</td> <td>(vrednost user.name)</td> <td>(vrednost user.username)</td> <td>(vrednost user.email)</td> </tr> -
Poiščemo telo tabele z idjem
users(to kodo dodamo čisto na vrhuscript.js):const table = document.querySelector('table#users > tbody'); -
Na koncu dodamo vrstico v
tbody:table.appendChild(row); -
Spletna stran bi sedaj morala izgledati tako:
CSS
-
Pojdite na spletno stran fonts.google.com in si izberite pisavo.
-
Kliknite nanjo in potem kliknite na
Select Regular 400 -
Kopirajte vrstico, ki se začne z
@import url('...');in jo prilepite na vrhstyle.css. -
Nato dodajte vrstico, ki se začne s
font-family: ...;v značkobody@import url('...'); body { font-family: ...; } -
Bodyju nastavite
marginna0in višino na100vh(100% višina zaslona) -
Sledi najtežja stvar v css-su - centriranje elementov na spletni strani
-
Eden on načinov, kako lahko to dosežemo je s pomočjo flexboxa (še vedno v znački body)
body { ... display: flex; // Nastavimo prikaz na flex flex-direction: column; // Elementi naj bojo v stolpcu - en nad drugim align-items: center; // Elemente centriramo levo-desno justify-content: center; // Elemente centriramo gor-dol } -
Celicam tabele dodamo obrobe (td - celice v telesu, th - celice v glavi) in
6pxprostora v vsebini celic#users td, th { border: 1px solid black; padding: 6px; } -
Nazadnje še centriramo id-je uporabnikov v prvem stolpcu in jih naredimo krepke
#users td:first-child { text-align: center; font-weight: bold; } -
Če spletna stran izgleda podobna tej na sliki, potem vam je uspelo


