Skip to content

Commit 0b89745

Browse files
Add "Change Mode" button functionality to Chess Game; update viewport meta tag and enhance responsive styles
1 parent 0a70f9a commit 0b89745

3 files changed

Lines changed: 111 additions & 1 deletion

File tree

33-Chess-Game/index.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<html lang="en" dir="ltr">
33
<head>
44
<meta charset="utf-8" />
5-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
66
<title>Talha - Chess Game</title>
77

88
<!-- 👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻-->
@@ -43,6 +43,7 @@ <h1>Chess</h1>
4343
<span class="turn-label" id="turnLabel">White to move</span>
4444
<span class="mode-badge" id="modeBadge">Vs Friend</span>
4545
<button type="button" id="newGameBtn" class="btn">New Game</button>
46+
<button type="button" id="changeModeBtn" class="btn btn-ghost">Change Mode</button>
4647
</div>
4748
</header>
4849

33-Chess-Game/script.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -578,6 +578,12 @@
578578
gameOverOverlay.classList.add("hidden");
579579
});
580580

581+
document.getElementById("changeModeBtn").addEventListener("click", () => {
582+
modeScreen.classList.remove("hidden");
583+
gameScreen.classList.add("hidden");
584+
gameOverOverlay.classList.add("hidden");
585+
});
586+
581587
document.getElementById("playAgainBtn").addEventListener("click", () => {
582588
modeScreen.classList.remove("hidden");
583589
gameScreen.classList.add("hidden");

33-Chess-Game/style.css

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,16 @@ body {
151151
background: var(--accent-hover);
152152
}
153153

154+
.btn-ghost {
155+
background: transparent;
156+
border: 1px solid rgba(255, 255, 255, 0.25);
157+
}
158+
159+
.btn-ghost:hover {
160+
background: rgba(255, 255, 255, 0.1);
161+
border-color: rgba(255, 255, 255, 0.4);
162+
}
163+
154164
.btn-large {
155165
padding: 0.75rem 1.5rem;
156166
font-size: 1rem;
@@ -297,12 +307,105 @@ body {
297307

298308
/* ----- Responsive ----- */
299309
@media (max-width: 520px) {
310+
.wrapper {
311+
padding: 0.75rem;
312+
}
313+
300314
.board {
301315
width: min(95vw, 360px);
302316
height: min(95vw, 360px);
317+
min-width: 280px;
318+
min-height: 280px;
303319
}
304320

305321
.square {
306322
font-size: clamp(1.25rem, 4.5vw, 2rem);
307323
}
324+
325+
.game-screen .header h1 {
326+
font-size: 1.25rem;
327+
}
328+
329+
.turn-label {
330+
font-size: 0.9rem;
331+
}
332+
333+
.btn,
334+
.btn-ghost {
335+
padding: 0.45rem 0.75rem;
336+
font-size: 0.85rem;
337+
}
338+
339+
.game-over-box {
340+
padding: 1.5rem;
341+
margin: 0.5rem;
342+
}
343+
344+
.game-over-box h2 {
345+
font-size: 1.25rem;
346+
}
347+
348+
.promotion-piece-btn {
349+
width: 44px;
350+
height: 44px;
351+
font-size: 1.75rem;
352+
}
353+
}
354+
355+
/* Very small phones & safe areas */
356+
@media (max-width: 380px) {
357+
.wrapper {
358+
padding: 0.5rem;
359+
padding-left: max(0.5rem, env(safe-area-inset-left));
360+
padding-right: max(0.5rem, env(safe-area-inset-right));
361+
padding-bottom: max(0.5rem, env(safe-area-inset-bottom));
362+
}
363+
364+
.mode-screen {
365+
padding: 1.25rem 0.5rem;
366+
}
367+
368+
.mode-screen h1 {
369+
font-size: 1.75rem;
370+
}
371+
372+
.mode-screen p {
373+
font-size: 0.9rem;
374+
margin-bottom: 1.5rem;
375+
}
376+
377+
.mode-btn {
378+
padding: 0.85rem 1rem;
379+
font-size: 1rem;
380+
}
381+
382+
.game-info {
383+
gap: 0.5rem;
384+
}
385+
386+
.mode-badge {
387+
font-size: 0.75rem;
388+
padding: 0.2rem 0.4rem;
389+
}
390+
391+
.board {
392+
width: min(100vw - 1rem, 320px);
393+
height: min(100vw - 1rem, 320px);
394+
min-width: 256px;
395+
min-height: 256px;
396+
}
397+
398+
.square {
399+
font-size: clamp(1rem, 3.5vw, 1.5rem);
400+
}
401+
}
402+
403+
/* Safe area for notched devices (all viewports) */
404+
@supports (padding: env(safe-area-inset-top)) {
405+
body {
406+
padding-top: env(safe-area-inset-top);
407+
padding-bottom: env(safe-area-inset-bottom);
408+
padding-left: env(safe-area-inset-left);
409+
padding-right: env(safe-area-inset-right);
410+
}
308411
}

0 commit comments

Comments
 (0)