From 6064fbc2fe1b9248689490da718b7bb00edd5e41 Mon Sep 17 00:00:00 2001 From: Sahandgha Date: Thu, 2 Mar 2023 19:45:51 +0700 Subject: [PATCH 01/23] add weather app --- projects/dad-jokes-generator/index.js | 1 + projects/weather-app/index.html | 38 +++++++++ projects/weather-app/script.js | 71 ++++++++++++++++ projects/weather-app/style.css | 117 ++++++++++++++++++++++++++ 4 files changed, 227 insertions(+) create mode 100644 projects/weather-app/index.html create mode 100644 projects/weather-app/script.js create mode 100644 projects/weather-app/style.css diff --git a/projects/dad-jokes-generator/index.js b/projects/dad-jokes-generator/index.js index 7a1e90d..12d9337 100644 --- a/projects/dad-jokes-generator/index.js +++ b/projects/dad-jokes-generator/index.js @@ -33,3 +33,4 @@ async function getJoke() { } btnEl.addEventListener("click", getJoke); + diff --git a/projects/weather-app/index.html b/projects/weather-app/index.html new file mode 100644 index 0000000..de6cdb0 --- /dev/null +++ b/projects/weather-app/index.html @@ -0,0 +1,38 @@ + + + + + Weather App + + + +
+

Weather App

+
+ + +
+
+
+
+
+
+
+ + +
+ + + diff --git a/projects/weather-app/script.js b/projects/weather-app/script.js new file mode 100644 index 0000000..ada1704 --- /dev/null +++ b/projects/weather-app/script.js @@ -0,0 +1,71 @@ +// Set the API key to be used for making requests to the OpenWeatherMap API +const apiKey = "ec24604fb141c0188e07713025f2b7b8"; + +// Get the element that will display the weather data on the page +const weatherData = document.getElementById("weather-data"); + +// Get the input element for the city from the HTML form +const cityInput = document.getElementById("city-input"); + +// Get the HTML form element +const form = document.querySelector("form"); + +// Add a submit event listener to the form, which will get the value from the city input field and use it to get weather data +form.addEventListener("submit", (event) => { + event.preventDefault(); // Prevent the default form submission behavior + const city = cityInput.value; // Get the value from the city input field + getWeatherData(city); // Call the function to get weather data for the specified city +}); + +// Define an async function to get weather data for a given city +async function getWeatherData(city) { + try { + // Make a request to the OpenWeatherMap API to get weather data for the specified city + const response = await fetch(` +https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${apiKey}&units=metric`); + + // Check if the response from the API is not ok (e.g. 404 error) + if (!response.ok) { + throw new Error("Network response was not ok"); + } + + // Parse the response from the API as JSON + const data = await response.json(); + + // Check if the API returned an error message + if (data.cod === "404") { + throw new Error(data.message); + } + + // Extract the temperature, description, icon, and other weather details from the API response + const temperature = Math.round(data.main.temp); + const description = data.weather[0].description; + const icon = data.weather[0].icon; + const details = [ + `Feels like: ${Math.round(data.main.feels_like)}°C`, + `Humidity: ${data.main.humidity}%`, + `Wind speed: ${data.wind.speed} m/s`, + ]; + + // Set the HTML content of the weather data display elements to the retrieved weather data + weatherData.querySelector( + ".icon" + ).innerHTML = `Weather Icon`; + weatherData.querySelector(".temperature").textContent = `${temperature}°C`; + weatherData.querySelector(".description").textContent = description; + weatherData.querySelector(".details").innerHTML = details + .map((detail) => `
${detail}
`) + .join(""); + } catch (error) { + console.log(error); + + // If there was an error fetching weather data, clear the HTML content of the weather data display elements and display an error message + weatherData.querySelector(".icon").innerHTML = ""; + weatherData.querySelector(".temperature").textContent = ""; + weatherData.querySelector(".description").textContent = + "Error fetching weather data. Please try again."; + weatherData.querySelector(".details").innerHTML = ""; + } +} + +// The above code uses the Fetch API to retrieve weather data from the OpenWeatherMap API, and the async/await syntax to handle the asynchronous nature of the API call. The code also dynamically updates the HTML content of the weather data display elements with the retrieved weather data. diff --git a/projects/weather-app/style.css b/projects/weather-app/style.css new file mode 100644 index 0000000..bed3d24 --- /dev/null +++ b/projects/weather-app/style.css @@ -0,0 +1,117 @@ +body { + margin: 0; /* Reset default margin */ + font-family: "Montserrat", sans-serif; /* Use Montserrat font for all text */ + background-color: #f7f7f7; /* Set light gray background color */ +} + +.container { + max-width: 600px; /* Set maximum width of container */ + margin: 0 auto; /* Center container horizontally */ + padding: 20px; /* Add padding inside container */ + border-radius: 5px; /* Add rounded corners to container */ + box-shadow: 0 0 20px rgba(0, 0, 0, 0.2); /* Add shadow effect to container */ + background-color: #fff; /* Set white background color for container */ + margin-top: 50px; /* Add margin to the top of the container */ + text-align: center; /* Center align the content inside container */ +} + +form { + display: flex; /* Use flexbox for layout */ + justify-content: center; /* Center children horizontally */ + align-items: center; /* Center children vertically */ + margin-bottom: 20px; /* Add margin to bottom */ +} + +form input[type="text"] { + padding: 10px; /* Add padding to all sides */ + border: none; /* Remove border */ + border-radius: 5px; /* Add rounded corners */ + font-size: 18px; /* Set font size */ + width: 60%; /* Set width */ + outline: none; /* Remove outline */ +} + +form input[type="submit"] { + background-color: #007bff; /* set background color for the submit button */ + color: #fff; /* set text color for the submit button */ + border: none; /* remove border from the submit button */ + padding: 10px 20px; /* set padding for the submit button */ + border-radius: 5px; /* set border radius for the submit button */ + font-size: 18px; /* set font size for the submit button text */ + cursor: pointer; /* change cursor to pointer on hover */ + outline: none; /* remove outline on focus */ + transition: background-color 0.3s ease; /* add transition effect for background color change */ +} + +form input[type="submit"]:hover { + background-color: #0062cc; /* set background color on hover */ +} + +.icon { + width: 100px; /* set width of the icon */ + height: 100px; /* set height of the icon */ + margin: 0 auto; /* center the icon horizontally */ + background-size: contain; /* scale the background image to fit within the container */ + background-repeat: no-repeat; /* prevent the background image from repeating */ + background-position: center center; /* center the background image within the container */ +} + +.temperature { + font-size: 48px; /* set font size for the temperature display */ + font-weight: bold; /* set font weight for the temperature display */ + margin: 20px 0; /* add margin to the top and bottom of the temperature display */ +} + +.description { + font-size: 24px; /* set font size for the weather description */ + margin-bottom: 20px; /* add margin to the bottom of the weather description */ +} + +.details { + display: flex; /* set display property to flex */ + justify-content: center; /* center the child elements horizontally */ + align-items: center; /* center the child elements vertically */ + flex-wrap: wrap; /* allow the child elements to wrap onto a new line if needed */ +} + +.details > div { + flex: 1; /* Use the remaining available space for each div */ + margin: 10px; /* Add margin around each div */ + padding: 20px; /* Add padding inside each div */ + background-color: #f1f1f1; /* Set background color for each div */ + border-radius: 5px; /* Round the corners of each div */ + text-align: center; /* Center the content horizontally */ + min-height: 45px; /* Set a minimum height for each div */ + align-items: center; /* Center the content vertically */ + justify-content: center; /* Center the content horizontally */ +} + +.details > div > h3 { + margin-top: 0; /* Remove the top margin of the heading */ + font-size: 18px; /* Set the font size for the heading */ + font-weight: bold; /* Set the font weight for the heading */ +} + +.details > div > p { + margin-bottom: 0; /* Remove the bottom margin of the paragraph */ + font-size: 16px; /* Set the font size for the paragraph */ +} + +.details > div > p:first-child { + font-weight: bold; /* Set the font weight for the first paragraph */ +} + +.details > div > p:last-child { + margin-top: 10px; /* Add margin to the top of the last paragraph */ +} + +@media (max-width: 768px) { + form { + flex-direction: column; /* Change the direction of the flex items to column */ + } + + form input[type="text"] { + width: 100%; /* Set the width of the input field to 100% */ + margin-bottom: 10px; /* Add margin to the bottom of the input field */ + } +} From d51b3e3eecdc0bede933c34898b4bd1645439a9d Mon Sep 17 00:00:00 2001 From: Sahandgha Date: Sat, 4 Mar 2023 07:30:52 +0700 Subject: [PATCH 02/23] update weather app --- projects/weather-app/index.html | 32 +++---- projects/weather-app/index.js | 58 +++++++++++++ projects/weather-app/script.js | 71 --------------- projects/weather-app/style.css | 149 ++++++++++++++------------------ 4 files changed, 134 insertions(+), 176 deletions(-) create mode 100644 projects/weather-app/index.js delete mode 100644 projects/weather-app/script.js diff --git a/projects/weather-app/index.html b/projects/weather-app/index.html index de6cdb0..7fe9e3a 100644 --- a/projects/weather-app/index.html +++ b/projects/weather-app/index.html @@ -1,7 +1,9 @@ - + + + Weather App @@ -9,30 +11,22 @@

Weather App

- +
-
+
+ +
-
+
+ +
- -
- + diff --git a/projects/weather-app/index.js b/projects/weather-app/index.js new file mode 100644 index 0000000..f773a49 --- /dev/null +++ b/projects/weather-app/index.js @@ -0,0 +1,58 @@ +const apikey = "46f80a02ecae410460d59960ded6e1c6"; + +const weatherDataEl = document.getElementById("weather-data"); + +const cityInputEl = document.getElementById("city-input"); + +const formEl = document.querySelector("form"); + +formEl.addEventListener("submit", (event) => { + event.preventDefault(); + const cityValue = cityInputEl.value; + getWeatherData(cityValue); +}); + +async function getWeatherData(cityValue) { + try { + const response = await fetch( + `https://api.openweathermap.org/data/2.5/weather?q=${cityValue}&appid=${apikey}&units=metric` + ); + + if (!response.ok) { + throw new Error("Network response was not ok"); + } + + const data = await response.json(); + + const temperature = Math.round(data.main.temp); + + const description = data.weather[0].description; + + const icon = data.weather[0].icon; + + const details = [ + `Feels like: ${Math.round(data.main.feels_like)}`, + `Humidity: ${data.main.humidity}%`, + `Wind speed: ${data.wind.speed} m/s`, + ]; + + weatherDataEl.querySelector( + ".icon" + ).innerHTML = `Weather Icon`; + weatherDataEl.querySelector( + ".temperature" + ).textContent = `${temperature}°C`; + weatherDataEl.querySelector(".description").textContent = description; + + weatherDataEl.querySelector(".details").innerHTML = details + .map((detail) => `
${detail}
`) + .join(""); + } catch (error) { + weatherDataEl.querySelector(".icon").innerHTML = ""; + weatherDataEl.querySelector(".temperature").textContent = ""; + weatherDataEl.querySelector(".description").textContent = + "An error happened, please try again later"; + + weatherDataEl.querySelector(".details").innerHTML = ""; + } +} diff --git a/projects/weather-app/script.js b/projects/weather-app/script.js deleted file mode 100644 index ada1704..0000000 --- a/projects/weather-app/script.js +++ /dev/null @@ -1,71 +0,0 @@ -// Set the API key to be used for making requests to the OpenWeatherMap API -const apiKey = "ec24604fb141c0188e07713025f2b7b8"; - -// Get the element that will display the weather data on the page -const weatherData = document.getElementById("weather-data"); - -// Get the input element for the city from the HTML form -const cityInput = document.getElementById("city-input"); - -// Get the HTML form element -const form = document.querySelector("form"); - -// Add a submit event listener to the form, which will get the value from the city input field and use it to get weather data -form.addEventListener("submit", (event) => { - event.preventDefault(); // Prevent the default form submission behavior - const city = cityInput.value; // Get the value from the city input field - getWeatherData(city); // Call the function to get weather data for the specified city -}); - -// Define an async function to get weather data for a given city -async function getWeatherData(city) { - try { - // Make a request to the OpenWeatherMap API to get weather data for the specified city - const response = await fetch(` -https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${apiKey}&units=metric`); - - // Check if the response from the API is not ok (e.g. 404 error) - if (!response.ok) { - throw new Error("Network response was not ok"); - } - - // Parse the response from the API as JSON - const data = await response.json(); - - // Check if the API returned an error message - if (data.cod === "404") { - throw new Error(data.message); - } - - // Extract the temperature, description, icon, and other weather details from the API response - const temperature = Math.round(data.main.temp); - const description = data.weather[0].description; - const icon = data.weather[0].icon; - const details = [ - `Feels like: ${Math.round(data.main.feels_like)}°C`, - `Humidity: ${data.main.humidity}%`, - `Wind speed: ${data.wind.speed} m/s`, - ]; - - // Set the HTML content of the weather data display elements to the retrieved weather data - weatherData.querySelector( - ".icon" - ).innerHTML = `Weather Icon`; - weatherData.querySelector(".temperature").textContent = `${temperature}°C`; - weatherData.querySelector(".description").textContent = description; - weatherData.querySelector(".details").innerHTML = details - .map((detail) => `
${detail}
`) - .join(""); - } catch (error) { - console.log(error); - - // If there was an error fetching weather data, clear the HTML content of the weather data display elements and display an error message - weatherData.querySelector(".icon").innerHTML = ""; - weatherData.querySelector(".temperature").textContent = ""; - weatherData.querySelector(".description").textContent = - "Error fetching weather data. Please try again."; - weatherData.querySelector(".details").innerHTML = ""; - } -} - -// The above code uses the Fetch API to retrieve weather data from the OpenWeatherMap API, and the async/await syntax to handle the asynchronous nature of the API call. The code also dynamically updates the HTML content of the weather data display elements with the retrieved weather data. diff --git a/projects/weather-app/style.css b/projects/weather-app/style.css index bed3d24..2030f24 100644 --- a/projects/weather-app/style.css +++ b/projects/weather-app/style.css @@ -1,117 +1,94 @@ body { - margin: 0; /* Reset default margin */ - font-family: "Montserrat", sans-serif; /* Use Montserrat font for all text */ - background-color: #f7f7f7; /* Set light gray background color */ + margin: 0; + font-family: "Montserrat", sans-serif; + background-color: #f7f7f7; } .container { - max-width: 600px; /* Set maximum width of container */ - margin: 0 auto; /* Center container horizontally */ - padding: 20px; /* Add padding inside container */ - border-radius: 5px; /* Add rounded corners to container */ - box-shadow: 0 0 20px rgba(0, 0, 0, 0.2); /* Add shadow effect to container */ - background-color: #fff; /* Set white background color for container */ - margin-top: 50px; /* Add margin to the top of the container */ - text-align: center; /* Center align the content inside container */ + background-color: #fff; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.2); + margin: 0 auto; + margin-top: 50px; + text-align: center; + max-width: 600px; + border-radius: 5px; + padding: 20px; } form { - display: flex; /* Use flexbox for layout */ - justify-content: center; /* Center children horizontally */ - align-items: center; /* Center children vertically */ - margin-bottom: 20px; /* Add margin to bottom */ + display: flex; + justify-content: center; + align-items: center; + margin-bottom: 20px; } form input[type="text"] { - padding: 10px; /* Add padding to all sides */ - border: none; /* Remove border */ - border-radius: 5px; /* Add rounded corners */ - font-size: 18px; /* Set font size */ - width: 60%; /* Set width */ - outline: none; /* Remove outline */ + padding: 10px; + border: none; + outline: none; + font-size: 18px; + width: 60%; } form input[type="submit"] { - background-color: #007bff; /* set background color for the submit button */ - color: #fff; /* set text color for the submit button */ - border: none; /* remove border from the submit button */ - padding: 10px 20px; /* set padding for the submit button */ - border-radius: 5px; /* set border radius for the submit button */ - font-size: 18px; /* set font size for the submit button text */ - cursor: pointer; /* change cursor to pointer on hover */ - outline: none; /* remove outline on focus */ - transition: background-color 0.3s ease; /* add transition effect for background color change */ + background-color: #007bff; + color: #fff; + border: none; + padding: 10px 20px; + border-radius: 5px; + font-size: 18px; + cursor: pointer; + outline: none; + transition: background-color 0.3s ease; } form input[type="submit"]:hover { - background-color: #0062cc; /* set background color on hover */ + background-color: #0062cc; } -.icon { - width: 100px; /* set width of the icon */ - height: 100px; /* set height of the icon */ - margin: 0 auto; /* center the icon horizontally */ - background-size: contain; /* scale the background image to fit within the container */ - background-repeat: no-repeat; /* prevent the background image from repeating */ - background-position: center center; /* center the background image within the container */ +.icon img { + width: 100px; + height: 100px; + background-size: contain; + background-repeat: no-repeat; + background-position: center center; } .temperature { - font-size: 48px; /* set font size for the temperature display */ - font-weight: bold; /* set font weight for the temperature display */ - margin: 20px 0; /* add margin to the top and bottom of the temperature display */ + font-size: 48px; + font-weight: bold; + margin: 20px 0; } -.description { - font-size: 24px; /* set font size for the weather description */ - margin-bottom: 20px; /* add margin to the bottom of the weather description */ +.description{ + font-size: 24px; + margin-bottom: 20px; } -.details { - display: flex; /* set display property to flex */ - justify-content: center; /* center the child elements horizontally */ - align-items: center; /* center the child elements vertically */ - flex-wrap: wrap; /* allow the child elements to wrap onto a new line if needed */ +.details{ + display: flex; + justify-content: center; + align-items: center; + flex-wrap: wrap; } -.details > div { - flex: 1; /* Use the remaining available space for each div */ - margin: 10px; /* Add margin around each div */ - padding: 20px; /* Add padding inside each div */ - background-color: #f1f1f1; /* Set background color for each div */ - border-radius: 5px; /* Round the corners of each div */ - text-align: center; /* Center the content horizontally */ - min-height: 45px; /* Set a minimum height for each div */ - align-items: center; /* Center the content vertically */ - justify-content: center; /* Center the content horizontally */ +.details > div{ + padding: 20px; + background-color: #f1f1f1; + margin: 10px; + flex: 1; + border-radius: 5px; + text-align: center; + min-height: 45px; } -.details > div > h3 { - margin-top: 0; /* Remove the top margin of the heading */ - font-size: 18px; /* Set the font size for the heading */ - font-weight: bold; /* Set the font weight for the heading */ -} - -.details > div > p { - margin-bottom: 0; /* Remove the bottom margin of the paragraph */ - font-size: 16px; /* Set the font size for the paragraph */ -} - -.details > div > p:first-child { - font-weight: bold; /* Set the font weight for the first paragraph */ -} - -.details > div > p:last-child { - margin-top: 10px; /* Add margin to the top of the last paragraph */ -} - -@media (max-width: 768px) { - form { - flex-direction: column; /* Change the direction of the flex items to column */ - } +@media (max-width: 768px){ + form { + flex-direction: column; + } - form input[type="text"] { - width: 100%; /* Set the width of the input field to 100% */ - margin-bottom: 10px; /* Add margin to the bottom of the input field */ - } + form input[type="text"]{ + width: 100%; + margin-bottom: 10px; + } } From 99e37f27712cbb61c16566c92672dbc8037ff4bc Mon Sep 17 00:00:00 2001 From: Sahandgha Date: Sat, 4 Mar 2023 21:36:03 +0700 Subject: [PATCH 03/23] add new projects --- projects/basic-calculator/index.html | 32 +++++ projects/basic-calculator/script.js | 35 +++++ projects/basic-calculator/style.css | 82 ++++++++++++ projects/image-search-app/app.js | 70 ++++++++++ projects/image-search-app/index.html | 28 ++++ projects/image-search-app/style.css | 170 +++++++++++++++++++++++++ projects/music-player/index.html | 34 +++++ projects/music-player/pause.png | Bin 0 -> 10406 bytes projects/music-player/play.png | Bin 0 -> 4747 bytes projects/music-player/script.js | 90 +++++++++++++ projects/music-player/songs/song1.m4a | Bin 0 -> 401133 bytes projects/music-player/songs/song2.m4a | Bin 0 -> 401133 bytes projects/music-player/songs/song3.m4a | Bin 0 -> 377289 bytes projects/music-player/style.css | 90 +++++++++++++ projects/simple-stopwatch/index.html | 16 +++ projects/simple-stopwatch/stopwatch.js | 78 ++++++++++++ projects/simple-stopwatch/style.css | 56 ++++++++ 17 files changed, 781 insertions(+) create mode 100644 projects/basic-calculator/index.html create mode 100644 projects/basic-calculator/script.js create mode 100644 projects/basic-calculator/style.css create mode 100644 projects/image-search-app/app.js create mode 100644 projects/image-search-app/index.html create mode 100644 projects/image-search-app/style.css create mode 100644 projects/music-player/index.html create mode 100644 projects/music-player/pause.png create mode 100644 projects/music-player/play.png create mode 100644 projects/music-player/script.js create mode 100644 projects/music-player/songs/song1.m4a create mode 100644 projects/music-player/songs/song2.m4a create mode 100644 projects/music-player/songs/song3.m4a create mode 100644 projects/music-player/style.css create mode 100644 projects/simple-stopwatch/index.html create mode 100644 projects/simple-stopwatch/stopwatch.js create mode 100644 projects/simple-stopwatch/style.css diff --git a/projects/basic-calculator/index.html b/projects/basic-calculator/index.html new file mode 100644 index 0000000..f9cf785 --- /dev/null +++ b/projects/basic-calculator/index.html @@ -0,0 +1,32 @@ + + + + Simple Calculator + + + +
+

+
+ + + + + + + + + + + + + + + + + +
+
+ + + diff --git a/projects/basic-calculator/script.js b/projects/basic-calculator/script.js new file mode 100644 index 0000000..c898ec4 --- /dev/null +++ b/projects/basic-calculator/script.js @@ -0,0 +1,35 @@ +const resultField = document.getElementById("result"); +const buttons = document.querySelectorAll("button"); + +for (let i = 0; i < buttons.length; i++) { + const button = buttons[i]; + button.addEventListener("click", function () { + const buttonValue = button.textContent; + if (buttonValue === "C") { + clearResult(); + } else if (buttonValue === "=") { + calculate(); + } else { + appendValue(buttonValue); + } + }); +} + +function appendValue(val) { + resultField.value += val; +} + +function clearResult() { + resultField.value = ""; +} + +function calculate() { + const expression = resultField.value; + const result = eval(expression); + // In JavaScript, eval() is a built-in function that evaluates a string as if it were a JavaScript code and returns the result. It can be used to dynamically evaluate expressions or code that is generated at runtime. + + // In the context of a calculator, eval() can be used to evaluate the arithmetic expression entered by the user and return the result. + + // For example, if the user enters the expression "2 + 3 * 4", eval("2 + 3 * 4") will return 14, which is the result of evaluating the expression. + resultField.value = result; +} diff --git a/projects/basic-calculator/style.css b/projects/basic-calculator/style.css new file mode 100644 index 0000000..dbf9d16 --- /dev/null +++ b/projects/basic-calculator/style.css @@ -0,0 +1,82 @@ +* { + box-sizing: border-box; +} + +/* By setting box-sizing: border-box on all elements, we are ensuring that any padding or border we add to an element will be included in its total size. */ + +.calculator { + max-width: 400px; + margin: 0 auto; + margin-top: 30px; + padding: 20px; + background-color: #f2f2f2; + border: 1px solid #ccc; + border-radius: 5px; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3); +} + +#result { + width: 100%; + padding: 10px; + font-size: 24px; + border: none; + border-radius: 5px; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3) inset; + + /* In this case, the box-shadow property is set to 0 2px 5px rgba(0, 0, 0, 0.3) inset. This means that the shadow will have no horizontal offset (0), a vertical offset of 2px, a blur radius of 5px, and a color of rgba(0, 0, 0, 0.3). The inset keyword is used to specify that the shadow should be an inset shadow, rather than an outset shadow. */ +} + +.buttons { + display: grid; + grid-template-columns: repeat(4, 1fr); + /* grid-template-columns: repeat(4, 1fr) is a CSS property that sets the size of each column in a grid container. In this case, the repeat(4, 1fr) value creates a grid with four equal-sized columns. + +The fr unit stands for "fractional unit" and is used to divide the available space in a grid container. In this case, each column takes up an equal fraction of the available space, regardless of the size of the container. + +So, with grid-template-columns: repeat(4, 1fr), the grid container will be divided into four equal-sized columns, which is what we want for our calculator layout. */ + grid-gap: 10px; + margin-top: 20px; +} + +button { + padding: 10px; + font-size: 24px; + border: none; + border-radius: 5px; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3); + cursor: pointer; + transition: background-color 0.3s ease; +} + +button:hover { + background-color: #ddd; +} + +.clear { + background-color: #ff4136; + color: #fff; +} + +.operator { + background-color: #0074d9; + color: #fff; +} + +.number { + background-color: #fff; + color: #333; +} + +.equals { + grid-row: span 3; + /* grid-row: span 3; is a CSS property that sets the number of rows an element spans in a CSS grid container. + +In this case, span 3 is used to make the element span three rows in the grid container. */ + background-color: #01ff70; + color: #fff; +} + +.decimal { + background-color: #fff; + color: #333; +} diff --git a/projects/image-search-app/app.js b/projects/image-search-app/app.js new file mode 100644 index 0000000..e342813 --- /dev/null +++ b/projects/image-search-app/app.js @@ -0,0 +1,70 @@ +// Set the access key for the Unsplash API +const accessKey = "3I7M0FgMDBz0BC9OMC4e4wi9ByTMXZYt0Rk4fQ15TKs"; + +// Get elements from the HTML document using their IDs +const searchForm = document.getElementById("search-form"); +const searchInput = document.getElementById("search-input"); +const searchResults = document.getElementById("search-results"); +const showMoreButton = document.getElementById("show-more-button"); + +// Initialize variables +let page = 1; +let query = ""; + +// Create an asynchronous function to search for images +async function searchImages() { + // Set the query value to the input value from the search form + query = searchInput.value; + // Create the URL for the Unsplash API with the page number, query, and access key + const url = `https://api.unsplash.com/search/photos?page=${page}&query=${query}&client_id=${accessKey}`; + // Send a request to the API and wait for the response + const response = await fetch(url); + // Parse the response data as JSON + const data = await response.json(); + // Get the results array from the response data + const results = data.results; + + // If this is the first page of results, clear the search results div + if (page === 1) { + searchResults.innerHTML = ""; + } + + // Loop through each result and create a div with an image and link for each one + results.forEach((result) => { + const imageWrapper = document.createElement("div"); + imageWrapper.classList.add("search-result"); + + const image = document.createElement("img"); + image.src = result.urls.small; + image.alt = result.alt_description; + + const imageLink = document.createElement("a"); + imageLink.href = result.links.html; + imageLink.target = "_blank"; + imageLink.textContent = result.alt_description; + + imageWrapper.appendChild(image); + imageWrapper.appendChild(imageLink); + searchResults.appendChild(imageWrapper); + }); + + // Increment the page number for the next search + page++; + + // Show the "show more" button if there are more than one page of results + if (page > 1) { + showMoreButton.style.display = "block"; + } +} + +// Listen for a submit event on the search form, prevent the default action, and search for images +searchForm.addEventListener("submit", (event) => { + event.preventDefault(); + page = 1; + searchImages(); +}); + +// Listen for a click event on the "show more" button and search for more images +showMoreButton.addEventListener("click", () => { + searchImages(); +}); diff --git a/projects/image-search-app/index.html b/projects/image-search-app/index.html new file mode 100644 index 0000000..92e769d --- /dev/null +++ b/projects/image-search-app/index.html @@ -0,0 +1,28 @@ + + + + + Unsplash Image Search App + + + +

