feat(html, css, js): refactor HTML structure to improve semantics and accessibility, add header and footer to all pages, and enhance styling for better user experience
feat(js): implement utility functions for hiding and showing elements, and add event listeners for better interactivity feat(js): create a new roulette game in TP6 with random number generation and qualifying number logic fix(css): update styles for consistency and responsiveness across different screen sizes
This commit is contained in:
parent
f171492e15
commit
5ddb388348
88
TP3.html
88
TP3.html
@ -1,33 +1,67 @@
|
||||
<!doctype html>
|
||||
<head>
|
||||
<meta name="Acceuil">
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="static/style.css">
|
||||
<meta name="Acceuil" />
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="stylesheet" href="static/style.css" />
|
||||
<script src="static/js/utils.js" defer></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="main">
|
||||
<div id="game_selection">
|
||||
<button type="" onclick="setup_game_one()">Game 1 : You guess</button>
|
||||
<button type="" onclick="setup_game_two()">Game 2 : The computer guesses</button>
|
||||
<header>
|
||||
<div class="links">
|
||||
<a href="/" class="header_button">Home Page</a>
|
||||
<a href="projects.html" class="header_button">Projets</a>
|
||||
<a href="about.html" class="header_button">A propos de moi</a>
|
||||
<a href="surprise.html" class="header_button">Surprise :)</a>
|
||||
<a href="https://djalim.fr" class="header_button">Blog Perso</a>
|
||||
</div>
|
||||
<button id="display_header_links" onclick="toggle_all_header_links()">
|
||||
▼
|
||||
</button>
|
||||
</header>
|
||||
|
||||
<div id="main">
|
||||
<div id="game_selection">
|
||||
<button type="" onclick="setup_game_one()">
|
||||
Game 1 : You guess
|
||||
</button>
|
||||
<button type="" onclick="setup_game_two()">
|
||||
Game 2 : The computer guesses
|
||||
</button>
|
||||
</div>
|
||||
<div id="game_one" class="hidden">
|
||||
<h3>Which number am i thinking about ? :)</h3>
|
||||
<p id="message1"></p>
|
||||
<form action="javascript:;" onsubmit="process_guess()">
|
||||
<input type="text" id="player_input" placeholder="type here" />
|
||||
<button type="submit">Try guess</button>
|
||||
</form>
|
||||
<button type="button" onclick="setup_game_one()">Retry game</button>
|
||||
<button type="button" onclick="back()">
|
||||
Back to game selection
|
||||
</button>
|
||||
</div>
|
||||
<div id="game_two" class="hidden">
|
||||
<h3>Which number are you thinking about ? :)</h3>
|
||||
<p id="message2"></p>
|
||||
<button type="button" onclick="lower()"><u>L</u>ower</button>
|
||||
<button type="button" onclick="greater()"><u>G</u>reater</button>
|
||||
<button type="button" onclick="found()"><u>F</u>ound</button>
|
||||
<button type="button" onclick="setup_game_two()">
|
||||
<u>R</u>etry game
|
||||
</button>
|
||||
<button type="button" onclick="back()">
|
||||
Back to game selection
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="game_one" class="hidden">
|
||||
<h3> Which number am i thinking about ? :)</h3>
|
||||
<p id="message1"></p>
|
||||
<input type="text" id="player_input" placeholder="type here">
|
||||
<button type="button" onclick="process_guess()" >Try guess</button>
|
||||
<button type="button" onclick="setup_game_one()">Retry game</button>
|
||||
<button type="button" onclick="back()">Back to game selection</button>
|
||||
</div>
|
||||
<div id="game_two" class="hidden">
|
||||
<h3> Which number are you thinking about ? :)</h3>
|
||||
<p id="message2">is it big placeholder</p>
|
||||
<button type="button" onclick="lower()">Lower</button>
|
||||
<button type="button" onclick="greater()">Greater</button>
|
||||
<button type="button" onclick="found()">Found</button>
|
||||
<button type="button" onclick="setup_game_two()">Retry game</button>
|
||||
<button type="button" onclick="back()">Back to game selection</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
<p>
|
||||
Fait par Djalim Simaila et sa haine de l'HTML, CSS, mais pas du
|
||||
JavaScript ♥️
|
||||
</p>
|
||||
<p>©2025</p>
|
||||
</footer>
|
||||
</body>
|
||||
|
||||
|
||||
<script src="static/js/TP3.js" defer></script>
|
||||
<script src="static/js/TP3.js" defer></script>
|
||||
|
47
TP4.html
47
TP4.html
@ -1,16 +1,41 @@
|
||||
<!doctype html>
|
||||
<head>
|
||||
<meta name="Acceuil">
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="static/style.css">
|
||||
<meta name="Acceuil" />
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="stylesheet" href="static/style.css" />
|
||||
<script src="static/js/utils.js" defer></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="main">
|
||||
<div id="pokemon_team">
|
||||
<img id="pokemon_frame" src="" alt="">
|
||||
<p id="pokemon_name"></p>
|
||||
<p id="pokemon_desc"></p>
|
||||
<button type="button" onclick="chose_random_pokemon()">Check out a random pokemon</button>
|
||||
<header>
|
||||
<div class="links">
|
||||
<a href="/" class="header_button">Home Page</a>
|
||||
<a href="projects.html" class="header_button">Projets</a>
|
||||
<a href="about.html" class="header_button">A propos de moi</a>
|
||||
<a href="surprise.html" class="header_button">Surprise :)</a>
|
||||
<a href="https://djalim.fr" class="header_button">Blog Perso</a>
|
||||
</div>
|
||||
<button id="display_header_links" onclick="toggle_all_header_links()">
|
||||
▼
|
||||
</button>
|
||||
</header>
|
||||
|
||||
<div id="main">
|
||||
<div id="pokemon_team">
|
||||
<img id="pokemon_frame" src="" alt="" />
|
||||
<p id="pokemon_name"></p>
|
||||
<p id="pokemon_desc"></p>
|
||||
<button type="button" onclick="chose_random_pokemon()">
|
||||
Check out a random pokemon
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="static/js/TP4.js" defer></script>
|
||||
|
||||
<footer>
|
||||
<p>
|
||||
Fait par Djalim Simaila et sa haine de l'HTML, CSS, mais pas du
|
||||
JavaScript ♥️
|
||||
</p>
|
||||
<p>©2025</p>
|
||||
</footer>
|
||||
<script src="static/js/TP4.js" defer></script>
|
||||
</body>
|
||||
|
79
TP5.html
79
TP5.html
@ -1,27 +1,62 @@
|
||||
<!doctype html>
|
||||
<head>
|
||||
<meta name="Acceuil">
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="static/style.css">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css">
|
||||
<meta name="Acceuil" />
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="stylesheet" href="static/style.css" />
|
||||
<script src="static/js/utils.js" defer></script>
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css"
|
||||
/>
|
||||
</head>
|
||||
<body onload="restoreList()">
|
||||
<i class="fa-solid fa-trash"></i>
|
||||
<div id="main">
|
||||
<header>
|
||||
<div class="links">
|
||||
<a href="/" class="header_button">Home Page</a>
|
||||
<a href="projects.html" class="header_button">Projets</a>
|
||||
<a href="about.html" class="header_button">A propos de moi</a>
|
||||
<a href="surprise.html" class="header_button">Surprise :)</a>
|
||||
<a href="https://djalim.fr" class="header_button">Blog Perso</a>
|
||||
</div>
|
||||
<button id="display_header_links" onclick="toggle_all_header_links()">
|
||||
▼
|
||||
</button>
|
||||
</header>
|
||||
|
||||
<h1>Grocery list</h1>
|
||||
<div>
|
||||
<button id="clear_button" type="button" onclick="clear_input()"><i class="bi bi-eraser"></i></button>
|
||||
<input type="text" id="new_item_input" placeholder="A new pair of Jordans">
|
||||
<input type="number" id="new_item_quantity" value="1" min="0">
|
||||
<select id="new_item_unit">
|
||||
<option value="unit">unit</option>
|
||||
<option value="L">L</option>
|
||||
<option value="KG">KG</option>
|
||||
</select>
|
||||
</div>
|
||||
<div id="grocery_list">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form
|
||||
action="javascript:;"
|
||||
onsubmit="addNewItemToList()"
|
||||
onreset="clear_input()"
|
||||
>
|
||||
<button id="clear_button" type="reset">
|
||||
<i class="bi bi-eraser"></i>
|
||||
</button>
|
||||
<input
|
||||
type="text"
|
||||
id="new_item_input"
|
||||
placeholder="A new pair of Jordans"
|
||||
/>
|
||||
<input type="number" id="new_item_quantity" value="1" min="0" />
|
||||
<select id="new_item_unit">
|
||||
<option value="unit">unit</option>
|
||||
<option value="L">L</option>
|
||||
<option value="KG">KG</option>
|
||||
</select>
|
||||
<button type="submit">
|
||||
<i class="bi bi-plus"></i>
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<div id="grocery_list"></div>
|
||||
|
||||
<footer>
|
||||
<p>
|
||||
Fait par Djalim Simaila et sa haine de l'HTML, CSS, mais pas du
|
||||
JavaScript ♥️
|
||||
</p>
|
||||
<p>©2025</p>
|
||||
</footer>
|
||||
</body>
|
||||
|
||||
|
||||
<script src="static/js/TP5.js" defer></script>
|
||||
<script src="static/js/TP5.js" defer></script>
|
||||
|
49
TP6.html
Normal file
49
TP6.html
Normal file
@ -0,0 +1,49 @@
|
||||
<!doctype html>
|
||||
<head>
|
||||
<meta name="Acceuil" />
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="stylesheet" href="static/style.css" />
|
||||
<script src="static/js/utils.js" defer></script>
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css"
|
||||
/>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<div class="links">
|
||||
<a href="/" class="header_button">Home Page</a>
|
||||
<a href="projects.html" class="header_button">Projets</a>
|
||||
<a href="about.html" class="header_button">A propos de moi</a>
|
||||
<a href="surprise.html" class="header_button">Surprise :)</a>
|
||||
<a href="https://djalim.fr" class="header_button">Blog Perso</a>
|
||||
</div>
|
||||
<button id="display_header_links" onclick="toggle_all_header_links()">
|
||||
▼
|
||||
</button>
|
||||
</header>
|
||||
<div id="setupGame">
|
||||
<p>how many spins do you want to simulate</p>
|
||||
<input
|
||||
id="maxSpinInput"
|
||||
type="number"
|
||||
max="1000000"
|
||||
min="1"
|
||||
value="10000"
|
||||
/>
|
||||
<button type="" onclick="setupGame()">Start Spins</button>
|
||||
</div>
|
||||
<div id="currentSpin">
|
||||
<h3>Current Spin</h3>
|
||||
<p></p>
|
||||
</div>
|
||||
<div id="lastSpins"></div>
|
||||
<footer>
|
||||
<p>
|
||||
Fait par Djalim Simaila et sa haine de l'HTML, CSS, mais pas du
|
||||
JavaScript ♥️
|
||||
</p>
|
||||
<p>©2025</p>
|
||||
</footer>
|
||||
</body>
|
||||
<script src="static/js/TP6.js" defer></script>
|
94
index.html
94
index.html
@ -1,35 +1,75 @@
|
||||
<!doctype html>
|
||||
<head>
|
||||
<meta name="Acceuil">
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="static/style.css">
|
||||
<meta name="Acceuil" />
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="stylesheet" href="static/style.css" />
|
||||
<script src="static/js/utils.js" defer></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<div id=menubar>
|
||||
<a href="" class="title_button"> Home Page </a>
|
||||
<a href="projects.html" class="title_button"> Projets </a>
|
||||
<a href="about.html" class="title_button"> A propos de moi </a>
|
||||
<a href="surprise.html" class="title_button"> Surprise :) </a>
|
||||
<a href="https://djalim.fr" class="title_button"> Blog Perso </a>
|
||||
</div>
|
||||
<header>
|
||||
<div class="links">
|
||||
<a href="/" class="header_button">Home Page</a>
|
||||
<a href="projects.html" class="header_button">Projets</a>
|
||||
<a href="about.html" class="header_button">A propos de moi</a>
|
||||
<a href="surprise.html" class="header_button">Surprise :)</a>
|
||||
<a href="https://djalim.fr" class="header_button">Blog Perso</a>
|
||||
</div>
|
||||
<button id="display_header_links" onclick="toggle_all_header_links()">
|
||||
▼
|
||||
</button>
|
||||
</header>
|
||||
|
||||
<div id="title">
|
||||
<h1>I love commiting war crimes :)</h1>
|
||||
<h1>I love commiting war crimes :)</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="content">
|
||||
<p>
|
||||
Qu'est-ce que le Lorem Ipsum?
|
||||
|
||||
Le Lorem Ipsum est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte. Il n'a pas fait que survivre cinq siècles, mais s'est aussi adapté à la bureautique informatique, sans que son contenu n'en soit modifié. Il a été popularisé dans les années 1960 grâce à la vente de feuilles Letraset contenant des passages du Lorem Ipsum, et, plus récemment, par son inclusion dans des applications de mise en page de texte, comme Aldus PageMaker.
|
||||
Pourquoi l'utiliser?
|
||||
<div id="content">
|
||||
<p>
|
||||
Qu'est-ce que le Lorem Ipsum? Le Lorem Ipsum est simplement du faux
|
||||
texte employé dans la composition et la mise en page avant
|
||||
impression. Le Lorem Ipsum est le faux texte standard de
|
||||
l'imprimerie depuis les années 1500, quand un imprimeur anonyme
|
||||
assembla ensemble des morceaux de texte pour réaliser un livre
|
||||
spécimen de polices de texte. Il n'a pas fait que survivre cinq
|
||||
siècles, mais s'est aussi adapté à la bureautique informatique, sans
|
||||
que son contenu n'en soit modifié. Il a été popularisé dans les
|
||||
années 1960 grâce à la vente de feuilles Letraset contenant des
|
||||
passages du Lorem Ipsum, et, plus récemment, par son inclusion dans
|
||||
des applications de mise en page de texte, comme Aldus PageMaker.
|
||||
Pourquoi l'utiliser? On sait depuis longtemps que travailler avec du
|
||||
texte lisible et contenant du sens est source de distractions, et
|
||||
empêche de se concentrer sur la mise en page elle-même. L'avantage
|
||||
du Lorem Ipsum sur un texte générique comme 'Du texte. Du texte. Du
|
||||
texte.' est qu'il possède une distribution de lettres plus ou moins
|
||||
normale, et en tout cas comparable avec celle du français standard.
|
||||
De nombreuses suites logicielles de mise en page ou éditeurs de
|
||||
sites Web ont fait du Lorem Ipsum leur faux texte par défaut, et une
|
||||
recherche pour 'Lorem Ipsum' vous conduira vers de nombreux sites
|
||||
qui n'en sont encore qu'à leur phase de construction. Plusieurs
|
||||
versions sont apparues avec le temps, parfois par accident, souvent
|
||||
intentionnellement (histoire d'y rajouter de petits clins d'oeil,
|
||||
voire des phrases embarassantes). D'où vient-il? Contrairement à une
|
||||
opinion répandue, le Lorem Ipsum n'est pas simplement du texte
|
||||
aléatoire. Il trouve ses racines dans une oeuvre de la littérature
|
||||
latine classique datant de 45 av. J.-C., le rendant vieux de 2000
|
||||
ans. Un professeur du Hampden-Sydney College, en Virginie, s'est
|
||||
intéressé à un des mots latins les plus obscurs, consectetur,
|
||||
extrait d'un passage du Lorem Ipsum, et en étudiant tous les usages
|
||||
de ce mot dans la littérature classique, découvrit la source
|
||||
incontestable du Lorem Ipsum. Il provient en fait des sections
|
||||
1.10.32 et 1.10.33 du "De Finibus Bonorum et Malorum" (Des Suprêmes
|
||||
Biens et des Suprêmes Maux) de Cicéron. Cet ouvrage, très populaire
|
||||
pendant la Renaissance, est un traité sur la théorie de l'éthique.
|
||||
Les premières lignes du Lorem Ipsum, "Lorem ipsum dolor sit
|
||||
amet...", proviennent de la section
|
||||
</p>
|
||||
</div>
|
||||
|
||||
On sait depuis longtemps que travailler avec du texte lisible et contenant du sens est source de distractions, et empêche de se concentrer sur la mise en page elle-même. L'avantage du Lorem Ipsum sur un texte générique comme 'Du texte. Du texte. Du texte.' est qu'il possède une distribution de lettres plus ou moins normale, et en tout cas comparable avec celle du français standard. De nombreuses suites logicielles de mise en page ou éditeurs de sites Web ont fait du Lorem Ipsum leur faux texte par défaut, et une recherche pour 'Lorem Ipsum' vous conduira vers de nombreux sites qui n'en sont encore qu'à leur phase de construction. Plusieurs versions sont apparues avec le temps, parfois par accident, souvent intentionnellement (histoire d'y rajouter de petits clins d'oeil, voire des phrases embarassantes).
|
||||
|
||||
D'où vient-il?
|
||||
|
||||
Contrairement à une opinion répandue, le Lorem Ipsum n'est pas simplement du texte aléatoire. Il trouve ses racines dans une oeuvre de la littérature latine classique datant de 45 av. J.-C., le rendant vieux de 2000 ans. Un professeur du Hampden-Sydney College, en Virginie, s'est intéressé à un des mots latins les plus obscurs, consectetur, extrait d'un passage du Lorem Ipsum, et en étudiant tous les usages de ce mot dans la littérature classique, découvrit la source incontestable du Lorem Ipsum. Il provient en fait des sections 1.10.32 et 1.10.33 du "De Finibus Bonorum et Malorum" (Des Suprêmes Biens et des Suprêmes Maux) de Cicéron. Cet ouvrage, très populaire pendant la Renaissance, est un traité sur la théorie de l'éthique. Les premières lignes du Lorem Ipsum, "Lorem ipsum dolor sit amet...", proviennent de la section
|
||||
</p>
|
||||
</div>
|
||||
<footer>
|
||||
<p>
|
||||
Fait par Djalim Simaila et sa haine de l'HTML, CSS, mais pas du
|
||||
JavaScript ♥️
|
||||
</p>
|
||||
<p>©2025</p>
|
||||
</footer>
|
||||
</body>
|
||||
|
||||
|
@ -1,29 +1,56 @@
|
||||
<!doctype html>
|
||||
<head>
|
||||
<meta name="Acceuil">
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="static/style.css">
|
||||
<meta name="Acceuil" />
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="stylesheet" href="static/style.css" />
|
||||
<script src="static/js/utils.js" defer></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<div id=menubar>
|
||||
<a href="" class="title_button"> Home Page </a>
|
||||
<a href="projects.html" class="title_button"> Projets </a>
|
||||
<a href="about.html" class="title_button"> A propos de moi </a>
|
||||
<a href="surprise.html" class="title_button"> Surprise :) </a>
|
||||
<a href="https://djalim.fr" class="title_button"> Blog Perso </a>
|
||||
</div>
|
||||
<div id="title">
|
||||
<h1>Mes projets</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="content">
|
||||
<div class="project_box">
|
||||
<img class="project_box_thumbnail" src="static/assets/images/Da_fookin_owl-1.png" alt="placeholder">
|
||||
<p class="project_box_summary">
|
||||
Le Lorem Ipsum est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte. Il n'a pas fait que survivre cinq siècles, mais s'est aussi adapté à la bureautique informatique, sans que son contenu n'en soit modifié. Il a été popularisé dans les années 1960 grâce à la vente de feuilles Letraset contenant des passages du Lorem Ipsum, et, plus récemment, par son inclusion dans des applications de mise en page de texte, comme Aldus PageMaker
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
<header>
|
||||
<div class="links">
|
||||
<a href="/" class="header_button">Home Page</a>
|
||||
<a href="projects.html" class="header_button">Projets</a>
|
||||
<a href="about.html" class="header_button">A propos de moi</a>
|
||||
<a href="surprise.html" class="header_button">Surprise :)</a>
|
||||
<a href="https://djalim.fr" class="header_button">Blog Perso</a>
|
||||
</div>
|
||||
<button id="display_header_links" onclick="toggle_all_header_links()">
|
||||
▼
|
||||
</button>
|
||||
</header>
|
||||
|
||||
<div id="title">
|
||||
<h1>Mes projets</h1>
|
||||
</div>
|
||||
|
||||
<div id="content">
|
||||
<div class="project_box">
|
||||
<img
|
||||
class="project_box_thumbnail"
|
||||
src="static/assets/images/Da_fookin_owl-1.png"
|
||||
alt="placeholder"
|
||||
/>
|
||||
<p class="project_box_summary">
|
||||
Le Lorem Ipsum est simplement du faux texte employé dans la
|
||||
composition et la mise en page avant impression. Le Lorem Ipsum
|
||||
est le faux texte standard de l'imprimerie depuis les années
|
||||
1500, quand un imprimeur anonyme assembla ensemble des morceaux
|
||||
de texte pour réaliser un livre spécimen de polices de texte. Il
|
||||
n'a pas fait que survivre cinq siècles, mais s'est aussi adapté
|
||||
à la bureautique informatique, sans que son contenu n'en soit
|
||||
modifié. Il a été popularisé dans les années 1960 grâce à la
|
||||
vente de feuilles Letraset contenant des passages du Lorem
|
||||
Ipsum, et, plus récemment, par son inclusion dans des
|
||||
applications de mise en page de texte, comme Aldus PageMaker
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
<p>
|
||||
Fait par Djalim Simaila et sa haine de l'HTML, CSS, mais pas du
|
||||
JavaScript ♥️
|
||||
</p>
|
||||
<p>©2025</p>
|
||||
</footer>
|
||||
</body>
|
||||
|
145
static/js/TP3.js
145
static/js/TP3.js
@ -5,90 +5,135 @@ var guessedNumber;
|
||||
var minimum;
|
||||
var maximum;
|
||||
|
||||
|
||||
function hide(element){
|
||||
element.classList.add("hidden")
|
||||
}
|
||||
function unhide(element){
|
||||
element.classList.remove("hidden")
|
||||
}
|
||||
|
||||
|
||||
function showText(element, text){
|
||||
console.log(element);
|
||||
console.log(text);
|
||||
function showText(element, text) {
|
||||
element.textContent = text;
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents a book.
|
||||
* @constructor
|
||||
* @param {string} title - The title of the book.
|
||||
* @param {string} author - The author of the book.
|
||||
* Return a randon between min and max.
|
||||
* @param {number} min - The minimum value of the random number.
|
||||
* @param {number} max - The maximum value of the random number.
|
||||
* @return {number}
|
||||
*/
|
||||
function randint(min,max) {
|
||||
function randint(min, max) {
|
||||
return Math.floor(Math.random() * (max - min + 1) + min);
|
||||
}
|
||||
|
||||
function back(){
|
||||
/**
|
||||
* Returns to the previous state
|
||||
* @return {void}
|
||||
*/
|
||||
function back() {
|
||||
unhide(document.getElementById("game_selection"));
|
||||
hide(document.getElementById("game_one"));
|
||||
hide(document.getElementById("game_two"));
|
||||
document.removeEventListener("keydown", process_keydown);
|
||||
}
|
||||
|
||||
|
||||
function setup_game_one(){
|
||||
hide(document.getElementById("game_selection"))
|
||||
/**
|
||||
* This function shows the first game
|
||||
* @return {void}
|
||||
*/
|
||||
function setup_game_one() {
|
||||
hide(document.getElementById("game_selection"));
|
||||
unhide(document.getElementById("game_one"));
|
||||
numberToGuess = randint(1,100);
|
||||
console.log(numberToGuess)
|
||||
showText(document.getElementById("message1"),"")
|
||||
numberToGuess = randint(1, 100);
|
||||
console.log(numberToGuess);
|
||||
showText(document.getElementById("message1"), "");
|
||||
document.getElementById("player_input").value = "";
|
||||
}
|
||||
|
||||
function process_guess(){
|
||||
console.log("processing");
|
||||
let guessedNumber = parseInt(document.getElementById("player_input").value);
|
||||
/**
|
||||
* This function is responsible for processing the player's guess in game one.
|
||||
* It retrieves the player's input, validates it, and compares it to the number to guess.
|
||||
* It also provides feedback to the player based on their guess
|
||||
* @return {void}
|
||||
*/
|
||||
function process_guess() {
|
||||
let player_input = document.getElementById("player_input");
|
||||
let guessedNumber = parseInt(player_input.value);
|
||||
player_input.value = "";
|
||||
let message_box = document.getElementById("message1");
|
||||
if (isNaN(guessedNumber)){
|
||||
showText(message_box,"Not a valid number, Try again");
|
||||
if (isNaN(guessedNumber)) {
|
||||
showText(message_box, "Not a valid number, Try again");
|
||||
}
|
||||
if (guessedNumber > numberToGuess) {
|
||||
showText(message_box,"Nop, Too high, try again");
|
||||
showText(message_box, "Nop, " + guessedNumber + " is too high, try again");
|
||||
}
|
||||
if (guessedNumber < numberToGuess) {
|
||||
showText(message_box,"Nop, Too low, try again");
|
||||
showText(message_box, "Nop, " + guessedNumber + " is too low, try again");
|
||||
}
|
||||
if (guessedNumber === numberToGuess) {
|
||||
showText(message_box,"You found it well played");
|
||||
showText(message_box, "You found it well played");
|
||||
}
|
||||
console.log("done processing");
|
||||
}
|
||||
///
|
||||
function pick_number(smart=false){
|
||||
if(smart) return Math.floor((minimum+maximum)/2);
|
||||
return randint(minimum,maximum);
|
||||
}
|
||||
|
||||
function setup_game_two(){
|
||||
hide(document.getElementById("game_selection"))
|
||||
/**
|
||||
* This function tries to predict the player's number
|
||||
* @param {bool} smart - use dichotomic search for guessing
|
||||
* @returns {number} - the predicted number
|
||||
*/
|
||||
function pick_number(smart = false) {
|
||||
if (smart) return Math.floor((minimum + maximum) / 2);
|
||||
return randint(minimum, maximum);
|
||||
}
|
||||
|
||||
/**
|
||||
* Processes the keydown events for game two to handle player input (lower, greater, found, retry).
|
||||
* @param {KeyboardEvent} event - The keyboard event object.
|
||||
* @return {void}
|
||||
*/
|
||||
function process_keydown(event) {
|
||||
switch (event.key) {
|
||||
case "L":
|
||||
case "l":
|
||||
lower();
|
||||
break;
|
||||
case "G":
|
||||
case "g":
|
||||
greater();
|
||||
break;
|
||||
case "F":
|
||||
case "f":
|
||||
found();
|
||||
break;
|
||||
case "R":
|
||||
case "r":
|
||||
document.removeEventListener("keydown", process_keydown);
|
||||
setup_game_two();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function setup_game_two() {
|
||||
hide(document.getElementById("game_selection"));
|
||||
unhide(document.getElementById("game_two"));
|
||||
minimum = 1;
|
||||
maximum = 100;
|
||||
guessedNumber = pick_number()
|
||||
showText(document.getElementById("message2"),"is it "+guessedNumber+" ?")
|
||||
guessedNumber = pick_number();
|
||||
showText(
|
||||
document.getElementById("message2"),
|
||||
"is it " + guessedNumber + " ?",
|
||||
);
|
||||
document.addEventListener("keydown", process_keydown);
|
||||
}
|
||||
|
||||
function lower(){
|
||||
function lower() {
|
||||
maximum = guessedNumber - 1;
|
||||
guessedNumber = pick_number()
|
||||
showText(document.getElementById("message2"),"is it "+guessedNumber+" ?")
|
||||
guessedNumber = pick_number();
|
||||
showText(
|
||||
document.getElementById("message2"),
|
||||
"is it " + guessedNumber + " ?",
|
||||
);
|
||||
}
|
||||
function greater(){
|
||||
function greater() {
|
||||
minimum = guessedNumber + 1;
|
||||
guessedNumber = pick_number()
|
||||
showText(document.getElementById("message2"),"is it "+guessedNumber+" ?")
|
||||
guessedNumber = pick_number();
|
||||
showText(
|
||||
document.getElementById("message2"),
|
||||
"is it " + guessedNumber + " ?",
|
||||
);
|
||||
}
|
||||
function found(){
|
||||
showText(document.getElementById("message2"),"yay i found it")
|
||||
function found() {
|
||||
showText(document.getElementById("message2"), "yay i found it");
|
||||
}
|
||||
|
@ -1,15 +1,25 @@
|
||||
var grocery_array = []
|
||||
var grocery_array = [];
|
||||
|
||||
function clear_input(){
|
||||
document.getElementById("new_item_input").value = "";
|
||||
/*
|
||||
* This function will return a random number
|
||||
* param min : minimum limit of the range (inclusive)
|
||||
* param max: maximum limit of the range (inclusive).
|
||||
* returns : Random integer within specified limits.
|
||||
*/
|
||||
function randint(min, max) {
|
||||
return Math.floor(Math.random() * (max - min + 1)) + min;
|
||||
}
|
||||
|
||||
function addItemToList(item){
|
||||
grocery_array.push(item)
|
||||
localStorage.setItem("grocery_list",JSON.stringify(grocery_array))
|
||||
function clear_input() {
|
||||
document.getElementById("new_item_input").value = "";
|
||||
}
|
||||
|
||||
function addItemToList(item) {
|
||||
grocery_array.push(item);
|
||||
localStorage.setItem("grocery_list", JSON.stringify(grocery_array));
|
||||
|
||||
let item_box = document.createElement("div");
|
||||
item_box.classList.add("grocery_item")
|
||||
item_box.classList.add("grocery_item");
|
||||
|
||||
let item_name_container = document.createElement("span");
|
||||
item_name_container.classList.add("grocery_item_name");
|
||||
@ -17,67 +27,63 @@ function addItemToList(item){
|
||||
item_name_container.textContent = item;
|
||||
|
||||
let item_button = document.createElement("button");
|
||||
item_button.innerHTML = "<i class='bi bi-trash'></i>"
|
||||
item_button.onclick = (ev) =>{
|
||||
let parent_div = ev.target.parentElement.closest('div');
|
||||
item_button.innerHTML = "<i class='bi bi-trash'></i>";
|
||||
item_button.onclick = (ev) => {
|
||||
let parent_div = ev.target.parentElement.closest("div");
|
||||
let item_name;
|
||||
var children = parent_div.childNodes;
|
||||
for (var i=0; i < children.length; i++) {
|
||||
for (var i = 0; i < children.length; i++) {
|
||||
console.log(children[i]);
|
||||
if (children[i].tagName == "SPAN") {
|
||||
item_name = children[i].textContent;
|
||||
break;
|
||||
}
|
||||
}
|
||||
grocery_array = grocery_array.filter((value) => value != item_name );
|
||||
localStorage.setItem("grocery_list",JSON.stringify(grocery_array))
|
||||
grocery_array = grocery_array.filter((value) => value != item_name);
|
||||
localStorage.setItem("grocery_list", JSON.stringify(grocery_array));
|
||||
parent_div.remove();
|
||||
}
|
||||
};
|
||||
|
||||
item_box.appendChild(item_button);
|
||||
item_box.appendChild(item_name_container);
|
||||
|
||||
|
||||
document.getElementById("grocery_list").appendChild(item_box);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function addNewItemToList(){
|
||||
let input = document.getElementById("new_item_input")
|
||||
function addNewItemToList() {
|
||||
let input = document.getElementById("new_item_input");
|
||||
if (input.value === "") return;
|
||||
let item = input.value;
|
||||
input.value = "";
|
||||
|
||||
// quantity
|
||||
let quantity = document.getElementById("new_item_quantity").value
|
||||
let quantity = document.getElementById("new_item_quantity").value;
|
||||
|
||||
// unit
|
||||
let e = document.getElementById("new_item_unit");
|
||||
let text = e.options[e.selectedIndex].text;
|
||||
|
||||
switch(text){
|
||||
case 'L':
|
||||
item = ""+ quantity + (quantity == 1 ? " liter of ":" liters of ") + item;
|
||||
switch (text) {
|
||||
case "L":
|
||||
item =
|
||||
"" + quantity + (quantity == 1 ? " liter of " : " liters of ") + item;
|
||||
break;
|
||||
case 'KG':
|
||||
item = ""+ quantity + (quantity == 1 ? " kilogram of":" kilograms of ") + item;
|
||||
case "KG":
|
||||
item =
|
||||
"" +
|
||||
quantity +
|
||||
(quantity == 1 ? " kilogram of" : " kilograms of ") +
|
||||
item;
|
||||
break;
|
||||
default:
|
||||
item = "" + quantity + " " + item;
|
||||
}
|
||||
|
||||
addItemToList(item)
|
||||
addItemToList(item);
|
||||
}
|
||||
|
||||
|
||||
function restoreList(){
|
||||
JSON.parse(localStorage.getItem("grocery_list")).forEach(element => {
|
||||
function restoreList() {
|
||||
JSON.parse(localStorage.getItem("grocery_list")).forEach((element) => {
|
||||
addItemToList(element);
|
||||
});
|
||||
}
|
||||
|
||||
document.addEventListener('keydown', function(event) {
|
||||
if (event.key === 'Enter') {
|
||||
addNewItemToList();
|
||||
}
|
||||
});
|
||||
|
164
static/js/TP6.js
Normal file
164
static/js/TP6.js
Normal file
@ -0,0 +1,164 @@
|
||||
/*
|
||||
* TP6: Roulette
|
||||
* Author: SIMAILA Djalim
|
||||
* Date: 2025-01-27
|
||||
* Description: A roulette game
|
||||
* Version: 1.0
|
||||
*/
|
||||
|
||||
/*
|
||||
* The amount of money of a bet
|
||||
* @type {Number}
|
||||
* @example 1
|
||||
*/
|
||||
var bet = 1;
|
||||
|
||||
var currentSpin = 0;
|
||||
|
||||
/*
|
||||
* Array of the n next spins
|
||||
* @type {Array}
|
||||
* @example [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
||||
*/
|
||||
var spinArray;
|
||||
|
||||
var potentialQualifyingNumbers = [];
|
||||
|
||||
/*
|
||||
* Object containing the qualifying numbers , and the remaining spins in which they are played
|
||||
* @type {Object}
|
||||
* @example {10: 3, 15: 5, 20: 1}
|
||||
*/
|
||||
var qualifyingNumbers = {};
|
||||
|
||||
/**
|
||||
* Array containing the wining numbers , and the winning amount
|
||||
* @type {Array}
|
||||
* @example [[10, 5], [15, 10], [20, 15]]
|
||||
*/
|
||||
var winingNumbers = [];
|
||||
|
||||
/**
|
||||
* Array containing the qualifying number that didn't win
|
||||
* @type {Array}
|
||||
* @example [10,15,20]
|
||||
*/
|
||||
var losingNumbers = [];
|
||||
|
||||
var spinInterval;
|
||||
|
||||
function lowerBound() {
|
||||
return currentSpin - 30 < 0 ? 0 : currentSpin - 30;
|
||||
}
|
||||
|
||||
/*
|
||||
* Function to generate a random array of numbers
|
||||
* @param len: length of the number array
|
||||
* @returns {Array} numberArray
|
||||
*/
|
||||
function generate_random_array(len = 30) {
|
||||
let numberArray = [];
|
||||
for (let i = 0; i < len; i++)
|
||||
numberArray.push(Math.floor(Math.random() * 37));
|
||||
return numberArray;
|
||||
}
|
||||
|
||||
/*
|
||||
* Function to check if a number is qualifying
|
||||
* @param num: number to check
|
||||
* @returns {Boolean} true if the number is qualifying, false otherwise
|
||||
*/
|
||||
function qualifyingPreprocess() {
|
||||
let currentNumber = spinArray[currentSpin];
|
||||
if (!spinArray.slice(lowerBound(), currentSpin).includes(currentNumber)) {
|
||||
potentialQualifyingNumbers.push({
|
||||
number: currentNumber,
|
||||
firstOccurence: currentSpin,
|
||||
secondOccurence: null,
|
||||
thirdOccurence: null,
|
||||
});
|
||||
}
|
||||
potentialQualifyingNumbers = potentialQualifyingNumbers.filter(
|
||||
(potientialNumber) => currentSpin - potientialNumber.firstOccurence < 18,
|
||||
);
|
||||
|
||||
let qualifiedIndexes = new Set();
|
||||
|
||||
potentialQualifyingNumbers.forEach((potentialNumber, index) => {
|
||||
if (potentialNumber.number == currentNumber) {
|
||||
if (potentialNumber.firstOccurence == currentSpin) return;
|
||||
|
||||
if (potentialNumber.secondOccurence == null)
|
||||
potentialNumber.secondOccurence = currentSpin;
|
||||
else if (potentialNumber.thirdOccurence == null)
|
||||
potentialNumber.thirdOccurence = currentSpin;
|
||||
}
|
||||
if (
|
||||
potentialNumber.secondOccurence != null &&
|
||||
potentialNumber.thirdOccurence != null
|
||||
) {
|
||||
let space1 =
|
||||
potentialNumber.secondOccurence - potentialNumber.firstOccurence;
|
||||
let space2 =
|
||||
potentialNumber.thirdOccurence - potentialNumber.secondOccurence;
|
||||
if (Math.abs(space2 - space1) <= 6) {
|
||||
if (
|
||||
spinArray[currentSpin] !== spinArray[currentSpin - 1] &&
|
||||
spinArray[currentSpin] !== spinArray[currentSpin - 2]
|
||||
) {
|
||||
qualifyingNumbers[potentialNumber.number] = 9;
|
||||
qualifiedIndexes.add(index);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
potentialQualifyingNumbers = potentialQualifyingNumbers.filter(
|
||||
(_, index) => !qualifiedIndexes.has(index),
|
||||
);
|
||||
}
|
||||
|
||||
function setupGame() {
|
||||
spinArray = generate_random_array(
|
||||
document.getElementById("maxSpinInput").value,
|
||||
);
|
||||
document.getElementById("setupGame").classList.add("hidden");
|
||||
spinInterval = setInterval(() => processSpin(), 100);
|
||||
}
|
||||
|
||||
function processSpin() {
|
||||
// Check if the number is qualifying
|
||||
qualifyingPreprocess();
|
||||
|
||||
for (let number in qualifyingNumbers) {
|
||||
// if the number is a wining number
|
||||
if (number == currentSpin) {
|
||||
// Add the wining number to the wining numbers Array
|
||||
winingNumbers.push([
|
||||
number,
|
||||
36 * bet - (9 - qualifyingNumbers[number]), // loss
|
||||
]);
|
||||
}
|
||||
qualifyingNumbers[number] -= 1;
|
||||
if (qualifyingNumbers[number] == 0) {
|
||||
losingNumbers.push(number);
|
||||
delete qualifyingNumbers[number];
|
||||
}
|
||||
}
|
||||
console.log(potentialQualifyingNumbers);
|
||||
console.log(qualifyingNumbers);
|
||||
console.log(winingNumbers);
|
||||
console.log(losingNumbers);
|
||||
currentSpin += 1;
|
||||
showLastSpins();
|
||||
}
|
||||
|
||||
function showLastSpins() {
|
||||
document.getElementById("lastSpins").replaceChildren();
|
||||
spinArray.slice(lowerBound(), currentSpin).forEach((number) => {
|
||||
let numberDiv = document.createElement("div");
|
||||
numberDiv.classList.add("spinNumber");
|
||||
numberDiv.textContent = number;
|
||||
document.getElementById("lastSpins").appendChild(numberDiv);
|
||||
});
|
||||
}
|
15
static/js/utils.js
Normal file
15
static/js/utils.js
Normal file
@ -0,0 +1,15 @@
|
||||
function hide(element) {
|
||||
element.classList.add("hidden");
|
||||
}
|
||||
function unhide(element) {
|
||||
element.classList.remove("hidden");
|
||||
}
|
||||
|
||||
function toggle_all_header_links() {
|
||||
const headerLinks = document.querySelector("header > .links");
|
||||
const button_link = document.querySelector("header > button");
|
||||
headerLinks.classList.toggle("display_links");
|
||||
button_link.textContent = headerLinks.classList.contains("display_links")
|
||||
? "▲"
|
||||
: "▼";
|
||||
}
|
221
static/style.css
221
static/style.css
@ -1,133 +1,182 @@
|
||||
@font-face {
|
||||
font-family: JetBrainsMono;
|
||||
src: url(assets/font/JetBrainsMono-Regular.woff2) format(woff2);
|
||||
font-family: JetBrainsMono;
|
||||
src: url(assets/font/JetBrainsMono-Regular.woff2) format(woff2);
|
||||
}
|
||||
|
||||
* {
|
||||
font-family: JetBrainsMono;
|
||||
* {
|
||||
font-family: JetBrainsMono;
|
||||
--color-text: #f8f8f2;
|
||||
--color-background: #282a36;
|
||||
--color-current-line: #44475a;
|
||||
--color-purple: #bd93f9;
|
||||
}
|
||||
|
||||
body {
|
||||
color:#F8F8F2;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
background-color: #282936;
|
||||
flex-direction: column;
|
||||
color: var(--color-text);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background-color: var(--color-background);
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
#main{
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
header {
|
||||
display: flex;
|
||||
background-color: var(--color-current-line);
|
||||
border-radius: 20px;
|
||||
padding: 10px;
|
||||
overflow: hidden;
|
||||
& > .links {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
|
||||
#pokemon_team{
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
@media screen and (min-width: 740px) {
|
||||
header > .links {
|
||||
flex-direction: row;
|
||||
gap: 30px;
|
||||
}
|
||||
#display_header_links {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 739px) {
|
||||
header {
|
||||
gap: 10px;
|
||||
align-items: baseline;
|
||||
& > .links {
|
||||
flex-direction: column;
|
||||
gap: 10px;
|
||||
overlay: hidden;
|
||||
transition: max-height 300ms ease-out;
|
||||
max-height: 41px;
|
||||
&.display_links {
|
||||
max-height: 270px;
|
||||
}
|
||||
}
|
||||
& > button {
|
||||
padding: 8px 12px;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#grocery_list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.header_button {
|
||||
color: black;
|
||||
padding: 10px 8px;
|
||||
border-radius: 10px;
|
||||
background-color: var(--color-purple);
|
||||
text-decoration: none !important;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
|
||||
#header {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 1rem;
|
||||
justify-content: center;
|
||||
.header_button:hover {
|
||||
background-color: var(--color-purple);
|
||||
}
|
||||
|
||||
#title {
|
||||
padding : 1rem;
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
#menubar {
|
||||
background-color: #44475A;
|
||||
border-radius: 20px;
|
||||
padding: 10px;
|
||||
display: flex;
|
||||
gap: 50px;
|
||||
justify-content: center;
|
||||
footer {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
gap: 2rem;
|
||||
justify-content: space-evenly;
|
||||
background-color: var(--color-current-line);
|
||||
border-radius: 20px;
|
||||
padding: 4px 20px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
#main {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
#pokemon_team {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
#grocery_list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
button {
|
||||
color: black;
|
||||
padding : 10px;
|
||||
border-radius: 10px;
|
||||
background-color: #BD93F9;
|
||||
border: none;
|
||||
text-decoration: none !important;
|
||||
color: black;
|
||||
padding: 10px;
|
||||
border-radius: 10px;
|
||||
background-color: var(--color-purple);
|
||||
border: none;
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
button:hover {
|
||||
background-color: #BD93F966;
|
||||
background-color: var(--color-purple);
|
||||
}
|
||||
|
||||
.title_button {
|
||||
color: black;
|
||||
padding : 10px;
|
||||
border-radius: 10px;
|
||||
background-color: #BD93F9;
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
|
||||
.title_button:hover {
|
||||
background-color: #BD93F966;
|
||||
}
|
||||
|
||||
|
||||
#content {
|
||||
background-color : #44475A;
|
||||
padding: 10px;
|
||||
border-radius: 20px;
|
||||
margin-left: 10rem;
|
||||
margin-right: 10rem;
|
||||
background-color: var(--color-current-line);
|
||||
padding: 10px;
|
||||
border-radius: 20px;
|
||||
margin-left: 10rem;
|
||||
margin-right: 10rem;
|
||||
}
|
||||
|
||||
|
||||
.project_box {
|
||||
flex-direction: row;
|
||||
display: flex;
|
||||
gap: 1rem;
|
||||
flex-direction: row;
|
||||
display: flex;
|
||||
gap: 1rem;
|
||||
}
|
||||
|
||||
.project_box_thumbnail {
|
||||
width: 20rem;
|
||||
height: 20rem;
|
||||
width: 20rem;
|
||||
height: 20rem;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
|
||||
input {
|
||||
color: #F8F8F2;
|
||||
border-radius: 30px;
|
||||
border: none;
|
||||
padding: 10px;
|
||||
background-color: #44475A;
|
||||
margin: 10px;
|
||||
color: var(--color-text);
|
||||
border-radius: 30px;
|
||||
border: none;
|
||||
padding: 10px;
|
||||
background-color: var(--color-current-line);
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
#pokemon_frame{
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
select {
|
||||
color: var(--color-text);
|
||||
border-radius: 30px;
|
||||
border: none;
|
||||
padding: 10px;
|
||||
background-color: var(--color-current-line);
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.grocery_item{
|
||||
margin: 15px;
|
||||
#pokemon_frame {
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
}
|
||||
|
||||
.grocery_item_name{
|
||||
padding: 10px;
|
||||
background-color:#44475A;
|
||||
border-color: #BD93F9;
|
||||
border-radius: 10px;
|
||||
margin: 10px;
|
||||
.grocery_item {
|
||||
margin: 15px;
|
||||
}
|
||||
|
||||
.grocery_item_name {
|
||||
padding: 10px;
|
||||
background-color: var(--color-current-line);
|
||||
border-color: var(--color-purple);
|
||||
border-radius: 10px;
|
||||
margin: 10px;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user