test proiect docker
This commit is contained in:
2
Dockerfile
Normal file
2
Dockerfile
Normal file
@@ -0,0 +1,2 @@
|
||||
FROM nginx
|
||||
COPY index.html /usr/share/nginx/html
|
||||
153
index.html
Normal file
153
index.html
Normal file
@@ -0,0 +1,153 @@
|
||||
<!doctype html>
|
||||
<html lang="ro">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
||||
<title>Weather — București, Ploiești, Timișoara, Cluj-Napoca, Iași, Călărași, Brașov, Constanța</title>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600;700&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1>Romania — City Weather at a Glance</h1>
|
||||
<p>Sample weather cards for București, Ploiești, Timișoara, Cluj-Napoca, Iași, Călărași, Brașov and Constanța. Images from Wikimedia Commons.</p>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<!-- Bucuresti -->
|
||||
<article class="card sunny">
|
||||
<img class="photo" src="https://upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Palatul_Parlamentului_Bucure%C8%99ti.jpg/800px-Palatul_Parlamentului_Bucure%C8%99ti.jpg" alt="Bucuresti" loading="lazy">
|
||||
<div class="card-body">
|
||||
<div class="city">
|
||||
<h2>București</h2>
|
||||
<div class="temp">24°C</div>
|
||||
</div>
|
||||
<div class="meta">
|
||||
<span class="badge">☀️ Sunny</span>
|
||||
<span>Humidity: 42%</span>
|
||||
<span>Wind: 8 km/h</span>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<!-- Ploiesti -->
|
||||
<article class="card partly-cloudy">
|
||||
<img class="photo" src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/5f/Ploie%C8%99ti_-_Palatul_de_Justi%C8%9Bie.jpg/800px-Ploie%C8%99ti_-_Palatul_de_Justi%C8%9Bie.jpg" alt="Ploiesti" loading="lazy">
|
||||
<div class="card-body">
|
||||
<div class="city">
|
||||
<h2>Ploiești</h2>
|
||||
<div class="temp">22°C</div>
|
||||
</div>
|
||||
<div class="meta">
|
||||
<span class="badge">⛅ Partly Cloudy</span>
|
||||
<span>Humidity: 48%</span>
|
||||
<span>Wind: 10 km/h</span>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<!-- Timisoara -->
|
||||
<article class="card light-rain">
|
||||
<img class="photo" src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Timi%C8%99oara_-_Piata_Unirii.jpg/800px-Timi%C8%99oara_-_Piata_Unirii.jpg" alt="Timisoara" loading="lazy">
|
||||
<div class="card-body">
|
||||
<div class="city">
|
||||
<h2>Timișoara</h2>
|
||||
<div class="temp">20°C</div>
|
||||
</div>
|
||||
<div class="meta">
|
||||
<span class="badge">🌧️ Light Rain</span>
|
||||
<span>Humidity: 66%</span>
|
||||
<span>Wind: 14 km/h</span>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<!-- Cluj-Napoca -->
|
||||
<article class="card mostly-cloudy">
|
||||
<img class="photo" src="https://upload.wikimedia.org/wikipedia/commons/thumb/8/8a/Cluj-Napoca_-_Piata_Unirii.jpg/800px-Cluj-Napoca_-_Piata_Unirii.jpg" alt="Cluj-Napoca" loading="lazy">
|
||||
<div class="card-body">
|
||||
<div class="city">
|
||||
<h2>Cluj-Napoca</h2>
|
||||
<div class="temp">18°C</div>
|
||||
</div>
|
||||
<div class="meta">
|
||||
<span class="badge">🌤️ Mostly Cloudy</span>
|
||||
<span>Humidity: 55%</span>
|
||||
<span>Wind: 11 km/h</span>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<!-- Iasi -->
|
||||
<article class="card overcast">
|
||||
<img class="photo" src="https://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Ia%C8%99i_-_Palatul_Culturii.jpg/800px-Ia%C8%99i_-_Palatul_Culturii.jpg" alt="Iasi" loading="lazy">
|
||||
<div class="card-body">
|
||||
<div class="city">
|
||||
<h2>Iași</h2>
|
||||
<div class="temp">17°C</div>
|
||||
</div>
|
||||
<div class="meta">
|
||||
<span class="badge">🌥️ Overcast</span>
|
||||
<span>Humidity: 60%</span>
|
||||
<span>Wind: 9 km/h</span>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<!-- Calarasi -->
|
||||
<article class="card cloudy">
|
||||
<img class="photo" src="https://upload.wikimedia.org/wikipedia/commons/thumb/9/9b/C%C4%83l%C4%83ra%C8%99i_-_Podul_Anghel_Saligny.jpg/800px-C%C4%83l%C4%83ra%C8%99i_-_Podul_Anghel_Saligny.jpg" alt="Calarasi" loading="lazy">
|
||||
<div class="card-body">
|
||||
<div class="city">
|
||||
<h2>Călărași</h2>
|
||||
<div class="temp">21°C</div>
|
||||
</div>
|
||||
<div class="meta">
|
||||
<span class="badge">☁️ Cloudy</span>
|
||||
<span>Humidity: 50%</span>
|
||||
<span>Wind: 12 km/h</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</article>
|
||||
|
||||
<!-- Brasov -->
|
||||
<article class="card partly-cloudy">
|
||||
<img class="photo" src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/5a/Bra%C8%99ov_-_Old_Town.jpg/800px-Bra%C8%99ov_-_Old_Town.jpg" alt="Brasov" loading="lazy">
|
||||
<div class="card-body">
|
||||
<div class="city">
|
||||
<h2>Brașov</h2>
|
||||
<div class="temp">19°C</div>
|
||||
</div>
|
||||
<div class="meta">
|
||||
<span class="badge">⛅ Partly Cloudy</span>
|
||||
<span>Humidity: 52%</span>
|
||||
<span>Wind: 7 km/h</span>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<!-- Constanta -->
|
||||
<article class="card sunny">
|
||||
<img class="photo" src="https://upload.wikimedia.org/wikipedia/commons/thumb/8/8e/Constan%C8%9Ba_-_Cazinoul.jpg/800px-Constan%C8%9Ba_-_Cazinoul.jpg" alt="Constanta" loading="lazy">
|
||||
<div class="card-body">
|
||||
<div class="city">
|
||||
<h2>Constanța</h2>
|
||||
<div class="temp">23°C</div>
|
||||
</div>
|
||||
<div class="meta">
|
||||
<span class="badge">☀️ Sunny</span>
|
||||
<span>Humidity: 45%</span>
|
||||
<span>Wind: 15 km/h</span>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
Images: Wikimedia Commons (iconic landmarks). To enable live weather, add an OpenWeatherMap API key and a small fetch script — ask me and I'll add it.
|
||||
</footer>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
24
style.css
Normal file
24
style.css
Normal file
@@ -0,0 +1,24 @@
|
||||
:root{--bg1:#0f172a;--bg2:#0b1220;--card:#0f1721;--accent:#6ee7b7;--muted:#94a3b8}
|
||||
*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,'Helvetica Neue',Arial;background:linear-gradient(180deg,var(--bg1),var(--bg2));color:#e6eef8;min-height:100vh;display:flex;flex-direction:column}
|
||||
header{padding:36px 20px;text-align:center}
|
||||
header h1{margin:0;font-size:clamp(20px,3vw,32px);letter-spacing:-0.5px}
|
||||
header p{margin:8px 0 0;color:var(--muted)}
|
||||
main{width:min(1200px,94%);margin:28px auto 60px;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px}
|
||||
.card{background:linear-gradient(180deg,rgba(255,255,255,0.02),rgba(255,255,255,0.01));border-radius:12px;overflow:hidden;box-shadow:0 6px 18px rgba(2,6,23,0.6);transition:transform .22s,box-shadow .22s}
|
||||
.card:hover{transform:translateY(-6px);box-shadow:0 14px 30px rgba(2,6,23,0.65)}
|
||||
.photo{width:100%;height:160px;object-fit:cover;display:block}
|
||||
.card-body{padding:14px}
|
||||
.city{display:flex;align-items:center;justify-content:space-between}
|
||||
.city h2{margin:0;font-size:18px}
|
||||
.temp{font-weight:700;color:var(--accent)}
|
||||
.meta{display:flex;gap:10px;margin-top:8px;color:var(--muted);font-size:13px}
|
||||
.meta span{display:inline-flex;align-items:center;gap:8px}
|
||||
.badge{background:rgba(255,255,255,0.03);padding:6px 10px;border-radius:999px;font-size:13px}
|
||||
footer{color:var(--muted);text-align:center;padding:20px 12px 36px;font-size:13px}
|
||||
.sunny{border-top:4px solid #ffd700}
|
||||
.partly-cloudy{border-top:4px solid #87ceeb}
|
||||
.light-rain{border-top:4px solid #4682b4}
|
||||
.mostly-cloudy{border-top:4px solid #778899}
|
||||
.overcast{border-top:4px solid #696969}
|
||||
.cloudy{border-top:4px solid #a9a9a9}
|
||||
@media (max-width:420px){.photo{height:140px}.card-body{padding:12px}}
|
||||
Reference in New Issue
Block a user