Image Search App

+
+ + +
+
+ +
+ + + + + diff --git a/projects/image-search-app/style.css b/projects/image-search-app/style.css new file mode 100644 index 0000000..07fc2e5 --- /dev/null +++ b/projects/image-search-app/style.css @@ -0,0 +1,170 @@ +body { + background-color: #f9f9f9; /* Sets the background color of the body element to a light gray */ + font-family: Arial, sans-serif; /* Sets the font family of the text inside the body to Arial or a generic sans-serif font */ + font-size: 16px; /* Sets the font size of the text inside the body to 16 pixels */ + line-height: 1.6; /* Sets the line height of the text inside the body to 1.6 times the font size */ + color: #333; /* Sets the color of the text inside the body to a dark gray */ +} + +h1 { + font-size: 36px; /* Sets the font size of the h1 heading to 36 pixels */ + font-weight: bold; /* Makes the h1 heading bold */ + text-align: center; /* Centers the h1 heading horizontally within its container */ + margin-top: 40px; /* Adds a top margin of 40 pixels to the h1 heading */ + margin-bottom: 60px; /* Adds a bottom margin of 60 pixels to the h1 heading */ +} + +#search-form { + display: flex; /* Set the display property of the element to flex */ + justify-content: center; /* Center the child elements horizontally */ + align-items: center; /* Center the child elements vertically */ + margin-bottom: 60px; /* Add a bottom margin of 60 pixels to the element */ +} + +#search-input { + width: 60%; /* Set the width of the element to 60% of its container */ + max-width: 400px; /* Set the maximum width of the element to 400 pixels */ + padding: 10px 20px; /* Add 10 pixels of padding to the top and bottom and 20 pixels of padding to the left and right of the element */ + border: none; /* Remove the border from the element */ + border-radius: 5px; /* Add a 5-pixel radius to the element's border corners */ + box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.2); /* Add a 5-pixel box shadow to the element */ + font-size: 18px; /* Set the font size of the element to 18 pixels */ + color: #333; /* Set the text color of the element to #333 */ +} + +#search-button { + padding: 10px 20px; /* Sets the padding of the button */ + background-color: #4caf50; /* Sets the background color of the button */ + color: white; /* Sets the text color of the button */ + font-size: 18px; /* Sets the font size of the button text */ + border: none; /* Removes the border of the button */ + border-radius: 5px; /* Sets the border radius of the button */ + box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.2); /* Sets the box shadow of the button */ + cursor: pointer; /* Changes the cursor to pointer when hovering over the button */ + transition: background-color 0.3s ease-in-out; /* Sets the transition effect when the background color changes */ +} + +#search-button:hover { + background-color: #3e8e41; /* Changes the background color when hovering over the button */ +} + +#search-results { + display: flex; /* sets the display type of the element to flex*/ + flex-wrap: wrap; /* allows the flex items to wrap to multiple lines*/ + justify-content: space-between; /* aligns the flex items along the main axis with equal spacing between them*/ + margin: 0 auto; /* sets the top and bottom margins to 0 and the left and right margins to auto*/ + max-width: 1200px; /* sets the maximum width of the element to 1200 pixels*/ +} + +/* Sets the styles for an individual search result element */ +.search-result { + /* Adds 60px margin to the bottom of each search result element */ + margin-bottom: 60px; + + /* Sets the width of the search result element to 30% of the parent container */ + width: 30%; + + /* Adds rounded corners to the search result element */ + border-radius: 5px; + + /* Adds a box shadow to the search result element */ + box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.2); + + /* Hides any content that overflows the search result element */ + overflow: hidden; +} + +.search-result img { + /* Sets the width of the image to 100% of its container element */ + width: 100%; + + /* Sets the height of the image to 200 pixels */ + height: 200px; + + /* Determines how the image should be resized to cover its container without distorting its aspect ratio */ + object-fit: cover; + + /* Specifies that any changes to the transform property of the image should be transitioned over a duration of 0.3 seconds with an easing function */ + transition: transform 0.3s ease-in-out; +} + +.search-result:hover img { + transform: scale(1.05); + /* The transform property scales the image by 1.05, making it 5% larger than its original size. This creates a zoom effect when the user hovers over the image. */ +} + +.search-result a { + display: block; /* sets the display type to block */ + padding: 10px; /* adds padding to the top and bottom of the element */ + color: #333; /* sets the text color to dark gray */ + text-decoration: none; /* removes any text decoration */ + transition: background-color 0.3s ease-in-out; /* sets a transition effect when the background color changes */ +} + +.search-result a:hover { + background-color: rgba( + 0, + 0, + 0, + 0.1 + ); /* changes the background color to a light gray when the element is hovered over */ +} + +#show-more-button { + background-color: #008cba; /* Sets the background color of the button to a shade of blue */ + border: none; /* Removes the border around the button */ + color: white; /* Sets the font color of the button text to white */ + padding: 10px 20px; /* Sets the padding of the button to 10px on the top and bottom, and 20px on the left and right */ + text-align: center; /* Centers the button text horizontally */ + text-decoration: none; /* Removes any text decoration such as underlining */ + display: inline-block; /* Displays the button as an inline-level block container */ + font-size: 16px; /* Sets the font size of the button text to 16px */ + border-radius: 5px; /* Rounds the corners of the button to 5px */ + margin-top: 20px; /* Adds a 20px margin on the top of the button */ + transition: background-color 0.3s ease; /* Specifies a transition effect for the background color when hovering over the button */ + display: none; /* Hides the button */ + margin: 0 auto; /* Centers the button horizontally */ + margin-bottom: 40px; /* Adds a 40px margin on the bottom of the button */ + cursor: pointer; /* Sets the cursor to a pointer when hovering over the button */ +} + +#show-more-button:hover { + background-color: #0077b5; /* Changes the background color of the button to a darker shade of blue when hovering over it */ +} + +/* This is a CSS media query, which applies different styles based on the size of the screen. + +The first media query applies when the screen width is a maximum of 768px. In this case, it changes the justify-content property of #search-results to center the search results horizontally. It also changes the width of .search-result to 45%. + +The second media query applies when the screen width is a maximum of 480px. In this case, it changes the flex-direction property of #search-form to column, which stacks the search input and button vertically. It also adds a margin bottom to #search-input and changes the width of .search-result to 100%, making each search result take up the full width of the screen. */ + +/* The following styles will apply when the screen size is 768px or smaller */ +@media screen and (max-width: 768px) { + /* Centers the search result items */ + #search-results { + justify-content: center; + } + + /* Decreases the width of each search result item */ + .search-result { + width: 45%; + } +} + +/* The following styles will apply when the screen size is 480px or smaller */ +@media screen and (max-width: 480px) { + /* Changes the direction of the search form to be vertical */ + #search-form { + flex-direction: column; + } + + /* Adds margin to the bottom of the search input */ + #search-input { + margin-bottom: 20px; + } + + /* Makes each search result item full width */ + .search-result { + width: 100%; + } +} diff --git a/projects/music-player/index.html b/projects/music-player/index.html new file mode 100644 index 0000000..20b6976 --- /dev/null +++ b/projects/music-player/index.html @@ -0,0 +1,34 @@ + + + + Music Player + + + +
+

Music Player

+
+ +
+ + +
+
+
+
+
+ +
+ + + diff --git a/projects/music-player/pause.png b/projects/music-player/pause.png new file mode 100644 index 0000000000000000000000000000000000000000..3c877cc4ee6711d85c7b3ce802c4f80a5c79dc9a GIT binary patch literal 10406 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 literal 0 HcmV?d00001 diff --git a/projects/music-player/play.png b/projects/music-player/play.png new file mode 100644 index 0000000000000000000000000000000000000000..7019bf19e9654098f39159fc1192d9c76101ef10 GIT binary patch literal 4747 zcmeHLi9gg``#v+231ONLCCVCQXKck2S;|r&S+ay|S%;7?lq6XS*_Vnb2|Z!(@6-GHz5m1edFS()`<(B6&V60?b)7TwF`_OS>g;FcWd;E3*VEOy z3;-HV(E!5$hfgG-RyZ&a&gz+9Fqn}^qY3!9&r8>w0Dy!#@Tzod(Y8^PYr%TdzP$0>bLjTfTMU(`1_N2k-_{{OxH=fHox1Dedo%Am*% z-^+%^0EK2?+_RSnvyYjDbw3+B2lfE&ASW01As*htNBEBN3miKxC?qT*Dt1C#;^Zkw zDQOv5Ie7&|yppnts@mx@>KcEX)zmttt)r`V{(`=t(Zx%bjZI9in3-ExUbD8bwYzTb z;CREy*~QiErn`rym$whW*YB2pK;Z45JHesEu<*P0BJM{%hbT$ zM`u@ePj6rU*MY&IVe-i6x3Tew$tlY8%q;c$+>iOc78aM5X)CLLul-!#*!;D%y|a5= zsPr}fY;1a3f0zW27rt#~$F3c1p~ab>96peC&*6md^OH%=#@OB(af^~BzTdWY3VaaebZ(w@4d`($I^?+-pv%<1NP zo)MW5E!i#+e@u-_{`sCbeASKD%|5axcWk) z-SZ{G6Y4ZwdikE!Xp#Q=FNsTS0RVH*-2cg~~RJd!%>D#plu8cPOpI0nyEu$)Wz0K8JjMjXg z4Q)yDi>>rUN(#A2&DaHr6%0k(uy)HT_upH=kyK-mEV`KbRnnx2|5dBpx}FnvS+>+{ zevm^r%Xr39HGdn2#b^OwwsIg_Y)wm)JLcNDIjQM{$HuQW6boCaE#oc$yEEmB~snu5vkAu-L zJN=G5i`LZlR;1Z*#n#P*5xI&>IlGgAKvE_uzf$1iM0N7|klpABY5Qxe(hA%edXijR zvI^YspJ|vn;V}nSLlr=poo4Xz*fAZw@b7sZC3fmY8%n9%U%;5q3&)?bog#ch!fI+- zA6s2gO|x0j1*VD7ET+`71h%?L1^o^ern>%&JD_NKM#bu)^1l&H*<;0E)%z4!Ma)-T z0~sUU_}_rfCCU?FB~M2s$rtE%6-HNwXykwyuU}fSFQwzVaMMNlRd_tDK>F zna_cY^tS$tTcBtn|A&>CGN3B1P3oXv+Oh#jcYbU^hJWy^JUmIWxxay^A_~*Jy{L-n zmfsXHgFZKrqMV*=wc(=ZiBtcXj)63ZH}3i~uho?7-{G}2r9kD#_o^9?W>mi2vKVVYFq z!kFW(=Y;0K=V4LKs?ycsDCY~4`O0V|rExzY;JqX-1l%`IC@biINLz{@Cq`og&j-t= z3V*>udb~J{pT05*NJfxmF*!HYnRDAAM`BNnjyUA*Pe~Ib`fOD1M>$LI1qq>?qj!*1 zGeapzSk4Kvfq85&y9BdBpMPXA3V7UNL3eX~feq-AGS?kAh-E_t9axQbO*dU*!IPrz z5f+eei*JrG=hPV}lp}tw1<^=#JwPlg^hW3efc?@_Hj6{IDu>B9% z+P8Hl7{wq`oy2>iC~t4zI|f zB6K{M58bV(eixL)hyd?kgcqK`!a5l)9f23d7gng>fW#fWib3LCI<8P%{>w zIDiz2v5q~Av936bF((oq-blOhR%!Q8Zj3rpG==}{hAsx#~An=Q+%BL|4C6>SILi`z7(#50WO%IYA52H4|C(I%O z9PyBaa|Oxd1^kUgQny%;R1-`E*qhOza&zJ0enc6;5>c69{f}@>&KTg36nnZC5(kep z!?@#930qmQn~DL)69On=Nc)bKFwS&9EUo$%QF!!&i6(mCZ{chZ=1V!u!EX&pBt$;R z4m%c5vo@^8YFzaRGLuHf``HGVLI8!l#}L_~cNns`|42s)*O9`3ei5XXO=Tp0DTJ5i z9kWh9awGT^!<$3v?=mrxd2;kG|B;I`b5?} zkS_;I9Uq^?c`|x^AFyfah+r6^J3AT{9oCpCe4$+71z1$QJSKsn^_M>*7+NoUhC-CC zCh+>WOoE!zcU4)K;u~P?@;V!9LEGa9hJa$MC>NWpo+#VNBXy)RE~936V))C~glm(4 zq&QpFfO-H=xGsCdhec|)0d+9;RlRux!^T@49ZoiZDi%>rHVt=pAiFv}tC0kwNpM4+ zn%01N^S$j<1OrDV)J+#V>c<#)kj-`=D&vw8(e$*^b1zV}_+|S32h=O0>U<{Ym%{5f zHrtLSDSw;x2ZL7H=SLwI+M>4nR(z~+P58*uPc@}q~>A8EYPH5a! zt5wH&qN)bxSE<%rjh1yDKR34Zt0N|OLzmQ3qslp~{+i$9mZNb!lnluVHRiY8{^T7V zN0kbA&6~VWujw*eNlCU%tByPN@OLArkRX0JC)JZr4Z;;Eh}bqJFj?PCMrmzK&g7G%YLdulmEWoZfWw$+u(k=jMb&! zlqkG##l}8^3B(c-5k=1e4`b>41uqZrTL6Y^y zt_?JX#b_@fL}YC0IAtDmX8-f2y_NjX)4#dt<*@Sv54~Lj+nzbKz5u-+uG60S)lG)K zwsSMpL&b2OGA8p?Lf=AHWYpTPzJ8oLFxL6pbL^b1`lZ1iv-E$&b8_ig^Wg*$;G z>SN*tCt5cB*`}OoH|DF#-_U7tB_c*robuKeN#onv$gh|OC8)^l^7@RhJJ0;Zl{YDx zfi@Kr-&Qw1tA8y?Gx3S1+6-rR1(I^%PbIdgUxI;yqJEBR=~?UaGn4e)j_R586;Bpl zzNA$r`gHBBS&EbNg4lEGmifK4XZ#mBPgTwnt~g4iDQ!G_dZ$tJ%I^Ms!jbNgN~tL1 PUjTaN47G~R+J^rNu=Y9e literal 0 HcmV?d00001 diff --git a/projects/music-player/script.js b/projects/music-player/script.js new file mode 100644 index 0000000..c037a17 --- /dev/null +++ b/projects/music-player/script.js @@ -0,0 +1,90 @@ +const playlist = [ + { title: "Song 1", src: "songs/song1.m4a" }, + { title: "Song 2", src: "songs/song2.m4a" }, + { title: "Song 3", src: "songs/song3.m4a" }, +]; + +const links = document.querySelectorAll(".playlist__item a"); + +links.forEach((link) => { + link.addEventListener("click", function (e) { + e.preventDefault(); + const source = this.getAttribute("data-src"); + document.querySelector("#player").setAttribute("src", source); + playSong(); + + // Remove active class from all links + links.forEach((link) => { + link.classList.remove("active-song"); + }); + + // Add active class to clicked link + this.classList.add("active-song"); + }); +}); + +function playSong() { + const player = document.querySelector("#player"); + const playButton = document.querySelector(".player__button--play"); + const pauseButton = document.querySelector(".player__button--pause"); + const progressBar = document.querySelector(".player__progress-bar"); + + if (player.paused) { + player.play(); + playButton.classList.remove("active"); + pauseButton.classList.add("active"); + } else { + player.pause(); + playButton.classList.add("active"); + pauseButton.classList.remove("active"); + } + + player.addEventListener("timeupdate", function () { + const progress = (player.currentTime / player.duration) * 100; + progressBar.style.width = `${progress}%`; + }); + + progressBar.addEventListener("click", function (e) { + const progressWidth = this.offsetWidth; + const clickedWidth = e.offsetX; + const percent = (clickedWidth / progressWidth) * 100; + player.currentTime = (player.duration / 100) * percent; + progressBar.style.width = `${percent}%`; + }); +} + +function playFirstSong() { + const firstSong = playlist[0].src; + document.querySelector("#player").setAttribute("src", firstSong); + playSong(); +} + +const playButton = document.querySelector(".player__button--play"); +const pauseButton = document.querySelector(".player__button--pause"); + +playButton.addEventListener("click", function () { + const player = document.querySelector("#player"); + player.play(); + playButton.classList.remove("active"); + pauseButton.classList.add("active"); +}); + +pauseButton.addEventListener("click", function () { + const player = document.querySelector("#player"); + player.pause(); + playButton.classList.add("active"); + pauseButton.classList.remove("active"); +}); + +const player = document.querySelector("#player"); +player.addEventListener("play", function () { + playButton.classList.remove("active"); + pauseButton.classList.add("active"); +}); + +player.addEventListener("pause", function () { + playButton.classList.add("active"); + pauseButton.classList.remove("active"); +}); + +playFirstSong(); diff --git a/projects/music-player/songs/song1.m4a b/projects/music-player/songs/song1.m4a new file mode 100644 index 0000000000000000000000000000000000000000..90842b1d0445c791b491934f29af5010008bebd4 GIT binary patch literal 401133 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 rXQk0*cuyS1S7ZO4f8Fa-W>c^3S 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®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 literal 0 HcmV?d00001 diff --git a/projects/music-player/songs/song2.m4a b/projects/music-player/songs/song2.m4a new file mode 100644 index 0000000000000000000000000000000000000000..13c7c3d87b95ff23367ce6aabbd6f36b705afcab GIT binary patch literal 401133 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 YOl0ez8!#azc$tt2Hb4m};dajd0W&qUWdHyG literal 0 HcmV?d00001 diff --git a/projects/music-player/songs/song3.m4a b/projects/music-player/songs/song3.m4a new file mode 100644 index 0000000000000000000000000000000000000000..02ba7a4b6dded7f0f208b3f26240cc6c4ff4467c GIT binary patch literal 377289 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 R;% + + + Stopwatch + + + +
00:00:00
+
+ + + +
+ + + diff --git a/projects/simple-stopwatch/stopwatch.js b/projects/simple-stopwatch/stopwatch.js new file mode 100644 index 0000000..df0d14a --- /dev/null +++ b/projects/simple-stopwatch/stopwatch.js @@ -0,0 +1,78 @@ +// Get references to the timer and button elements +var timer = document.getElementById("timer"); +var startButton = document.getElementById("start"); +var stopButton = document.getElementById("stop"); +var resetButton = document.getElementById("reset"); + +// Initialize variables for tracking the start time, elapsed time, and timer interval +var startTime, + elapsedTime = 0, + timerInterval; + +// Function to start the timer +function startTimer() { + // Calculate the start time by subtracting the elapsed time from the current time + startTime = Date.now() - elapsedTime; + + // Start an interval that updates the timer display every 10 milliseconds + timerInterval = setInterval(function printTime() { + // Calculate the elapsed time by subtracting the start time from the current time + elapsedTime = Date.now() - startTime; + + // Update the timer display with the formatted elapsed time + timer.textContent = formatTime(elapsedTime); + }, 10); + + // Disable the start button and enable the stop button + startButton.disabled = true; + stopButton.disabled = false; +} + +// Function to stop the timer +function stopTimer() { + // Clear the interval that updates the timer display + clearInterval(timerInterval); + + // Enable the start button and disable the stop button + startButton.disabled = false; + stopButton.disabled = true; +} + +// Function to reset the timer +function resetTimer() { + // Clear the interval that updates the timer display + clearInterval(timerInterval); + + // Reset the elapsed time to 0 and update the timer display + elapsedTime = 0; + timer.textContent = "00:00:00"; + + // Enable the start button and disable the stop button + startButton.disabled = false; + stopButton.disabled = true; +} + +// Function to format the elapsed time as a string +function formatTime(time) { + var hours = Math.floor(time / (1000 * 60 * 60)); + var minutes = Math.floor((time % (1000 * 60 * 60)) / (1000 * 60)); + var seconds = Math.floor((time % (1000 * 60)) / 1000); + var milliseconds = Math.floor((time % 1000) / 10); + // The ternary operator hours ? (hours > 9 ? hours : "0" + hours) : "00" checks if the hours variable has a value greater than zero. If it does, it checks if it is greater than 9. If it is, it returns the value of hours. If it is less than or equal to 9, it adds a leading zero to the hours value and returns it. If hours is zero, it returns the string "00". + + // The same logic is applied to format the minutes and seconds values. + return ( + (hours ? (hours > 9 ? hours : "0" + hours) : "00") + + ":" + + (minutes ? (minutes > 9 ? minutes : "0" + minutes) : "00") + + ":" + + (seconds ? (seconds > 9 ? seconds : "0" + seconds) : "00") + + "." + + (milliseconds > 9 ? milliseconds : "0" + milliseconds) + ); +} + +// Add event listeners to the button elements to trigger the timer functions +startButton.addEventListener("click", startTimer); +stopButton.addEventListener("click", stopTimer); +resetButton.addEventListener("click", resetTimer); diff --git a/projects/simple-stopwatch/style.css b/projects/simple-stopwatch/style.css new file mode 100644 index 0000000..f1a4e31 --- /dev/null +++ b/projects/simple-stopwatch/style.css @@ -0,0 +1,56 @@ +body { + background-color: #f0f0f0; + font-family: "Poppins", sans-serif; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + height: 100vh; + overflow: hidden; +} + +#timer { + font-size: 7rem; + font-weight: 700; + color: #f92672; + text-shadow: 2px 2px #f8a5c2; + /* In the current code, the value 2px 2px #f8a5c2 sets a shadow that is 2 pixels to the right and 2 pixels down of the text, with a blur radius of 0 (no blur), and a color of #f8a5c2. */ + width: 600px; + text-align: center; + margin: 40px auto; +} + +#buttons { + display: flex; + justify-content: center; +} + +button { + background-color: #f92672; + color: white; + border: none; + border-radius: 30px; + font-size: 2rem; + font-weight: bold; + padding: 1.5rem 4rem; + /* In the current code, the value 1.5rem 4rem sets a padding of 1.5rem (24px) for the top and bottom sides of the buttons, and 4rem (64px) for the left and right sides of the buttons. */ + margin: 1rem; + cursor: pointer; + transition: background-color 0.2s; + box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.3); +} + +button:hover { + background-color: #f44583; + box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.5); +} + +button:active { + background-color: #f34282; + box-shadow: none; +} + +button[disabled] { + opacity: 0.5; + cursor: default; +} From d464c78ce257eefe24f2746dd6ead420107a0baa Mon Sep 17 00:00:00 2001 From: Sahandgha Date: Mon, 6 Mar 2023 08:16:47 +0700 Subject: [PATCH 04/23] update image search app project --- projects/image-search-app/index.html | 51 ++++++-- projects/image-search-app/index.js | 54 ++++++++ projects/image-search-app/style.css | 183 ++++++++++----------------- 3 files changed, 163 insertions(+), 125 deletions(-) create mode 100644 projects/image-search-app/index.js diff --git a/projects/image-search-app/index.html b/projects/image-search-app/index.html index 92e769d..47214ed 100644 --- a/projects/image-search-app/index.html +++ b/projects/image-search-app/index.html @@ -2,27 +2,56 @@ - Unsplash Image Search App + + + Image Search App

Image Search App

-
+ - +
-
+
- - - + + diff --git a/projects/image-search-app/index.js b/projects/image-search-app/index.js new file mode 100644 index 0000000..87a94e1 --- /dev/null +++ b/projects/image-search-app/index.js @@ -0,0 +1,54 @@ +const accessKey = "RZEIOVfPhS7vMLkFdd2TSKGFBS4o9_FmcV1Nje3FSjw"; + +const formEl = document.querySelector("form"); +const searchInputEl = document.getElementById("search-input"); +const searchResultsEl = document.querySelector(".search-results"); +const showMoreButtonEl = document.getElementById("show-more-button"); + +let inputData = ""; +let page = 1; + +async function searchImages() { + inputData = searchInputEl.value; + const url = `https://api.unsplash.com/search/photos?page=${page}&query=${inputData}&client_id=${accessKey}`; + + const response = await fetch(url); + const data = await response.json(); + if (page === 1) { + searchResultsEl.innerHTML = ""; + } + + const results = data.results; + + results.map((result) => { + const imageWrapper = document.createElement("div"); + imageWrapper.classList.add("search-result"); + const image = document.createElement("img"); + image.src = result.urls.small; + image.alt = result.alt_description; + const imageLink = document.createElement("a"); + imageLink.href = result.links.html; + imageLink.target = "_blank"; + imageLink.textContent = result.alt_description; + + imageWrapper.appendChild(image); + imageWrapper.appendChild(imageLink); + searchResultsEl.appendChild(imageWrapper); + }); + + page++; + + if (page > 1) { + showMoreButtonEl.style.display = "block"; + } +} + +formEl.addEventListener("submit", (event) => { + event.preventDefault(); + page = 1; + searchImages(); +}); + +showMoreButtonEl.addEventListener("click", () => { + searchImages(); +}); diff --git a/projects/image-search-app/style.css b/projects/image-search-app/style.css index 07fc2e5..875a68a 100644 --- a/projects/image-search-app/style.css +++ b/projects/image-search-app/style.css @@ -1,170 +1,125 @@ body { - background-color: #f9f9f9; /* Sets the background color of the body element to a light gray */ - font-family: Arial, sans-serif; /* Sets the font family of the text inside the body to Arial or a generic sans-serif font */ - font-size: 16px; /* Sets the font size of the text inside the body to 16 pixels */ - line-height: 1.6; /* Sets the line height of the text inside the body to 1.6 times the font size */ - color: #333; /* Sets the color of the text inside the body to a dark gray */ + background-color: #f9f9f9; + font-family: Arial, Helvetica, sans-serif; + line-height: 1.6; + margin: 0; } h1 { - font-size: 36px; /* Sets the font size of the h1 heading to 36 pixels */ - font-weight: bold; /* Makes the h1 heading bold */ - text-align: center; /* Centers the h1 heading horizontally within its container */ - margin-top: 40px; /* Adds a top margin of 40 pixels to the h1 heading */ - margin-bottom: 60px; /* Adds a bottom margin of 60 pixels to the h1 heading */ + font-size: 36px; + font-weight: bold; + text-align: center; + margin-top: 40px; + margin-bottom: 60px; } -#search-form { - display: flex; /* Set the display property of the element to flex */ - justify-content: center; /* Center the child elements horizontally */ - align-items: center; /* Center the child elements vertically */ - margin-bottom: 60px; /* Add a bottom margin of 60 pixels to the element */ +form { + display: flex; + justify-content: center; + align-items: center; + margin-bottom: 60px; } #search-input { - width: 60%; /* Set the width of the element to 60% of its container */ - max-width: 400px; /* Set the maximum width of the element to 400 pixels */ - padding: 10px 20px; /* Add 10 pixels of padding to the top and bottom and 20 pixels of padding to the left and right of the element */ - border: none; /* Remove the border from the element */ - border-radius: 5px; /* Add a 5-pixel radius to the element's border corners */ - box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.2); /* Add a 5-pixel box shadow to the element */ - font-size: 18px; /* Set the font size of the element to 18 pixels */ - color: #333; /* Set the text color of the element to #333 */ + width: 60%; + max-width: 400px; + padding: 10px 20px; + border: none; + box-shadow: 0 0 5px rgba(0, 0, 0, 0.2); + border-radius: 5px; + font-size: 18px; + color: #333; } #search-button { - padding: 10px 20px; /* Sets the padding of the button */ - background-color: #4caf50; /* Sets the background color of the button */ - color: white; /* Sets the text color of the button */ - font-size: 18px; /* Sets the font size of the button text */ - border: none; /* Removes the border of the button */ - border-radius: 5px; /* Sets the border radius of the button */ - box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.2); /* Sets the box shadow of the button */ - cursor: pointer; /* Changes the cursor to pointer when hovering over the button */ - transition: background-color 0.3s ease-in-out; /* Sets the transition effect when the background color changes */ + padding: 10px 20px; + background-color: #4caf50; + color: white; + border: none; + font-size: 18px; + box-shadow: 0 0 5px rgba(0, 0, 0, 0.2); + cursor: pointer; + border-radius: 5px; + transition: background-color 0.3s ease-in-out; } #search-button:hover { - background-color: #3e8e41; /* Changes the background color when hovering over the button */ + background-color: #3e8e41; } -#search-results { - display: flex; /* sets the display type of the element to flex*/ - flex-wrap: wrap; /* allows the flex items to wrap to multiple lines*/ - justify-content: space-between; /* aligns the flex items along the main axis with equal spacing between them*/ - margin: 0 auto; /* sets the top and bottom margins to 0 and the left and right margins to auto*/ - max-width: 1200px; /* sets the maximum width of the element to 1200 pixels*/ +.search-results { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + max-width: 1200px; + margin: 0 auto; + padding: 20px; } -/* Sets the styles for an individual search result element */ .search-result { - /* Adds 60px margin to the bottom of each search result element */ margin-bottom: 60px; - - /* Sets the width of the search result element to 30% of the parent container */ width: 30%; - - /* Adds rounded corners to the search result element */ border-radius: 5px; - - /* Adds a box shadow to the search result element */ - box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.2); - - /* Hides any content that overflows the search result element */ + box-shadow: 0 0 5px rgba(0, 0, 0, 0.2); overflow: hidden; } +.search-result:hover img { + transform: scale(1.05); +} + .search-result img { - /* Sets the width of the image to 100% of its container element */ width: 100%; - - /* Sets the height of the image to 200 pixels */ height: 200px; - - /* Determines how the image should be resized to cover its container without distorting its aspect ratio */ object-fit: cover; - - /* Specifies that any changes to the transform property of the image should be transitioned over a duration of 0.3 seconds with an easing function */ transition: transform 0.3s ease-in-out; } - -.search-result:hover img { - transform: scale(1.05); - /* The transform property scales the image by 1.05, making it 5% larger than its original size. This creates a zoom effect when the user hovers over the image. */ -} - .search-result a { - display: block; /* sets the display type to block */ - padding: 10px; /* adds padding to the top and bottom of the element */ - color: #333; /* sets the text color to dark gray */ - text-decoration: none; /* removes any text decoration */ - transition: background-color 0.3s ease-in-out; /* sets a transition effect when the background color changes */ + padding: 10px; + display: block; + color: #333; + text-decoration: none; + transition: background-color 0.3s ease-in-out; } -.search-result a:hover { - background-color: rgba( - 0, - 0, - 0, - 0.1 - ); /* changes the background color to a light gray when the element is hovered over */ +.search-result:hover a { + background-color: rgba(0, 0, 0, 0.1); } #show-more-button { - background-color: #008cba; /* Sets the background color of the button to a shade of blue */ - border: none; /* Removes the border around the button */ - color: white; /* Sets the font color of the button text to white */ - padding: 10px 20px; /* Sets the padding of the button to 10px on the top and bottom, and 20px on the left and right */ - text-align: center; /* Centers the button text horizontally */ - text-decoration: none; /* Removes any text decoration such as underlining */ - display: inline-block; /* Displays the button as an inline-level block container */ - font-size: 16px; /* Sets the font size of the button text to 16px */ - border-radius: 5px; /* Rounds the corners of the button to 5px */ - margin-top: 20px; /* Adds a 20px margin on the top of the button */ - transition: background-color 0.3s ease; /* Specifies a transition effect for the background color when hovering over the button */ - display: none; /* Hides the button */ - margin: 0 auto; /* Centers the button horizontally */ - margin-bottom: 40px; /* Adds a 40px margin on the bottom of the button */ - cursor: pointer; /* Sets the cursor to a pointer when hovering over the button */ + background-color: #008cba; + border: none; + color: white; + padding: 10px 20px; + display: block; + margin: 20px auto; + text-align: center; + border-radius: 5px; + cursor: pointer; + transition: background-color 0.3s ease-in-out; + display: none; } #show-more-button:hover { - background-color: #0077b5; /* Changes the background color of the button to a darker shade of blue when hovering over it */ + background-color: #0077b5; } -/* This is a CSS media query, which applies different styles based on the size of the screen. - -The first media query applies when the screen width is a maximum of 768px. In this case, it changes the justify-content property of #search-results to center the search results horizontally. It also changes the width of .search-result to 45%. - -The second media query applies when the screen width is a maximum of 480px. In this case, it changes the flex-direction property of #search-form to column, which stacks the search input and button vertically. It also adds a margin bottom to #search-input and changes the width of .search-result to 100%, making each search result take up the full width of the screen. */ - -/* The following styles will apply when the screen size is 768px or smaller */ @media screen and (max-width: 768px) { - /* Centers the search result items */ - #search-results { - justify-content: center; - } - - /* Decreases the width of each search result item */ .search-result { width: 45%; } } - -/* The following styles will apply when the screen size is 480px or smaller */ @media screen and (max-width: 480px) { - /* Changes the direction of the search form to be vertical */ - #search-form { + .search-result { + width: 100%; + } + + form { flex-direction: column; } - /* Adds margin to the bottom of the search input */ #search-input { margin-bottom: 20px; - } - - /* Makes each search result item full width */ - .search-result { - width: 100%; + width: 85%; } } From 55fd9ba11128e1f1b19ba2eb4acdf882e5100572 Mon Sep 17 00:00:00 2001 From: Sahandgha Date: Wed, 8 Mar 2023 06:22:15 +0700 Subject: [PATCH 05/23] update basic calculator project --- projects/basic-calculator/index.html | 61 +++++++++-------- projects/basic-calculator/index.js | 29 ++++++++ projects/basic-calculator/style.css | 98 ++++++++++++---------------- 3 files changed, 103 insertions(+), 85 deletions(-) create mode 100644 projects/basic-calculator/index.js diff --git a/projects/basic-calculator/index.html b/projects/basic-calculator/index.html index f9cf785..432ea60 100644 --- a/projects/basic-calculator/index.html +++ b/projects/basic-calculator/index.html @@ -1,32 +1,35 @@ - - - Simple Calculator - - - + + + + + + Basic Calculator + + +
-

-
- - - - - - - - - - - - - - - - - -
+ +
+ + + + + + + + + + + + + + + + + +
- - - + + + \ No newline at end of file diff --git a/projects/basic-calculator/index.js b/projects/basic-calculator/index.js new file mode 100644 index 0000000..40fa6e8 --- /dev/null +++ b/projects/basic-calculator/index.js @@ -0,0 +1,29 @@ +const buttonsEl = document.querySelectorAll("button"); + +const inputFieldEl = document.getElementById("result"); + +for (let i = 0; i < buttonsEl.length; i++) { + buttonsEl[i].addEventListener("click", () => { + const buttonValue = buttonsEl[i].textContent; + if (buttonValue === "C") { + clearResult(); + } else if (buttonValue === "=") { + calculateResult(); + } else { + appendValue(buttonValue); + } + }); +} + +function clearResult() { + inputFieldEl.value = ""; +} + +function calculateResult() { + inputFieldEl.value = eval(inputFieldEl.value); +} + +function appendValue(buttonValue) { + inputFieldEl.value += buttonValue; + // inputFieldEl.value = inputFieldEl.value + buttonValue; +} diff --git a/projects/basic-calculator/style.css b/projects/basic-calculator/style.css index dbf9d16..baf4abd 100644 --- a/projects/basic-calculator/style.css +++ b/projects/basic-calculator/style.css @@ -1,82 +1,68 @@ * { box-sizing: border-box; + margin: 0; } -/* By setting box-sizing: border-box on all elements, we are ensuring that any padding or border we add to an element will be included in its total size. */ - .calculator { + background-color: #f2f2f2; + padding: 20px; max-width: 400px; margin: 0 auto; - margin-top: 30px; - padding: 20px; - background-color: #f2f2f2; - border: 1px solid #ccc; - border-radius: 5px; + border: solid 1px #ccc; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3); -} - -#result { - width: 100%; - padding: 10px; - font-size: 24px; - border: none; border-radius: 5px; - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3) inset; - - /* In this case, the box-shadow property is set to 0 2px 5px rgba(0, 0, 0, 0.3) inset. This means that the shadow will have no horizontal offset (0), a vertical offset of 2px, a blur radius of 5px, and a color of rgba(0, 0, 0, 0.3). The inset keyword is used to specify that the shadow should be an inset shadow, rather than an outset shadow. */ + margin-top: 40px; } -.buttons { - display: grid; - grid-template-columns: repeat(4, 1fr); - /* grid-template-columns: repeat(4, 1fr) is a CSS property that sets the size of each column in a grid container. In this case, the repeat(4, 1fr) value creates a grid with four equal-sized columns. - -The fr unit stands for "fractional unit" and is used to divide the available space in a grid container. In this case, each column takes up an equal fraction of the available space, regardless of the size of the container. - -So, with grid-template-columns: repeat(4, 1fr), the grid container will be divided into four equal-sized columns, which is what we want for our calculator layout. */ - grid-gap: 10px; - margin-top: 20px; +#result{ + width: 100%; + padding: 10px; + font-size: 24px; + border: none; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3) inset; + border-radius: 5px; } -button { - padding: 10px; - font-size: 24px; - border: none; - border-radius: 5px; - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3); - cursor: pointer; - transition: background-color 0.3s ease; +.buttons{ + display: grid; + grid-template-columns: repeat(4, 1fr); + grid-gap: 10px; + margin-top: 20px; } -button:hover { - background-color: #ddd; -} +button{ + padding: 10px; + font-size: 24px; + border: none; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3); + border-radius: 5px; + cursor: pointer; + transition: background-color 0.3s ease; -.clear { - background-color: #ff4136; - color: #fff; } -.operator { - background-color: #0074d9; - color: #fff; +button:hover{ + background-color: #ddd; } -.number { - background-color: #fff; - color: #333; +.clear{ + background-color: #ff4136; + color: #fff; } -.equals { - grid-row: span 3; - /* grid-row: span 3; is a CSS property that sets the number of rows an element spans in a CSS grid container. +.number, .decimal{ + background-color: #fff; + color: #333; -In this case, span 3 is used to make the element span three rows in the grid container. */ - background-color: #01ff70; - color: #fff; } -.decimal { - background-color: #fff; - color: #333; +.operator{ + background-color: #0074d9; + color: #fff; } + +.equals{ + background-color: #01ff70; + grid-row: span 3; + color: #fff; +} \ No newline at end of file From d3c6e3cd7298a19708f63513d404b20e4bd4df6b Mon Sep 17 00:00:00 2001 From: Sahand Ghavidel Date: Fri, 10 Mar 2023 14:12:23 +0700 Subject: [PATCH 06/23] Update README.md --- README.md | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 0f57702..e54352e 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,15 @@ -# HTML-CSS-JavaScript-projects-for-beginners - -This is the source code of the YouTube video (10 projects) https://www.youtube.com/watch?v=ePzOFu2xXUQ. - -Part 2 (16 projects) : https://youtu.be/EWv2jnhZErc - -NEW HTML CSS JavaScript Projects Interesting HTML CSS JavaScript projects Learn HTML, CSS, and JavaScript 2021 to create modern websites. Fun learning HTML, CSS, and JavaScript! - -I'm Sahand, a web developer in computer science. I've been doing this for over a decade. This course was created to share my knowledge and experience with you. Build simple websites using HTML, CSS, and JavaScript. Responsive web design employs HTML, CSS, and JavaScript. This is a skill you'll learn in this course. This new course teaches students how to install Visual Studio Code and its extensions. Then we start from scratch with each project. After finishing HTML, it's on to CSS and JavaScript. Building in HTML, CSS, or JavaScript is fine. This guide explains HTML, CSS, and JavaScript syntax. - -Every project is started from scratch and finished without using copied code. Then they are used on the project to ensure everyone understands. This program's exciting project-based curriculum includes building modern, super cool, and responsive websites! Let's get started learning HTML, CSS, and JavaScript. - -Contact me if you have any questions through my twitter: @codewithsahand. +#
50 HTML CSS JavaScript Projects + +This is the source code of the Udemy course: 50 HTML CSS JavaScript Projects +
+ Visit 100jsprojects.com to preview the projects. + +
+
+

About

+

Hi there! I'm Sahand, a web developer with over a decade of experience. This course, "50 HTML CSS JavaScript Projects," was created to share my knowledge and experience with you. In this course, you'll learn how to build simple, responsive websites using HTML, CSS, and JavaScript.

+

In this course, you'll learn how to install Visual Studio Code and its extensions, and then we'll start from scratch with each project. After finishing HTML, we'll move on to CSS and JavaScript. Building in HTML, CSS, or JavaScript is fine, and this guide will explain HTML, CSS, and JavaScript syntax.

+

Each project in this course is started from scratch and finished without using copied code. Then, we'll go over the code together to ensure that everyone understands. This program's exciting project-based curriculum includes building modern, super cool, and responsive websites!

+

If you have any questions, please feel free to contact me through my Twitter: @codewithsahand.

+ Visit my website +
From ce561ee048ed7f436a0cd0110fdae0e4ab708232 Mon Sep 17 00:00:00 2001 From: Sahandgha Date: Thu, 16 Mar 2023 10:53:15 +0700 Subject: [PATCH 07/23] update and clean files --- projects/basic-calculator/script.js | 35 ---------- projects/image-search-app/app.js | 70 ------------------- projects/new-year-countdown/index.html | 2 +- projects/new-year-countdown/index.js | 2 +- .../{Q&A-section => q-and-a-section}/app.js | 0 .../index.html | 0 .../styles.css | 0 7 files changed, 2 insertions(+), 107 deletions(-) delete mode 100644 projects/basic-calculator/script.js delete mode 100644 projects/image-search-app/app.js rename projects/{Q&A-section => q-and-a-section}/app.js (100%) rename projects/{Q&A-section => q-and-a-section}/index.html (100%) rename projects/{Q&A-section => q-and-a-section}/styles.css (100%) diff --git a/projects/basic-calculator/script.js b/projects/basic-calculator/script.js deleted file mode 100644 index c898ec4..0000000 --- a/projects/basic-calculator/script.js +++ /dev/null @@ -1,35 +0,0 @@ -const resultField = document.getElementById("result"); -const buttons = document.querySelectorAll("button"); - -for (let i = 0; i < buttons.length; i++) { - const button = buttons[i]; - button.addEventListener("click", function () { - const buttonValue = button.textContent; - if (buttonValue === "C") { - clearResult(); - } else if (buttonValue === "=") { - calculate(); - } else { - appendValue(buttonValue); - } - }); -} - -function appendValue(val) { - resultField.value += val; -} - -function clearResult() { - resultField.value = ""; -} - -function calculate() { - const expression = resultField.value; - const result = eval(expression); - // In JavaScript, eval() is a built-in function that evaluates a string as if it were a JavaScript code and returns the result. It can be used to dynamically evaluate expressions or code that is generated at runtime. - - // In the context of a calculator, eval() can be used to evaluate the arithmetic expression entered by the user and return the result. - - // For example, if the user enters the expression "2 + 3 * 4", eval("2 + 3 * 4") will return 14, which is the result of evaluating the expression. - resultField.value = result; -} diff --git a/projects/image-search-app/app.js b/projects/image-search-app/app.js deleted file mode 100644 index e342813..0000000 --- a/projects/image-search-app/app.js +++ /dev/null @@ -1,70 +0,0 @@ -// Set the access key for the Unsplash API -const accessKey = "3I7M0FgMDBz0BC9OMC4e4wi9ByTMXZYt0Rk4fQ15TKs"; - -// Get elements from the HTML document using their IDs -const searchForm = document.getElementById("search-form"); -const searchInput = document.getElementById("search-input"); -const searchResults = document.getElementById("search-results"); -const showMoreButton = document.getElementById("show-more-button"); - -// Initialize variables -let page = 1; -let query = ""; - -// Create an asynchronous function to search for images -async function searchImages() { - // Set the query value to the input value from the search form - query = searchInput.value; - // Create the URL for the Unsplash API with the page number, query, and access key - const url = `https://api.unsplash.com/search/photos?page=${page}&query=${query}&client_id=${accessKey}`; - // Send a request to the API and wait for the response - const response = await fetch(url); - // Parse the response data as JSON - const data = await response.json(); - // Get the results array from the response data - const results = data.results; - - // If this is the first page of results, clear the search results div - if (page === 1) { - searchResults.innerHTML = ""; - } - - // Loop through each result and create a div with an image and link for each one - results.forEach((result) => { - const imageWrapper = document.createElement("div"); - imageWrapper.classList.add("search-result"); - - const image = document.createElement("img"); - image.src = result.urls.small; - image.alt = result.alt_description; - - const imageLink = document.createElement("a"); - imageLink.href = result.links.html; - imageLink.target = "_blank"; - imageLink.textContent = result.alt_description; - - imageWrapper.appendChild(image); - imageWrapper.appendChild(imageLink); - searchResults.appendChild(imageWrapper); - }); - - // Increment the page number for the next search - page++; - - // Show the "show more" button if there are more than one page of results - if (page > 1) { - showMoreButton.style.display = "block"; - } -} - -// Listen for a submit event on the search form, prevent the default action, and search for images -searchForm.addEventListener("submit", (event) => { - event.preventDefault(); - page = 1; - searchImages(); -}); - -// Listen for a click event on the "show more" button and search for more images -showMoreButton.addEventListener("click", () => { - searchImages(); -}); diff --git a/projects/new-year-countdown/index.html b/projects/new-year-countdown/index.html index c4c0578..3638291 100644 --- a/projects/new-year-countdown/index.html +++ b/projects/new-year-countdown/index.html @@ -9,7 +9,7 @@

Countdown to New Year

-
2022
+
2024
00
00
diff --git a/projects/new-year-countdown/index.js b/projects/new-year-countdown/index.js index 1a89f36..3ee8cd0 100644 --- a/projects/new-year-countdown/index.js +++ b/projects/new-year-countdown/index.js @@ -3,7 +3,7 @@ const hourEl = document.getElementById("hour"); const minuteEl = document.getElementById("minute"); const secondEl = document.getElementById("second"); -const newYearTime = new Date("Jan 1, 2022 00:00:00").getTime(); +const newYearTime = new Date("Jan 1, 2024 00:00:00").getTime(); updateCountdown(); diff --git a/projects/Q&A-section/app.js b/projects/q-and-a-section/app.js similarity index 100% rename from projects/Q&A-section/app.js rename to projects/q-and-a-section/app.js diff --git a/projects/Q&A-section/index.html b/projects/q-and-a-section/index.html similarity index 100% rename from projects/Q&A-section/index.html rename to projects/q-and-a-section/index.html diff --git a/projects/Q&A-section/styles.css b/projects/q-and-a-section/styles.css similarity index 100% rename from projects/Q&A-section/styles.css rename to projects/q-and-a-section/styles.css From e62d1612cced50fd90ddb8083119370e5aa72a54 Mon Sep 17 00:00:00 2001 From: Sahandgha Date: Thu, 16 Mar 2023 10:56:48 +0700 Subject: [PATCH 08/23] clean files 2 --- projects/Navbar-project/index.html | 34 ----------------- projects/navbar/index.html | 38 +++++++++++++++++++ projects/{Navbar-project => navbar}/index.js | 0 projects/{Navbar-project => navbar}/logo.svg | 0 .../{Navbar-project => navbar}/styles.css | 0 .../{Sidebar-project => sidebar}/index.html | 0 .../{Sidebar-project => sidebar}/index.js | 0 .../{Sidebar-project => sidebar}/logo.svg | 0 .../{Sidebar-project => sidebar}/styles.css | 0 9 files changed, 38 insertions(+), 34 deletions(-) delete mode 100644 projects/Navbar-project/index.html create mode 100644 projects/navbar/index.html rename projects/{Navbar-project => navbar}/index.js (100%) rename projects/{Navbar-project => navbar}/logo.svg (100%) rename projects/{Navbar-project => navbar}/styles.css (100%) rename projects/{Sidebar-project => sidebar}/index.html (100%) rename projects/{Sidebar-project => sidebar}/index.js (100%) rename projects/{Sidebar-project => sidebar}/logo.svg (100%) rename projects/{Sidebar-project => sidebar}/styles.css (100%) diff --git a/projects/Navbar-project/index.html b/projects/Navbar-project/index.html deleted file mode 100644 index 4975da5..0000000 --- a/projects/Navbar-project/index.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - Sahand Ghavidel - - - - - - - - \ No newline at end of file diff --git a/projects/navbar/index.html b/projects/navbar/index.html new file mode 100644 index 0000000..78fd71b --- /dev/null +++ b/projects/navbar/index.html @@ -0,0 +1,38 @@ + + + + + + + Navbar project + + + + + + + + diff --git a/projects/Navbar-project/index.js b/projects/navbar/index.js similarity index 100% rename from projects/Navbar-project/index.js rename to projects/navbar/index.js diff --git a/projects/Navbar-project/logo.svg b/projects/navbar/logo.svg similarity index 100% rename from projects/Navbar-project/logo.svg rename to projects/navbar/logo.svg diff --git a/projects/Navbar-project/styles.css b/projects/navbar/styles.css similarity index 100% rename from projects/Navbar-project/styles.css rename to projects/navbar/styles.css diff --git a/projects/Sidebar-project/index.html b/projects/sidebar/index.html similarity index 100% rename from projects/Sidebar-project/index.html rename to projects/sidebar/index.html diff --git a/projects/Sidebar-project/index.js b/projects/sidebar/index.js similarity index 100% rename from projects/Sidebar-project/index.js rename to projects/sidebar/index.js diff --git a/projects/Sidebar-project/logo.svg b/projects/sidebar/logo.svg similarity index 100% rename from projects/Sidebar-project/logo.svg rename to projects/sidebar/logo.svg diff --git a/projects/Sidebar-project/styles.css b/projects/sidebar/styles.css similarity index 100% rename from projects/Sidebar-project/styles.css rename to projects/sidebar/styles.css From f04e0e3acfb7b2ecf5a58c4f7445432e0d0e3814 Mon Sep 17 00:00:00 2001 From: Sahandgha Date: Thu, 16 Mar 2023 10:58:02 +0700 Subject: [PATCH 09/23] update folder name --- .../background-video.mp4 | Bin .../index.html | 0 .../index.js | 0 .../preloader.gif | Bin .../styles.css | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename projects/{background-video-project => background-video}/background-video.mp4 (100%) rename projects/{background-video-project => background-video}/index.html (100%) rename projects/{background-video-project => background-video}/index.js (100%) rename projects/{background-video-project => background-video}/preloader.gif (100%) rename projects/{background-video-project => background-video}/styles.css (100%) diff --git a/projects/background-video-project/background-video.mp4 b/projects/background-video/background-video.mp4 similarity index 100% rename from projects/background-video-project/background-video.mp4 rename to projects/background-video/background-video.mp4 diff --git a/projects/background-video-project/index.html b/projects/background-video/index.html similarity index 100% rename from projects/background-video-project/index.html rename to projects/background-video/index.html diff --git a/projects/background-video-project/index.js b/projects/background-video/index.js similarity index 100% rename from projects/background-video-project/index.js rename to projects/background-video/index.js diff --git a/projects/background-video-project/preloader.gif b/projects/background-video/preloader.gif similarity index 100% rename from projects/background-video-project/preloader.gif rename to projects/background-video/preloader.gif diff --git a/projects/background-video-project/styles.css b/projects/background-video/styles.css similarity index 100% rename from projects/background-video-project/styles.css rename to projects/background-video/styles.css From 61d4cf2ce5b5525a4cb3dea0ed6b9f8be7079d84 Mon Sep 17 00:00:00 2001 From: Sahandgha Date: Thu, 23 Mar 2023 06:20:56 +0700 Subject: [PATCH 10/23] update stopwatch project --- projects/simple-stopwatch/style.css | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/projects/simple-stopwatch/style.css b/projects/simple-stopwatch/style.css index f1a4e31..bea5522 100644 --- a/projects/simple-stopwatch/style.css +++ b/projects/simple-stopwatch/style.css @@ -54,3 +54,24 @@ button[disabled] { opacity: 0.5; cursor: default; } + +/* add media query */ + +@media (max-width: 800px) { + #timer { + font-size: 4rem; + width: 350px; + } + + button { + font-size: 1.5rem; + padding: 1rem 2rem; + } + +} + + + + +/* add media query for tablet size */ + From 3ff1ee95a8894bdef8f6526ee485f8812474e85e Mon Sep 17 00:00:00 2001 From: Sahandgha Date: Fri, 24 Mar 2023 06:24:51 +0700 Subject: [PATCH 11/23] update stopwatch project --- projects/simple-stopwatch/index.html | 16 ---- projects/simple-stopwatch/stopwatch.js | 78 ------------------- projects/stopwatch/index.html | 20 +++++ projects/stopwatch/index.js | 54 +++++++++++++ .../{simple-stopwatch => stopwatch}/style.css | 26 ++----- 5 files changed, 79 insertions(+), 115 deletions(-) delete mode 100644 projects/simple-stopwatch/index.html delete mode 100644 projects/simple-stopwatch/stopwatch.js create mode 100644 projects/stopwatch/index.html create mode 100644 projects/stopwatch/index.js rename projects/{simple-stopwatch => stopwatch}/style.css (62%) diff --git a/projects/simple-stopwatch/index.html b/projects/simple-stopwatch/index.html deleted file mode 100644 index d61ac22..0000000 --- a/projects/simple-stopwatch/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - Stopwatch - - - -
00:00:00
-
- - - -
- - - diff --git a/projects/simple-stopwatch/stopwatch.js b/projects/simple-stopwatch/stopwatch.js deleted file mode 100644 index df0d14a..0000000 --- a/projects/simple-stopwatch/stopwatch.js +++ /dev/null @@ -1,78 +0,0 @@ -// Get references to the timer and button elements -var timer = document.getElementById("timer"); -var startButton = document.getElementById("start"); -var stopButton = document.getElementById("stop"); -var resetButton = document.getElementById("reset"); - -// Initialize variables for tracking the start time, elapsed time, and timer interval -var startTime, - elapsedTime = 0, - timerInterval; - -// Function to start the timer -function startTimer() { - // Calculate the start time by subtracting the elapsed time from the current time - startTime = Date.now() - elapsedTime; - - // Start an interval that updates the timer display every 10 milliseconds - timerInterval = setInterval(function printTime() { - // Calculate the elapsed time by subtracting the start time from the current time - elapsedTime = Date.now() - startTime; - - // Update the timer display with the formatted elapsed time - timer.textContent = formatTime(elapsedTime); - }, 10); - - // Disable the start button and enable the stop button - startButton.disabled = true; - stopButton.disabled = false; -} - -// Function to stop the timer -function stopTimer() { - // Clear the interval that updates the timer display - clearInterval(timerInterval); - - // Enable the start button and disable the stop button - startButton.disabled = false; - stopButton.disabled = true; -} - -// Function to reset the timer -function resetTimer() { - // Clear the interval that updates the timer display - clearInterval(timerInterval); - - // Reset the elapsed time to 0 and update the timer display - elapsedTime = 0; - timer.textContent = "00:00:00"; - - // Enable the start button and disable the stop button - startButton.disabled = false; - stopButton.disabled = true; -} - -// Function to format the elapsed time as a string -function formatTime(time) { - var hours = Math.floor(time / (1000 * 60 * 60)); - var minutes = Math.floor((time % (1000 * 60 * 60)) / (1000 * 60)); - var seconds = Math.floor((time % (1000 * 60)) / 1000); - var milliseconds = Math.floor((time % 1000) / 10); - // The ternary operator hours ? (hours > 9 ? hours : "0" + hours) : "00" checks if the hours variable has a value greater than zero. If it does, it checks if it is greater than 9. If it is, it returns the value of hours. If it is less than or equal to 9, it adds a leading zero to the hours value and returns it. If hours is zero, it returns the string "00". - - // The same logic is applied to format the minutes and seconds values. - return ( - (hours ? (hours > 9 ? hours : "0" + hours) : "00") + - ":" + - (minutes ? (minutes > 9 ? minutes : "0" + minutes) : "00") + - ":" + - (seconds ? (seconds > 9 ? seconds : "0" + seconds) : "00") + - "." + - (milliseconds > 9 ? milliseconds : "0" + milliseconds) - ); -} - -// Add event listeners to the button elements to trigger the timer functions -startButton.addEventListener("click", startTimer); -stopButton.addEventListener("click", stopTimer); -resetButton.addEventListener("click", resetTimer); diff --git a/projects/stopwatch/index.html b/projects/stopwatch/index.html new file mode 100644 index 0000000..05d8b2b --- /dev/null +++ b/projects/stopwatch/index.html @@ -0,0 +1,20 @@ + + + + + + + Stopwatch + + + + +
00:00:00
+
+ + + +
+ + + \ No newline at end of file diff --git a/projects/stopwatch/index.js b/projects/stopwatch/index.js new file mode 100644 index 0000000..0cbd647 --- /dev/null +++ b/projects/stopwatch/index.js @@ -0,0 +1,54 @@ +const timerEl = document.getElementById("timer"); +const startButtonEl = document.getElementById("start"); +const stopButtonEl = document.getElementById("stop"); +const resetButtonEl = document.getElementById("reset"); + +let startTime = 0; +let elapsedTime = 0; +let timerInterval; + +function startTimer() { + startTime = Date.now() - elapsedTime; + + timerInterval = setInterval(() => { + elapsedTime = Date.now() - startTime; + timerEl.textContent = formatTime(elapsedTime); + }, 10); + + startButtonEl.disabled = true; + stopButtonEl.disabled = false; +} + +function formatTime(elapsedTime) { + const milliseconds = Math.floor((elapsedTime % 1000) / 10); + const seconds = Math.floor((elapsedTime % (1000 * 60)) / 1000); + const minutes = Math.floor((elapsedTime % (1000 * 60 * 60)) / (1000 * 60)); + const hours = Math.floor(elapsedTime / (1000 * 60 * 60)); + return ( + (hours ? (hours > 9 ? hours : "0" + hours) : "00") + + ":" + + (minutes ? (minutes > 9 ? minutes : "0" + minutes) : "00") + + ":" + + (seconds ? (seconds > 9 ? seconds : "0" + seconds) : "00") + + "." + + (milliseconds > 9 ? milliseconds : "0" + milliseconds) + ); +} +function stopTimer() { + clearInterval(timerInterval); + startButtonEl.disabled = false; + stopButtonEl.disabled = true; +} +function resetTimer() { + clearInterval(timerInterval); + + elapsedTime = 0; + timerEl.textContent = "00:00:00"; + + startButtonEl.disabled = false; + stopButtonEl.disabled = true; +} + +startButtonEl.addEventListener("click", startTimer); +stopButtonEl.addEventListener("click", stopTimer); +resetButtonEl.addEventListener("click", resetTimer); diff --git a/projects/simple-stopwatch/style.css b/projects/stopwatch/style.css similarity index 62% rename from projects/simple-stopwatch/style.css rename to projects/stopwatch/style.css index bea5522..cf0859d 100644 --- a/projects/simple-stopwatch/style.css +++ b/projects/stopwatch/style.css @@ -4,17 +4,16 @@ body { display: flex; flex-direction: column; justify-content: center; - align-items: center; - height: 100vh; + min-height: 100vh; overflow: hidden; + align-items: center; } #timer { font-size: 7rem; font-weight: 700; - color: #f92672; text-shadow: 2px 2px #f8a5c2; - /* In the current code, the value 2px 2px #f8a5c2 sets a shadow that is 2 pixels to the right and 2 pixels down of the text, with a blur radius of 0 (no blur), and a color of #f8a5c2. */ + color: #f92672; width: 600px; text-align: center; margin: 40px auto; @@ -29,15 +28,14 @@ button { background-color: #f92672; color: white; border: none; - border-radius: 30px; font-size: 2rem; font-weight: bold; padding: 1.5rem 4rem; - /* In the current code, the value 1.5rem 4rem sets a padding of 1.5rem (24px) for the top and bottom sides of the buttons, and 4rem (64px) for the left and right sides of the buttons. */ margin: 1rem; + border-radius: 30px; cursor: pointer; - transition: background-color 0.2s; box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.3); + transition: all 0.2s; } button:hover { @@ -45,18 +43,11 @@ button:hover { box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.5); } -button:active { - background-color: #f34282; - box-shadow: none; -} - button[disabled] { opacity: 0.5; cursor: default; } -/* add media query */ - @media (max-width: 800px) { #timer { font-size: 4rem; @@ -67,11 +58,4 @@ button[disabled] { font-size: 1.5rem; padding: 1rem 2rem; } - } - - - - -/* add media query for tablet size */ - From 051f5a567b3b1f15b9bdcf63064391fcd96e438a Mon Sep 17 00:00:00 2001 From: Sahandgha Date: Fri, 24 Mar 2023 06:42:33 +0700 Subject: [PATCH 12/23] update double landing page projects --- projects/double-landing-page/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/double-landing-page/style.css b/projects/double-landing-page/style.css index 5a62c04..0d37d66 100644 --- a/projects/double-landing-page/style.css +++ b/projects/double-landing-page/style.css @@ -11,7 +11,7 @@ body { h1 { font-size: 100px; color: aliceblue; - backdrop-filter: brightness(0.5); + background-color: rgba(0, 0, 0, 0.3); letter-spacing: 4px; } From 0c0e315a232d39f5c68ae549c22090148c135f62 Mon Sep 17 00:00:00 2001 From: Sahandgha Date: Sat, 25 Mar 2023 05:33:17 +0700 Subject: [PATCH 13/23] add rock paper scissors game and pomodoro timer projects --- projects/pomodoro-timer/index.html | 19 +++++ projects/pomodoro-timer/index.js | 47 ++++++++++++ projects/pomodoro-timer/style.css | 62 ++++++++++++++++ projects/rock-paper-scissors-game/index.html | 27 +++++++ projects/rock-paper-scissors-game/index.js | 44 ++++++++++++ projects/rock-paper-scissors-game/style.css | 75 ++++++++++++++++++++ 6 files changed, 274 insertions(+) create mode 100644 projects/pomodoro-timer/index.html create mode 100644 projects/pomodoro-timer/index.js create mode 100644 projects/pomodoro-timer/style.css create mode 100644 projects/rock-paper-scissors-game/index.html create mode 100644 projects/rock-paper-scissors-game/index.js create mode 100644 projects/rock-paper-scissors-game/style.css diff --git a/projects/pomodoro-timer/index.html b/projects/pomodoro-timer/index.html new file mode 100644 index 0000000..39dfbb7 --- /dev/null +++ b/projects/pomodoro-timer/index.html @@ -0,0 +1,19 @@ + + + + Pomodoro Timer + + + +
+

Pomodoro Timer

+

25:00

+
+ + + +
+
+ + + diff --git a/projects/pomodoro-timer/index.js b/projects/pomodoro-timer/index.js new file mode 100644 index 0000000..af8598e --- /dev/null +++ b/projects/pomodoro-timer/index.js @@ -0,0 +1,47 @@ +const startEl = document.getElementById("start"); +const stopEl = document.getElementById("stop"); +const resetEl = document.getElementById("reset"); +const timerEl = document.getElementById("timer"); + +let intervalId; +let timeLeft = 1500; // 25 minutes in seconds + +function updateTimer() { + let minutes = Math.floor(timeLeft / 60); + let seconds = timeLeft % 60; + let formattedTime = `${minutes.toString().padStart(2, "0")}:${seconds + .toString() + .padStart(2, "0")}`; + // padStart() is a built-in method in JavaScript that allows you to pad a string with another string until it reaches a specified length. It's often used to format strings to a specific length, such as adding leading zeros to a number. + // const str = '7'; + // const paddedStr = str.padStart(2, '0'); + + // console.log(paddedStr); // Output: '07' + + timerEl.innerHTML = formattedTime; +} + +function startTimer() { + intervalId = setInterval(() => { + timeLeft--; + updateTimer(); + if (timeLeft === 0) { + clearInterval(intervalId); + alert("Time's up!"); + } + }, 1000); +} + +function stopTimer() { + clearInterval(intervalId); +} + +function resetTimer() { + clearInterval(intervalId); + timeLeft = 1500; + updateTimer(); +} + +startEl.addEventListener("click", startTimer); +stopEl.addEventListener("click", stopTimer); +resetEl.addEventListener("click", resetTimer); diff --git a/projects/pomodoro-timer/style.css b/projects/pomodoro-timer/style.css new file mode 100644 index 0000000..8583f8f --- /dev/null +++ b/projects/pomodoro-timer/style.css @@ -0,0 +1,62 @@ +/* Pomodoro Timer styles */ + +.container { + font-family: "Roboto", Arial, Helvetica, sans-serif; + margin: 0 auto; + max-width: 400px; + padding: 20px; + text-align: center; +} + +.title { + font-size: 36px; + margin-bottom: 10px; + color: #2c3e50; +} + +.timer { + font-size: 72px; + color: #2c3e50; +} + +.button-wrapper { + display: flex; + justify-content: center; +} + +.button { + border: none; + border-radius: 4px; + color: #fff; + font-size: 18px; + font-weight: bold; + margin-right: 10px; + padding: 10px 20px; + text-transform: uppercase; + transition: all 0.2s; + cursor: pointer; +} + +.button--start { + background-color: #27ae60; +} + +.button--start:hover { + background-color: #229954; +} + +.button--stop { + background-color: #c0392b; +} + +.button--stop:hover { + background-color: #a93226; +} + +.button--reset { + background-color: #7f8c8d; +} + +.button--reset:hover { + background-color: #6c7a7d; +} diff --git a/projects/rock-paper-scissors-game/index.html b/projects/rock-paper-scissors-game/index.html new file mode 100644 index 0000000..d736e45 --- /dev/null +++ b/projects/rock-paper-scissors-game/index.html @@ -0,0 +1,27 @@ + + + + Rock Paper Scissors + + + + + +

Rock Paper Scissors Game

+

Choose your move:

+
+ + + + + +
+

+

+ Your score: 0 Computer's score: + 0 +

+ + + + diff --git a/projects/rock-paper-scissors-game/index.js b/projects/rock-paper-scissors-game/index.js new file mode 100644 index 0000000..e003110 --- /dev/null +++ b/projects/rock-paper-scissors-game/index.js @@ -0,0 +1,44 @@ +const buttons = document.querySelectorAll("button"); +let playerScore = 0; +let computerScore = 0; + +buttons.forEach((button) => { + button.addEventListener("click", () => { + playRound(button.id, computerPlay()); + }); +}); + +function computerPlay() { + const choices = ["rock", "paper", "scissors"]; + return choices[Math.floor(Math.random() * choices.length)]; +} + +function playRound(playerSelection, computerSelection) { + if (playerSelection === computerSelection) { + document.getElementById("result").textContent = "Tie game!"; + } else if ( + (playerSelection === "rock" && computerSelection === "scissors") || + (playerSelection === "paper" && computerSelection === "rock") || + (playerSelection === "scissors" && computerSelection === "paper") + ) { + playerScore++; + document.getElementById( + "result" + ).textContent = `You win! ${playerSelection} beats ${computerSelection}`; + } else { + computerScore++; + document.getElementById( + "result" + ).textContent = `You lose! ${computerSelection} beats ${playerSelection}`; + } + updateScore(); +} + +function updateScore() { + document.getElementById( + "player-score" + ).textContent = `Your score: ${playerScore}`; + document.getElementById( + "computer-score" + ).textContent = `Computer's score: ${computerScore}`; +} diff --git a/projects/rock-paper-scissors-game/style.css b/projects/rock-paper-scissors-game/style.css new file mode 100644 index 0000000..8962ff0 --- /dev/null +++ b/projects/rock-paper-scissors-game/style.css @@ -0,0 +1,75 @@ +* { + box-sizing: border-box; +} + +body { + background-color: #f1f1f1; + font-family: Arial, sans-serif; + margin: 0; + padding: 0; +} + +h1 { + font-size: 2rem; + text-align: center; + padding-top: 100px; +} + +p { + font-size: 1.2rem; + margin-bottom: 0.5rem; + text-align: center; +} + +.buttons { + display: flex; + justify-content: center; +} + +button { + border: none; + border-radius: 5px; + color: white; + cursor: pointer; + font-size: 3rem; + margin: 0 0.5rem; + padding: 0.5rem; + transition: all 0.3s ease-in-out; +} + +button:hover { + opacity: 0.7; +} + +#rock { + background-color: #f44336; /* Red */ +} + +#paper { + background-color: #2196f3; /* Blue */ +} + +#scissors { + background-color: #4caf50; /* Green */ +} + +#result { + font-size: 1.5rem; + font-weight: bold; + margin: 1rem 0; +} + +#scores { + font-size: 1.2rem; + font-weight: bold; + text-align: center; +} + +#player-score { + color: #4caf50; + margin-right: 0.5rem; +} + +#computer-score { + color: #f44336; +} From 07a16873b84779a27b0dad8d78148b1aded64f18 Mon Sep 17 00:00:00 2001 From: Sahandgha Date: Sat, 25 Mar 2023 13:44:14 +0700 Subject: [PATCH 14/23] update Rock Paper Scissors Game project --- projects/rock-paper-scissors-game/index.html | 34 ++++++++-------- projects/rock-paper-scissors-game/index.js | 36 ++++++++--------- projects/rock-paper-scissors-game/style.css | 41 ++++++-------------- 3 files changed, 45 insertions(+), 66 deletions(-) diff --git a/projects/rock-paper-scissors-game/index.html b/projects/rock-paper-scissors-game/index.html index d736e45..c458606 100644 --- a/projects/rock-paper-scissors-game/index.html +++ b/projects/rock-paper-scissors-game/index.html @@ -1,27 +1,25 @@ - - - Rock Paper Scissors - - - - - + + + + + + Rock Paper Scissors Game + + +

Rock Paper Scissors Game

Choose your move:

- - - - - + + +

- Your score: 0 Computer's score: - 0 + Your score: 0 + Computer score: 0

- - - + + \ No newline at end of file diff --git a/projects/rock-paper-scissors-game/index.js b/projects/rock-paper-scissors-game/index.js index e003110..4944f3e 100644 --- a/projects/rock-paper-scissors-game/index.js +++ b/projects/rock-paper-scissors-game/index.js @@ -1,44 +1,42 @@ const buttons = document.querySelectorAll("button"); + +const resultEl = document.getElementById("result"); + +const playerScoreEl = document.getElementById("user-score"); + +const computerScoreEl = document.getElementById("computer-score"); + let playerScore = 0; let computerScore = 0; buttons.forEach((button) => { button.addEventListener("click", () => { - playRound(button.id, computerPlay()); + const result = playRound(button.id, computerPlay()); + resultEl.textContent = result; + }); }); function computerPlay() { const choices = ["rock", "paper", "scissors"]; - return choices[Math.floor(Math.random() * choices.length)]; + const randomChoice = Math.floor(Math.random() * choices.length); + return choices[randomChoice]; } function playRound(playerSelection, computerSelection) { if (playerSelection === computerSelection) { - document.getElementById("result").textContent = "Tie game!"; + return "It's a tie!"; } else if ( (playerSelection === "rock" && computerSelection === "scissors") || (playerSelection === "paper" && computerSelection === "rock") || (playerSelection === "scissors" && computerSelection === "paper") ) { playerScore++; - document.getElementById( - "result" - ).textContent = `You win! ${playerSelection} beats ${computerSelection}`; + playerScoreEl.textContent = playerScore; + return "You win! " + playerSelection + " beats " + computerSelection; } else { computerScore++; - document.getElementById( - "result" - ).textContent = `You lose! ${computerSelection} beats ${playerSelection}`; + computerScoreEl.textContent = computerScore; + return "You lose! " + computerSelection + " beats " + playerSelection; } - updateScore(); -} - -function updateScore() { - document.getElementById( - "player-score" - ).textContent = `Your score: ${playerScore}`; - document.getElementById( - "computer-score" - ).textContent = `Computer's score: ${computerScore}`; } diff --git a/projects/rock-paper-scissors-game/style.css b/projects/rock-paper-scissors-game/style.css index 8962ff0..940eff4 100644 --- a/projects/rock-paper-scissors-game/style.css +++ b/projects/rock-paper-scissors-game/style.css @@ -1,10 +1,6 @@ -* { - box-sizing: border-box; -} - body { background-color: #f1f1f1; - font-family: Arial, sans-serif; + font-family: "Arial", sans-serif; margin: 0; padding: 0; } @@ -16,9 +12,10 @@ h1 { } p { - font-size: 1.2rem; - margin-bottom: 0.5rem; + font-size: 1.5rem; + font-weight: 600; text-align: center; + margin-bottom: 0.5rem; } .buttons { @@ -28,12 +25,11 @@ p { button { border: none; - border-radius: 5px; - color: white; - cursor: pointer; font-size: 3rem; margin: 0 0.5rem; padding: 0.5rem; + cursor: pointer; + border-radius: 5px; transition: all 0.3s ease-in-out; } @@ -42,34 +38,21 @@ button:hover { } #rock { - background-color: #f44336; /* Red */ + background-color: #ff0000; } #paper { - background-color: #2196f3; /* Blue */ + background-color: #2196f3; } #scissors { - background-color: #4caf50; /* Green */ -} - -#result { - font-size: 1.5rem; - font-weight: bold; - margin: 1rem 0; -} - -#scores { - font-size: 1.2rem; - font-weight: bold; - text-align: center; + background-color: #4caf50; } -#player-score { - color: #4caf50; - margin-right: 0.5rem; +#user-score { + color: #2196f3; } #computer-score { - color: #f44336; + color: #ff0000; } From dfb834e9d2d33469623af5e9b860685d0fc7fa53 Mon Sep 17 00:00:00 2001 From: Sahandgha Date: Sun, 26 Mar 2023 14:44:28 +0700 Subject: [PATCH 15/23] update pomodoro timer project --- projects/pomodoro-timer/index.html | 31 ++++++++++---------- projects/pomodoro-timer/index.js | 21 ++++++-------- projects/pomodoro-timer/style.css | 45 ++++++++++-------------------- 3 files changed, 40 insertions(+), 57 deletions(-) diff --git a/projects/pomodoro-timer/index.html b/projects/pomodoro-timer/index.html index 39dfbb7..7cfe584 100644 --- a/projects/pomodoro-timer/index.html +++ b/projects/pomodoro-timer/index.html @@ -1,19 +1,22 @@ - - + + + + + Pomodoro Timer - - - + + +
-

Pomodoro Timer

-

25:00

-
- - - -
+

Pomodoro Timer

+

25:00

+
+ + + +
- - + + \ No newline at end of file diff --git a/projects/pomodoro-timer/index.js b/projects/pomodoro-timer/index.js index af8598e..22b4ede 100644 --- a/projects/pomodoro-timer/index.js +++ b/projects/pomodoro-timer/index.js @@ -3,8 +3,8 @@ const stopEl = document.getElementById("stop"); const resetEl = document.getElementById("reset"); const timerEl = document.getElementById("timer"); -let intervalId; -let timeLeft = 1500; // 25 minutes in seconds +let interval; +let timeLeft = 1500; function updateTimer() { let minutes = Math.floor(timeLeft / 60); @@ -12,32 +12,27 @@ function updateTimer() { let formattedTime = `${minutes.toString().padStart(2, "0")}:${seconds .toString() .padStart(2, "0")}`; - // padStart() is a built-in method in JavaScript that allows you to pad a string with another string until it reaches a specified length. It's often used to format strings to a specific length, such as adding leading zeros to a number. - // const str = '7'; - // const paddedStr = str.padStart(2, '0'); - - // console.log(paddedStr); // Output: '07' timerEl.innerHTML = formattedTime; } function startTimer() { - intervalId = setInterval(() => { + interval = setInterval(() => { timeLeft--; updateTimer(); if (timeLeft === 0) { - clearInterval(intervalId); + clearInterval(interval); alert("Time's up!"); + timeLeft = 1500; + updateTimer(); } }, 1000); } - function stopTimer() { - clearInterval(intervalId); + clearInterval(interval); } - function resetTimer() { - clearInterval(intervalId); + clearInterval(interval); timeLeft = 1500; updateTimer(); } diff --git a/projects/pomodoro-timer/style.css b/projects/pomodoro-timer/style.css index 8583f8f..0e6970b 100644 --- a/projects/pomodoro-timer/style.css +++ b/projects/pomodoro-timer/style.css @@ -1,11 +1,9 @@ -/* Pomodoro Timer styles */ - .container { - font-family: "Roboto", Arial, Helvetica, sans-serif; margin: 0 auto; max-width: 400px; - padding: 20px; text-align: center; + padding: 20px; + font-family: "Roboto", sans-serif; } .title { @@ -19,44 +17,31 @@ color: #2c3e50; } -.button-wrapper { - display: flex; - justify-content: center; -} +button { + font-size: 18px; + padding: 10px 20px; + margin: 10px; + color: white; -.button { border: none; border-radius: 4px; - color: #fff; - font-size: 18px; - font-weight: bold; - margin-right: 10px; - padding: 10px 20px; - text-transform: uppercase; - transition: all 0.2s; cursor: pointer; + text-transform: uppercase; + transition: opacity 0.3s ease-in-out; } -.button--start { - background-color: #27ae60; +button:hover { + opacity: 0.7; } -.button--start:hover { - background-color: #229954; +#start { + background-color: #27ae60; } -.button--stop { +#stop { background-color: #c0392b; } -.button--stop:hover { - background-color: #a93226; -} - -.button--reset { +#reset { background-color: #7f8c8d; } - -.button--reset:hover { - background-color: #6c7a7d; -} From 26176999fd74b2b2ed11231ccf9f4991c7374655 Mon Sep 17 00:00:00 2001 From: Sahandgha Date: Mon, 27 Mar 2023 21:21:39 +0700 Subject: [PATCH 16/23] add 2 new projects --- projects/dice-roll-simulator/dice-roll.js | 50 +++++++++++ projects/dice-roll-simulator/index.html | 18 ++++ projects/dice-roll-simulator/style.css | 71 +++++++++++++++ projects/recipe-book-app/index.html | 23 +++++ projects/recipe-book-app/index.js | 48 ++++++++++ projects/recipe-book-app/style.css | 101 ++++++++++++++++++++++ 6 files changed, 311 insertions(+) create mode 100644 projects/dice-roll-simulator/dice-roll.js create mode 100644 projects/dice-roll-simulator/index.html create mode 100644 projects/dice-roll-simulator/style.css create mode 100644 projects/recipe-book-app/index.html create mode 100644 projects/recipe-book-app/index.js create mode 100644 projects/recipe-book-app/style.css diff --git a/projects/dice-roll-simulator/dice-roll.js b/projects/dice-roll-simulator/dice-roll.js new file mode 100644 index 0000000..6e161a8 --- /dev/null +++ b/projects/dice-roll-simulator/dice-roll.js @@ -0,0 +1,50 @@ +const diceElement = document.getElementById("dice"); +const rollButton = document.getElementById("roll-button"); +const rollHistory = document.getElementById("roll-history"); +let historyList = []; + +function rollDice() { + const rollResult = Math.floor(Math.random() * 6) + 1; + const diceFace = getDiceFace(rollResult); + diceElement.textContent = diceFace; + historyList.push(rollResult); + updateRollHistory(); +} + +function getDiceFace(rollResult) { + switch (rollResult) { + case 1: + return "⚀"; + case 2: + return "⚁"; + case 3: + return "⚂"; + case 4: + return "⚃"; + case 5: + return "⚄"; + case 6: + return "⚅"; + default: + return ""; + } +} + +function updateRollHistory() { + rollHistory.innerHTML = ""; + for (let i = 0; i < historyList.length; i++) { + const listItem = document.createElement("li"); + listItem.innerHTML = `Roll ${i + 1}: ${getDiceFace( + historyList[i] + )}`; + rollHistory.appendChild(listItem); + } +} + +rollButton.addEventListener("click", () => { + diceElement.classList.add("roll-animation"); + setTimeout(() => { + diceElement.classList.remove("roll-animation"); + rollDice(); + }, 1000); +}); diff --git a/projects/dice-roll-simulator/index.html b/projects/dice-roll-simulator/index.html new file mode 100644 index 0000000..d88b92d --- /dev/null +++ b/projects/dice-roll-simulator/index.html @@ -0,0 +1,18 @@ + + + + Dice Roll Simulator + + + +

Dice Roll Simulator

+
+ +
    +
  • Roll 1:
  • +
  • Roll 2:
  • +
+ + + + diff --git a/projects/dice-roll-simulator/style.css b/projects/dice-roll-simulator/style.css new file mode 100644 index 0000000..841de74 --- /dev/null +++ b/projects/dice-roll-simulator/style.css @@ -0,0 +1,71 @@ +body { + font-family: "Open Sans", sans-serif; + text-align: center; + margin: 0; +} + +h1 { + font-size: 3rem; + margin-top: 2rem; +} + +.dice { + font-size: 7rem; + margin: 5px; + animation-duration: 1s; + animation-fill-mode: forwards; +} + +.roll-animation { + animation-name: roll; +} + +@keyframes roll { + 0% { + transform: rotateY(0deg) rotateX(0deg); + } + 100% { + transform: rotateY(720deg) rotateX(720deg); + } +} + +button { + background-color: #47a5c4; + color: white; + font-size: 1.5rem; + border: none; + padding: 1rem 2rem; + margin: 5px; + border-radius: 1rem; + cursor: pointer; + transition: background-color 0.3s ease; +} + +button:hover { + background-color: #2e8baf; +} + +ul { + list-style: none; + padding: 0; + margin: 2rem; + max-width: 600px; + margin: 0 auto; +} + +li { + font-size: 1.5rem; + padding: 0.5rem; + margin: 0.5rem; + background-color: #f2f2f2; + border-radius: 0.5rem; + box-shadow: 0 2px 2px rgba(0, 0, 0, 0.3); + display: flex; + justify-content: space-between; + align-items: center; +} + +li span { + font-size: 3rem; + margin-right: 1rem; +} diff --git a/projects/recipe-book-app/index.html b/projects/recipe-book-app/index.html new file mode 100644 index 0000000..6cc0f1d --- /dev/null +++ b/projects/recipe-book-app/index.html @@ -0,0 +1,23 @@ + + + + + Recipe Book + + + + +
+

Recipe Book

+
+ +
+
    +
    + + + + diff --git a/projects/recipe-book-app/index.js b/projects/recipe-book-app/index.js new file mode 100644 index 0000000..7fcf11a --- /dev/null +++ b/projects/recipe-book-app/index.js @@ -0,0 +1,48 @@ +const API_KEY = "275d58779ccf4e22af03e792e8819fff"; + +// Call the API and retrieve a list of recipes +const recipeList = document.getElementById("recipe-list"); + +async function getRecipes() { + const response = await fetch( + `https://api.spoonacular.com/recipes/random?number=10&apiKey=${API_KEY}` + ); + const data = await response.json(); + return data.recipes; +} + +function displayRecipes(recipes) { + recipeList.innerHTML = ""; + recipes.forEach((recipe) => { + const recipeItem = document.createElement("li"); + recipeItem.classList.add("recipe-item"); + const recipeImage = document.createElement("img"); + recipeImage.src = recipe.image; + + const recipeTitle = document.createElement("h2"); + recipeTitle.innerText = recipe.title; + + const recipeIngredients = document.createElement("p"); + recipeIngredients.innerHTML = `Ingredients: ${recipe.extendedIngredients + .map((ingredient) => ingredient.original) + .join(", ")}`; + + const recipeLink = document.createElement("a"); + recipeLink.href = recipe.sourceUrl; + recipeLink.innerText = "View Recipe"; + + recipeItem.appendChild(recipeImage); + recipeItem.appendChild(recipeTitle); + recipeItem.appendChild(recipeIngredients); + recipeItem.appendChild(recipeLink); + + recipeList.appendChild(recipeItem); + }); +} + +async function init() { + const recipes = await getRecipes(); + displayRecipes(recipes); +} + +init(); diff --git a/projects/recipe-book-app/style.css b/projects/recipe-book-app/style.css new file mode 100644 index 0000000..d1405d5 --- /dev/null +++ b/projects/recipe-book-app/style.css @@ -0,0 +1,101 @@ +body { + margin: 0; + padding: 0; + font-family: Arial, sans-serif; +} + +header { + background-color: #0c2461; + color: #fff; + padding: 20px; + text-align: center; +} + +h1 { + margin: 0; + font-size: 36px; +} + +.container { + max-width: 1200px; + margin: 0 auto; + padding: 20px; +} + +.recipe-list { + list-style: none; + margin: 0; + padding: 0; +} + +.recipe-item { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 20px; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); + border-radius: 5px; + overflow: hidden; +} + +.recipe-item img { + width: 150px; + height: 150px; + object-fit: cover; +} + +.recipe-item h2 { + margin: 0; + font-size: 20px; + min-width: 200px; + padding: 10px; +} + +.recipe-item p { + margin: 0; + padding: 10px; +} + +.recipe-item a { + padding: 10px; + background-color: #0c2461; + color: #fff; + text-align: center; + text-decoration: none; + transition: background-color 0.2s ease-in-out; + min-width: 150px; +} + +.recipe-item a:hover { + background-color: #1e3799; +} + +@media only screen and (max-width: 800px) { + .container { + max-width: 90%; + } + + .recipe-item { + flex-wrap: wrap; + } + + .recipe-item img { + width: 100%; + height: auto; + margin-bottom: 10px; + } + + .recipe-item h2 { + font-size: 20px; + padding: 0; + margin-bottom: 10px; + } + + .recipe-item p { + font-size: 14px; + margin-bottom: 10px; + } + .recipe-item a { + width: 100%; + } +} From 0643a11eb20d0b10e850047edd364cad54b089a4 Mon Sep 17 00:00:00 2001 From: Sahandgha Date: Tue, 28 Mar 2023 13:04:04 +0700 Subject: [PATCH 17/23] add 2 more projects --- projects/age-calculator/index.html | 21 ++++++++++ projects/age-calculator/index.js | 51 +++++++++++++++++++++++ projects/age-calculator/style.css | 67 ++++++++++++++++++++++++++++++ projects/tip-calculator/index.html | 24 +++++++++++ projects/tip-calculator/index.js | 11 +++++ projects/tip-calculator/style.css | 57 +++++++++++++++++++++++++ 6 files changed, 231 insertions(+) create mode 100644 projects/age-calculator/index.html create mode 100644 projects/age-calculator/index.js create mode 100644 projects/age-calculator/style.css create mode 100644 projects/tip-calculator/index.html create mode 100644 projects/tip-calculator/index.js create mode 100644 projects/tip-calculator/style.css diff --git a/projects/age-calculator/index.html b/projects/age-calculator/index.html new file mode 100644 index 0000000..dd793a3 --- /dev/null +++ b/projects/age-calculator/index.html @@ -0,0 +1,21 @@ + + + + + Age Calculator + + + +
    +

    Age Calculator

    +
    + + + +

    +
    +
    + + + + diff --git a/projects/age-calculator/index.js b/projects/age-calculator/index.js new file mode 100644 index 0000000..2d829c4 --- /dev/null +++ b/projects/age-calculator/index.js @@ -0,0 +1,51 @@ +// Get the elements from the DOM +const birthdayInput = document.getElementById("birthday"); +const calculateButton = document.getElementById("calculate"); +const resultElement = document.getElementById("result"); + +// Add click event listener to the calculate button +calculateButton.addEventListener("click", calculateAge); + +// Function to calculate the age + +function calculateAge() { + // Get the value from the input + const birthday = birthdayInput.value; + + // Check if the value is empty + if (birthday === "") { + // If the value is empty, show an alert + alert("Please enter your birthday"); + } else { + // If the value is not empty, calculate the age + const age = getAge(birthday); + + // Show the result + resultElement.innerHTML = `Your age is ${age} ${ + age > 1 ? "years" : "year" // Check if the age is more than 1 + } old`; + } +} + +// Function to calculate the age +function getAge(birthDay) { + // Get the current date + const currentDate = new Date(); + + // Get the birthday date + const birthdayDate = new Date(birthDay); + + // Calculate the age + const age = currentDate.getFullYear() - birthdayDate.getFullYear(); + + const month = currentDate.getMonth() - birthdayDate.getMonth(); + if ( + month < 0 || + (month === 0 && currentDate.getDate() < birthdayDate.getDate()) + ) { + age--; + } + + // Return the age + return age; +} diff --git a/projects/age-calculator/style.css b/projects/age-calculator/style.css new file mode 100644 index 0000000..88f0382 --- /dev/null +++ b/projects/age-calculator/style.css @@ -0,0 +1,67 @@ +/* General styles */ +body { + margin: 0; + padding: 20px; + font-family: "Montserrat", sans-serif; + font-size: 16px; + line-height: 1.5; + background-color: #f7f7f7; +} + +.container { + max-width: 600px; + margin: 0 auto; + padding: 20px; + background-color: #fff; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.2); + border-radius: 5px; +} + +h1 { + font-size: 36px; + text-align: center; + margin-top: 0; + margin-bottom: 20px; +} + +.form { + display: flex; + flex-direction: column; + align-items: center; +} + +label { + font-weight: bold; + margin-bottom: 10px; +} + +input[type="date"] { + padding: 8px; + border: 1px solid #ccc; + border-radius: 4px; + width: 100%; + max-width: 300px; + box-sizing: border-box; +} + +button { + background-color: #007bff; + color: #fff; + border: none; + padding: 10px 20px; + border-radius: 4px; + margin-top: 10px; + cursor: pointer; + transition: background-color 0.2s ease; +} + +button:hover { + background-color: #0062cc; +} + +#result { + margin-top: 20px; + font-size: 24px; + font-weight: bold; + text-align: center; +} diff --git a/projects/tip-calculator/index.html b/projects/tip-calculator/index.html new file mode 100644 index 0000000..aa0dc58 --- /dev/null +++ b/projects/tip-calculator/index.html @@ -0,0 +1,24 @@ + + + + Tip Calculator + + + +
    +

    Tip Calculator

    +

    Enter the bill amount and tip percentage to calculate the total.

    + + +
    + + +
    + +
    + + +
    + + + diff --git a/projects/tip-calculator/index.js b/projects/tip-calculator/index.js new file mode 100644 index 0000000..515b4de --- /dev/null +++ b/projects/tip-calculator/index.js @@ -0,0 +1,11 @@ +const calculateBtn = document.getElementById("calculate"); +const billInput = document.getElementById("bill"); +const tipInput = document.getElementById("tip"); +const totalSpan = document.getElementById("total"); + +calculateBtn.addEventListener("click", function () { + const bill = billInput.value; + const tip = tipInput.value; + const total = bill * (1 + tip / 100); + totalSpan.innerText = `$${total.toFixed(2)}`; +}); diff --git a/projects/tip-calculator/style.css b/projects/tip-calculator/style.css new file mode 100644 index 0000000..9db5f26 --- /dev/null +++ b/projects/tip-calculator/style.css @@ -0,0 +1,57 @@ +/* Set body styles */ +* { + box-sizing: border-box; +} + +body { + background-color: #f2f2f2; + font-family: "Helvetica Neue", sans-serif; +} + +/* Set container styles */ +.container { + margin: 100px auto; + max-width: 600px; + padding: 20px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); + background-color: #fff; + border-radius: 10px; +} + +/* Set heading styles */ +h1 { + margin-top: 0; + text-align: center; +} + +/* Set input styles */ +input[type="number"] { + padding: 10px; + border: 1px solid #ccc; + border-radius: 4px; + margin: 10px 0; + width: 100%; +} + +/* Set button styles */ +button { + background-color: #4caf50; + color: white; + padding: 10px; + border: none; + border-radius: 4px; + cursor: pointer; + margin: 10px 0; + width: 100%; +} + +button:hover { + background-color: #45a049; +} + +/* Set result styles */ +#total { + font-size: 24px; + font-weight: bold; + margin-top: 10px; +} From 6d61e9ce23b3ee95d4cc2b9d3233836d786fc558 Mon Sep 17 00:00:00 2001 From: Sahandgha Date: Wed, 29 Mar 2023 13:19:23 +0700 Subject: [PATCH 18/23] update roll dice simulator --- projects/dice-roll-simulator/index.html | 14 ++--- .../{dice-roll.js => index.js} | 51 ++++++++++--------- projects/dice-roll-simulator/style.css | 7 ++- 3 files changed, 38 insertions(+), 34 deletions(-) rename projects/dice-roll-simulator/{dice-roll.js => index.js} (54%) diff --git a/projects/dice-roll-simulator/index.html b/projects/dice-roll-simulator/index.html index d88b92d..edf81b5 100644 --- a/projects/dice-roll-simulator/index.html +++ b/projects/dice-roll-simulator/index.html @@ -1,18 +1,20 @@ - + + + + Dice Roll Simulator

    Dice Roll Simulator

    -
    +
      -
    • Roll 1:
    • -
    • Roll 2:
    • +
    - - + diff --git a/projects/dice-roll-simulator/dice-roll.js b/projects/dice-roll-simulator/index.js similarity index 54% rename from projects/dice-roll-simulator/dice-roll.js rename to projects/dice-roll-simulator/index.js index 6e161a8..8deecde 100644 --- a/projects/dice-roll-simulator/dice-roll.js +++ b/projects/dice-roll-simulator/index.js @@ -1,50 +1,53 @@ -const diceElement = document.getElementById("dice"); -const rollButton = document.getElementById("roll-button"); -const rollHistory = document.getElementById("roll-history"); +const buttonEl = document.getElementById("roll-button"); + +const diceEl = document.getElementById("dice"); + +const rollHistoryEl = document.getElementById("roll-history"); + let historyList = []; function rollDice() { const rollResult = Math.floor(Math.random() * 6) + 1; const diceFace = getDiceFace(rollResult); - diceElement.textContent = diceFace; + diceEl.innerHTML = diceFace; historyList.push(rollResult); updateRollHistory(); } +function updateRollHistory() { + rollHistoryEl.innerHTML = ""; + for (let i = 0; i < historyList.length; i++) { + const listItem = document.createElement("li"); + listItem.innerHTML = `Roll ${i + 1}: ${getDiceFace( + historyList[i] + )}`; + rollHistoryEl.appendChild(listItem); + } +} + function getDiceFace(rollResult) { switch (rollResult) { case 1: - return "⚀"; + return "⚀"; case 2: - return "⚁"; + return "⚁"; case 3: - return "⚂"; + return "⚂"; case 4: - return "⚃"; + return "⚃"; case 5: - return "⚄"; + return "⚄"; case 6: - return "⚅"; + return "⚅"; default: return ""; } } -function updateRollHistory() { - rollHistory.innerHTML = ""; - for (let i = 0; i < historyList.length; i++) { - const listItem = document.createElement("li"); - listItem.innerHTML = `Roll ${i + 1}: ${getDiceFace( - historyList[i] - )}`; - rollHistory.appendChild(listItem); - } -} - -rollButton.addEventListener("click", () => { - diceElement.classList.add("roll-animation"); +buttonEl.addEventListener("click", () => { + diceEl.classList.add("roll-animation"); setTimeout(() => { - diceElement.classList.remove("roll-animation"); + diceEl.classList.remove("roll-animation"); rollDice(); }, 1000); }); diff --git a/projects/dice-roll-simulator/style.css b/projects/dice-roll-simulator/style.css index 841de74..439ab24 100644 --- a/projects/dice-roll-simulator/style.css +++ b/projects/dice-roll-simulator/style.css @@ -24,6 +24,7 @@ h1 { 0% { transform: rotateY(0deg) rotateX(0deg); } + 100% { transform: rotateY(720deg) rotateX(720deg); } @@ -33,9 +34,8 @@ button { background-color: #47a5c4; color: white; font-size: 1.5rem; - border: none; padding: 1rem 2rem; - margin: 5px; + border: none; border-radius: 1rem; cursor: pointer; transition: background-color 0.3s ease; @@ -48,9 +48,8 @@ button:hover { ul { list-style: none; padding: 0; - margin: 2rem; max-width: 600px; - margin: 0 auto; + margin: 2rem auto; } li { From 0894ef2fb7758346a77213cb3033e65f80347b76 Mon Sep 17 00:00:00 2001 From: Sahandgha Date: Thu, 30 Mar 2023 11:04:46 +0700 Subject: [PATCH 19/23] update recipe book app --- projects/recipe-book-app/index.html | 43 +++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/projects/recipe-book-app/index.html b/projects/recipe-book-app/index.html index 6cc0f1d..81489f7 100644 --- a/projects/recipe-book-app/index.html +++ b/projects/recipe-book-app/index.html @@ -3,10 +3,6 @@ Recipe Book - @@ -15,7 +11,44 @@

    Recipe Book

    -
      +
        +
      • + Recipe 1 +

        Recipe 1

        +

        + Ingredients: Ingredient 1, Ingredient 2, Ingredient + 3 +

        + View Recipe +
      • +
      • + Recipe 2 +

        Recipe 2

        +

        + Ingredients: Ingredient 4, Ingredient 5, Ingredient + 6 +

        + View Recipe +
      • +
      • + Recipe 3 +

        Recipe 3

        +

        + Ingredients: Ingredient 7, Ingredient 8, Ingredient + 9 +

        + View Recipe +
      • +
      From cde2cb9634615d9cce876a6733a7038b72888913 Mon Sep 17 00:00:00 2001 From: Sahandgha Date: Tue, 11 Apr 2023 21:30:22 +0700 Subject: [PATCH 20/23] update last 4 projects --- projects/age-calculator/index.html | 32 ++++++++------- projects/age-calculator/index.js | 46 ++++++--------------- projects/age-calculator/style.css | 22 ++++------ projects/recipe-book-app/index.html | 25 +++++------ projects/recipe-book-app/index.js | 64 +++++++++++++++-------------- projects/recipe-book-app/style.css | 29 +++++++------ projects/tip-calculator/index.html | 42 ++++++++++--------- projects/tip-calculator/index.js | 16 ++++---- projects/tip-calculator/style.css | 18 ++++---- 9 files changed, 140 insertions(+), 154 deletions(-) diff --git a/projects/age-calculator/index.html b/projects/age-calculator/index.html index dd793a3..7ef5c27 100644 --- a/projects/age-calculator/index.html +++ b/projects/age-calculator/index.html @@ -1,21 +1,23 @@ - - - + + + + + Age Calculator - - - + + +
      -

      Age Calculator

      -
      - - - -

      -
      +

      Age Calculator

      +
      + + + +

      Your age is 21 years old

      +
      - - + + \ No newline at end of file diff --git a/projects/age-calculator/index.js b/projects/age-calculator/index.js index 2d829c4..b2888ee 100644 --- a/projects/age-calculator/index.js +++ b/projects/age-calculator/index.js @@ -1,44 +1,23 @@ -// Get the elements from the DOM -const birthdayInput = document.getElementById("birthday"); -const calculateButton = document.getElementById("calculate"); -const resultElement = document.getElementById("result"); - -// Add click event listener to the calculate button -calculateButton.addEventListener("click", calculateAge); - -// Function to calculate the age +const btnEl = document.getElementById("btn"); +const birthdayEl = document.getElementById("birthday"); +const resultEl = document.getElementById("result"); function calculateAge() { - // Get the value from the input - const birthday = birthdayInput.value; - - // Check if the value is empty - if (birthday === "") { - // If the value is empty, show an alert + const birthdayValue = birthdayEl.value; + if (birthdayValue === "") { alert("Please enter your birthday"); } else { - // If the value is not empty, calculate the age - const age = getAge(birthday); - - // Show the result - resultElement.innerHTML = `Your age is ${age} ${ - age > 1 ? "years" : "year" // Check if the age is more than 1 - } old`; + const age = getAge(birthdayValue); + resultEl.innerText = `Your age is ${age} ${age > 1 ? "years" : "year"} old`; } } -// Function to calculate the age -function getAge(birthDay) { - // Get the current date +function getAge(birthdayValue) { const currentDate = new Date(); - - // Get the birthday date - const birthdayDate = new Date(birthDay); - - // Calculate the age - const age = currentDate.getFullYear() - birthdayDate.getFullYear(); - + const birthdayDate = new Date(birthdayValue); + let age = currentDate.getFullYear() - birthdayDate.getFullYear(); const month = currentDate.getMonth() - birthdayDate.getMonth(); + if ( month < 0 || (month === 0 && currentDate.getDate() < birthdayDate.getDate()) @@ -46,6 +25,7 @@ function getAge(birthDay) { age--; } - // Return the age return age; } + +btnEl.addEventListener("click", calculateAge); diff --git a/projects/age-calculator/style.css b/projects/age-calculator/style.css index 88f0382..0229675 100644 --- a/projects/age-calculator/style.css +++ b/projects/age-calculator/style.css @@ -1,20 +1,18 @@ -/* General styles */ body { margin: 0; padding: 20px; font-family: "Montserrat", sans-serif; - font-size: 16px; - line-height: 1.5; background-color: #f7f7f7; } .container { + background-color: white; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); + padding: 20px; max-width: 600px; margin: 0 auto; - padding: 20px; - background-color: #fff; - box-shadow: 0 0 20px rgba(0, 0, 0, 0.2); border-radius: 5px; + margin-top: 50px; } h1 { @@ -35,24 +33,23 @@ label { margin-bottom: 10px; } -input[type="date"] { +input { padding: 8px; border: 1px solid #ccc; - border-radius: 4px; + border-radius: 5px; width: 100%; max-width: 300px; - box-sizing: border-box; } button { background-color: #007bff; - color: #fff; + color: white; border: none; padding: 10px 20px; - border-radius: 4px; + border-radius: 5px; margin-top: 10px; cursor: pointer; - transition: background-color 0.2s ease; + transition: background-color 0.3s ease; } button:hover { @@ -63,5 +60,4 @@ button:hover { margin-top: 20px; font-size: 24px; font-weight: bold; - text-align: center; } diff --git a/projects/recipe-book-app/index.html b/projects/recipe-book-app/index.html index 81489f7..b93360d 100644 --- a/projects/recipe-book-app/index.html +++ b/projects/recipe-book-app/index.html @@ -2,17 +2,19 @@ - Recipe Book + + + Document
      -

      Recipe Book

      +

      Recipe Book App

      -
        -
      • +
          +
      - diff --git a/projects/recipe-book-app/index.js b/projects/recipe-book-app/index.js index 7fcf11a..d35b3b8 100644 --- a/projects/recipe-book-app/index.js +++ b/projects/recipe-book-app/index.js @@ -1,43 +1,45 @@ const API_KEY = "275d58779ccf4e22af03e792e8819fff"; +const recipeListEl = document.getElementById("recipe-list"); -// Call the API and retrieve a list of recipes -const recipeList = document.getElementById("recipe-list"); +function displayRecipes(recipes) { + recipeListEl.innerHTML = ""; + recipes.forEach((recipe) => { + const recipeItemEl = document.createElement("li"); + recipeItemEl.classList.add("recipe-item"); + recipeImageEl = document.createElement("img"); + recipeImageEl.src = recipe.image; + recipeImageEl.alt = "recipe image"; + + recipeTitleEl = document.createElement("h2"); + recipeTitleEl.innerText = recipe.title; + + recipeIngredientsEl = document.createElement("p"); + recipeIngredientsEl.innerHTML = ` + Ingredients: ${recipe.extendedIngredients + .map((ingredient) => ingredient.original) + .join(", ")} + `; + + recipeLinkEl = document.createElement("a"); + recipeLinkEl.href = recipe.sourceUrl; + recipeLinkEl.innerText = "View Recipe"; + + recipeItemEl.appendChild(recipeImageEl); + recipeItemEl.appendChild(recipeTitleEl); + recipeItemEl.appendChild(recipeIngredientsEl); + recipeItemEl.appendChild(recipeLinkEl); + recipeListEl.appendChild(recipeItemEl); + }); +} async function getRecipes() { const response = await fetch( `https://api.spoonacular.com/recipes/random?number=10&apiKey=${API_KEY}` ); - const data = await response.json(); - return data.recipes; -} - -function displayRecipes(recipes) { - recipeList.innerHTML = ""; - recipes.forEach((recipe) => { - const recipeItem = document.createElement("li"); - recipeItem.classList.add("recipe-item"); - const recipeImage = document.createElement("img"); - recipeImage.src = recipe.image; - - const recipeTitle = document.createElement("h2"); - recipeTitle.innerText = recipe.title; - - const recipeIngredients = document.createElement("p"); - recipeIngredients.innerHTML = `Ingredients: ${recipe.extendedIngredients - .map((ingredient) => ingredient.original) - .join(", ")}`; - const recipeLink = document.createElement("a"); - recipeLink.href = recipe.sourceUrl; - recipeLink.innerText = "View Recipe"; - - recipeItem.appendChild(recipeImage); - recipeItem.appendChild(recipeTitle); - recipeItem.appendChild(recipeIngredients); - recipeItem.appendChild(recipeLink); + const data = await response.json(); - recipeList.appendChild(recipeItem); - }); + return data.recipes; } async function init() { diff --git a/projects/recipe-book-app/style.css b/projects/recipe-book-app/style.css index d1405d5..9e56d02 100644 --- a/projects/recipe-book-app/style.css +++ b/projects/recipe-book-app/style.css @@ -5,7 +5,7 @@ body { } header { - background-color: #0c2461; + background: #0c2461; color: #fff; padding: 20px; text-align: center; @@ -17,8 +17,8 @@ h1 { } .container { - max-width: 1200px; margin: 0 auto; + max-width: 1200px; padding: 20px; } @@ -33,7 +33,7 @@ h1 { align-items: center; justify-content: space-between; margin-bottom: 20px; - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); border-radius: 5px; overflow: hidden; } @@ -47,36 +47,37 @@ h1 { .recipe-item h2 { margin: 0; font-size: 20px; - min-width: 200px; padding: 10px; + min-width: 200px; } .recipe-item p { margin: 0; padding: 10px; + color: #777; } .recipe-item a { - padding: 10px; - background-color: #0c2461; + background: #0c2461; color: #fff; - text-align: center; - text-decoration: none; - transition: background-color 0.2s ease-in-out; min-width: 150px; + padding: 10px; + text-decoration: none; + text-transform: uppercase; + font-size: 14px; + transition: background 0.3s ease; } .recipe-item a:hover { - background-color: #1e3799; + background: #1e3799; } -@media only screen and (max-width: 800px) { +@media screen and (max-width: 768px) { .container { max-width: 90%; } - .recipe-item { - flex-wrap: wrap; + flex-direction: column; } .recipe-item img { @@ -95,7 +96,9 @@ h1 { font-size: 14px; margin-bottom: 10px; } + .recipe-item a { width: 100%; + text-align: center; } } diff --git a/projects/tip-calculator/index.html b/projects/tip-calculator/index.html index aa0dc58..029457b 100644 --- a/projects/tip-calculator/index.html +++ b/projects/tip-calculator/index.html @@ -1,24 +1,28 @@ - - + + + + + Tip Calculator - - - + + +
      -

      Tip Calculator

      -

      Enter the bill amount and tip percentage to calculate the total.

      - - -
      - - -
      - -
      - - +

      Tip Calculator

      +

      Enter the bill amount and tip percentage to calculate the total.

      + + +
      + + +
      + +
      + + +
      - - + + \ No newline at end of file diff --git a/projects/tip-calculator/index.js b/projects/tip-calculator/index.js index 515b4de..98cb079 100644 --- a/projects/tip-calculator/index.js +++ b/projects/tip-calculator/index.js @@ -1,11 +1,13 @@ -const calculateBtn = document.getElementById("calculate"); +const btnEl = document.getElementById("calculate"); const billInput = document.getElementById("bill"); const tipInput = document.getElementById("tip"); const totalSpan = document.getElementById("total"); -calculateBtn.addEventListener("click", function () { - const bill = billInput.value; - const tip = tipInput.value; - const total = bill * (1 + tip / 100); - totalSpan.innerText = `$${total.toFixed(2)}`; -}); +function calculateTotal() { + const billValue = billInput.value; + const tipValue = tipInput.value; + const totalValue = billValue * (1 + tipValue / 100); + totalSpan.innerText = totalValue.toFixed(2); +} + +btnEl.addEventListener("click", calculateTotal); diff --git a/projects/tip-calculator/style.css b/projects/tip-calculator/style.css index 9db5f26..786e129 100644 --- a/projects/tip-calculator/style.css +++ b/projects/tip-calculator/style.css @@ -1,31 +1,27 @@ -/* Set body styles */ * { box-sizing: border-box; } body { background-color: #f2f2f2; - font-family: "Helvetica Neue", sans-serif; + font-family: "Helvetica", sans-serif; } -/* Set container styles */ .container { - margin: 100px auto; + background-color: white; max-width: 600px; + margin: 100px auto; padding: 20px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); - background-color: #fff; border-radius: 10px; } -/* Set heading styles */ h1 { margin-top: 0; text-align: center; } -/* Set input styles */ -input[type="number"] { +input { padding: 10px; border: 1px solid #ccc; border-radius: 4px; @@ -33,23 +29,23 @@ input[type="number"] { width: 100%; } -/* Set button styles */ button { background-color: #4caf50; color: white; padding: 10px; border: none; - border-radius: 4px; cursor: pointer; margin: 10px 0; width: 100%; + font-size: 18px; + text-transform: uppercase; + transition: background-color 0.2s ease; } button:hover { background-color: #45a049; } -/* Set result styles */ #total { font-size: 24px; font-weight: bold; From b395884f4fb3fdd42fae861b2f661180ae0e8469 Mon Sep 17 00:00:00 2001 From: Sahand Ghavidel Date: Sun, 4 Jun 2023 08:54:31 +0700 Subject: [PATCH 21/23] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e54352e..408019f 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ # 50 HTML CSS JavaScript Projects -This is the source code of the Udemy course: 50 HTML CSS JavaScript Projects +This is the source code of the Udemy course: 60 HTML CSS JavaScript Projects
      Visit 100jsprojects.com to preview the projects.

      About

      -

      Hi there! I'm Sahand, a web developer with over a decade of experience. This course, "50 HTML CSS JavaScript Projects," was created to share my knowledge and experience with you. In this course, you'll learn how to build simple, responsive websites using HTML, CSS, and JavaScript.

      +

      Hi there! I'm Sahand, a web developer with over a decade of experience. This course, "60 HTML CSS JavaScript Projects," was created to share my knowledge and experience with you. In this course, you'll learn how to build simple, responsive websites using HTML, CSS, and JavaScript.

      In this course, you'll learn how to install Visual Studio Code and its extensions, and then we'll start from scratch with each project. After finishing HTML, we'll move on to CSS and JavaScript. Building in HTML, CSS, or JavaScript is fine, and this guide will explain HTML, CSS, and JavaScript syntax.

      Each project in this course is started from scratch and finished without using copied code. Then, we'll go over the code together to ensure that everyone understands. This program's exciting project-based curriculum includes building modern, super cool, and responsive websites!

      If you have any questions, please feel free to contact me through my Twitter: @codewithsahand.

      From 383128a15d7c87ac7dae37a60049efa976823a39 Mon Sep 17 00:00:00 2001 From: Sahand Ghavidel Date: Sun, 4 Jun 2023 08:54:49 +0700 Subject: [PATCH 22/23] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 408019f..55d6ee3 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# 50 HTML CSS JavaScript Projects +# 60 HTML CSS JavaScript Projects This is the source code of the Udemy course: 60 HTML CSS JavaScript Projects
      From 9178903cb14285736df153332c97209e8eab3ab1 Mon Sep 17 00:00:00 2001 From: Sahand Ghavidel Date: Tue, 3 Oct 2023 09:08:20 +0800 Subject: [PATCH 23/23] Update README.md --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 55d6ee3..af383c5 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,15 @@ -# 60 HTML CSS JavaScript Projects +# HTML CSS JavaScript Projects -This is the source code of the Udemy course: 60 HTML CSS JavaScript Projects +This is the source code of the website: 100 HTML CSS JavaScript Projects
      Visit 100jsprojects.com to preview the projects.

      About

      -

      Hi there! I'm Sahand, a web developer with over a decade of experience. This course, "60 HTML CSS JavaScript Projects," was created to share my knowledge and experience with you. In this course, you'll learn how to build simple, responsive websites using HTML, CSS, and JavaScript.

      +

      Hi there! I'm Sahand, a web developer with over a decade of experience. This course, "HTML CSS JavaScript Projects," was created to share my knowledge and experience with you. In this course, you'll learn how to build simple, responsive websites using HTML, CSS, and JavaScript.

      In this course, you'll learn how to install Visual Studio Code and its extensions, and then we'll start from scratch with each project. After finishing HTML, we'll move on to CSS and JavaScript. Building in HTML, CSS, or JavaScript is fine, and this guide will explain HTML, CSS, and JavaScript syntax.

      Each project in this course is started from scratch and finished without using copied code. Then, we'll go over the code together to ensure that everyone understands. This program's exciting project-based curriculum includes building modern, super cool, and responsive websites!

      -

      If you have any questions, please feel free to contact me through my Twitter: @codewithsahand.

      - Visit my website +

      If you have any questions, please feel free to contact me through my email: codewithsahand@gmail.com

      + Visit my website