diff --git a/100. Wikipedia Clone/app.js b/100. Wikipedia Clone/app.js new file mode 100644 index 0000000..73b6662 --- /dev/null +++ b/100. Wikipedia Clone/app.js @@ -0,0 +1,82 @@ +const searchForm = document.getElementById("search-form"); +const searchInput = document.getElementById("search-input"); +const searchResults = document.getElementById("search-results"); + +// Theme toggler elements +const themeToggler = document.getElementById("theme-toggler"); +const body = document.body; + +async function searchWikipeida(query) { + const encodedQuery = encodeURIComponent(query); + const endpoint = `https://en.wikipedia.org/w/api.php?action=query&list=search&prop=info&inprop=url&utf8=&format=json&origin=*&srlimit=10&srsearch=${encodedQuery}`; + + const reponse = await fetch(endpoint); + + if (!reponse.ok) { + throw new Error("Faild to fetch search results form wikipedia API."); + } + + const json = await reponse.json(); + return json; +} + +function displayResults(results) { + // Remove the loading spinner + searchResults.innerHTML = ""; + + results.forEach((result) => { + const url = `https://en.wikipedia.org/?curid=${results.pageid}`; + const titleLink = `${result.title} `; + const urlLink = `${url}`; + + const resultItme = document.createElement("div"); + resultItme.className = "result-item"; + resultItme.innerHTML = ` +

${titleLink}

+ ${urlLink} +

${result.snippet}

+ `; + + searchResults.appendChild(resultItme); + }); +} + +searchForm.addEventListener("submit", async (e) => { + e.preventDefault(); + + const query = searchInput.value.trim(); + + if (!query) { + searchResults.innerHTML = "

Please enter a valid search term.

"; + return; + } + + searchResults.innerHTML = "
Loading ...
"; + + try { + const results = await searchWikipeida(query); + + if (results.query.searchinfo.totalhits === 0) { + searchResults.innerHTML = "

No results found.

"; + } else { + displayResults(results.query.search); + } + } catch (error) { + console.error(error); + searchResults.innerHTML = `

An error occured while searching. Please try again later.

`; + } +}); + +// Event listener for the theme toggler +themeToggler.addEventListener("click", () => { + body.classList.toggle("dark-theme"); + if (body.classList.contains("dark-theme")) { + themeToggler.textContent = "Dark"; + themeToggler.style.background = "#fff"; + themeToggler.style.color = "#333"; + } else { + themeToggler.textContent = "Light"; + themeToggler.style.border = "2px solid #ccc"; + themeToggler.style.color = "#333"; + } +}); diff --git a/100. Wikipedia Clone/index.html b/100. Wikipedia Clone/index.html new file mode 100644 index 0000000..c65e204 --- /dev/null +++ b/100. Wikipedia Clone/index.html @@ -0,0 +1,25 @@ + + + + + Wiki Clone + + + +
+
+

Search Wikipedia

+ Light +
+ +
+ + +
+ +
+
+ + + + diff --git a/100. Wikipedia Clone/style.css b/100. Wikipedia Clone/style.css new file mode 100644 index 0000000..4b378d1 --- /dev/null +++ b/100. Wikipedia Clone/style.css @@ -0,0 +1,131 @@ +* { + box-sizing: border-box; +} + +body { + font-family: Arial, sans-serif; + margin: 0; + padding: 0; +} + +.container { + max-width: 800px; + margin: 0 auto; + padding: 2rem; +} + +h1 { + font-size: 3rem; + margin-bottom: 2rem; +} + +#search-form { + display: flex; + justify-content: center; + align-items: center; + margin-bottom: 2rem; +} + +#search-input { + font-size: 1.2rem; + padding: 0.5rem 1rem; + margin-right: 1rem; + border: 2px solid #ccc; + border-radius: 0.25rem; + flex-grow: 1; +} + +#search-input:focus { + outline: none; + border-color: #0074d9; +} + +button[type="submit"] { + font-size: 1.2rem; + padding: 0.5rem 1rem; + background-color: #0074d9; + color: #fff; + border: none; + border-radius: 0.25rem; + cursor: pointer; +} + +button[type="submit"]:hover { + background-color: #0063ad; +} + +#search-results { + margin-bottom: 2rem; +} + +.result-item { + margin-bottom: 1rem; +} + +.result-title { + font-size: 1.5rem; + margin-top: 0; +} + +.result-link { + display: block; + font-size: 1.2rem; + margin-bottom: 0.5rem; + color: #0074d9; +} + +.result-link:hover { + text-decoration: underline; +} + +.result-snippet { + margin-top: 0; +} + +.spinner { + display: flex; + justify-content: center; + align-items: center; + font-size: 2rem; + height: 10rem; +} + +/* Dark theme */ +.header-container { + display: flex; + justify-content: space-between; + align-items: center; +} + +#theme-toggler { + border: none; + background: transparent; + cursor: pointer; + background: #e2e2e2; + padding: 10px 20px; + border-radius: 100px; +} + +.dark-theme { + background-color: #282c34; + color: #fff; +} + +.dark-theme #search-input { + background-color: #454545; + color: #fff; + border-color: #fff; +} + +.dark-theme #search-input:focus { + border-color: #0074d9; +} + +.dark-theme button[type="submit"] { + background-color: #0074d9; +} + +.dark-theme .result-link, +.dark-theme .result-link:hover { + color: #90caf9; +} diff --git a/41. Random Images Feed/app.js b/41. Random Images Feed/app.js index c2d4ad2..2017a52 100644 --- a/41. Random Images Feed/app.js +++ b/41. Random Images Feed/app.js @@ -1,5 +1,5 @@ const container = document.querySelector(".content"); -const baseURL = "https://source.unsplash.com/random/"; +const baseURL = "https://source.unsplash.com/all/"; const rows = 7; for (let i = 0; i < rows * 3; i++) { diff --git a/80. Live User Filter/app.js b/80. Live User Filter/app.js new file mode 100644 index 0000000..cb1a5a3 --- /dev/null +++ b/80. Live User Filter/app.js @@ -0,0 +1,53 @@ +const result = document.getElementById("result"); +const filter = document.getElementById("filter"); +const listItems = []; + +getData(); + +filter.addEventListener("input", (e) => filterData(e.target.value)); + +async function getData() { + const res = await fetch("https://randomuser.me/api?results=50"); + const { results } = await res.json(); + + result.innerHTML = ""; + + results.forEach((user) => { + const li = document.createElement("li"); + listItems.push(li); + + li.innerHTML = ` + ${user.name.first} +
+

${user.name.first} ${user.name.last}

+

${user.location.city}, ${user.location.country}

+
+ `; + + result.appendChild(li); + }); +} + +function filterData(searchTerm) { + listItems.forEach((item) => { + if (item.innerText.toLowerCase().includes(searchTerm.toLowerCase())) { + item.classList.remove("hide"); + } else { + item.classList.add("hide"); + } + }); +} + +// Toggler +let toggler = document.getElementById("switch"); + +toggler.addEventListener("click", () => { + console.log(toggler.checked); + if (toggler.checked === true) { + document.body.style.backgroundColor = "rgb(17, 17, 17)"; + document.querySelector(".header").style.backgroundColor = "crimson"; + } else { + document.body.style.backgroundColor = "white"; + document.querySelector(".header").style.backgroundColor = "black"; + } +}); diff --git a/80. Live User Filter/index.html b/80. Live User Filter/index.html new file mode 100644 index 0000000..276d03b --- /dev/null +++ b/80. Live User Filter/index.html @@ -0,0 +1,30 @@ + + + + + + Live User Filter + + + +
+
+

Search by name and/or location

+ +
+ + +
+ +
+ + +
+ + + + diff --git a/80. Live User Filter/style.css b/80. Live User Filter/style.css new file mode 100644 index 0000000..341745a --- /dev/null +++ b/80. Live User Filter/style.css @@ -0,0 +1,129 @@ +:root { + --primary-color: white; + --primary-label: black; + --secondary-label: white; + --white-ball: white; + --black-ball: black; +} + +body { + background-color: var(--primary-color); + font-family: sans-serif; + display: flex; + justify-content: center; + align-items: center; + height: 100vh; + overflow: hidden; +} + +.container { + border-radius: 5px; + box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.2); + width: 600px; +} + +.title { + margin-bottom: 20px; +} + +.header { + background-color: black; + color: #fff; + padding: 30px 20px; +} + +.header input { + border: 0; + border-radius: 50px; + font-size: 14px; + padding: 10px 15px; + width: 100%; + outline: none; +} + +.user-list { + background-color: white; + list-style-type: none; + padding: 0; + max-height: 400px; + overflow-y: auto; +} + +/* JavaScript */ +.user-list li { + display: flex; + padding: 20px; +} + +.user-list img { + border-radius: 50%; + object-fit: cover; + height: 60px; + width: 60px; + margin-right: 20px; +} + +.user-list .user-info h4 { + margin: 0 0 10px; +} + +.user-list .user-info p { + font-size: 12px; +} + +.user-list li:not(:last-of-type) { + border-bottom: 1px solid #eee; +} + +.user-list li.hide { + display: none; +} + +.toggler-container { + position: absolute; + bottom: 1rem; + right: 4rem; +} + +#switch { + width: 0; + height: 0; + visibility: hidden; +} + +label { + display: block; + width: 100px; + height: 50px; + background-color: var(--primary-label); + border-radius: 100px; + position: relative; + cursor: pointer; + transition: 0.5s; +} + +label::after { + content: ""; + width: 40px; + height: 40px; + border-radius: 70px; + background-color: var(--white-ball); + position: absolute; + top: 5px; + left: 5px; + transition: 0.5s; +} + +#switch:checked + label:after { + background-color: var(--black-ball); + left: calc(100% - 5px); + transform: translateX(-100%); +} + +#switch:checked + label { + background-color: var(--secondary-label); +} + +label:active:after { + width: 60px; +} diff --git a/81. Animated Images Website/app.js b/81. Animated Images Website/app.js new file mode 100644 index 0000000..052e0d2 --- /dev/null +++ b/81. Animated Images Website/app.js @@ -0,0 +1,22 @@ +let btns = document.querySelectorAll(".btn"); +let banner = document.getElementById("banner"); + +btns.forEach((btn, index) => { + btn.addEventListener("click", () => { + banner.src = `images/${index}.jpg`; + animation(); + btn.classList.add("active"); + }); +}); + +function animation() { + banner.classList.add("zoom"); + + setTimeout(() => { + banner.classList.remove("zoom"); + }, 1000); + + for (b of btns) { + b.classList.remove("active"); + } +} diff --git a/81. Animated Images Website/images/0.jpg b/81. Animated Images Website/images/0.jpg new file mode 100644 index 0000000..098ac59 Binary files /dev/null and b/81. Animated Images Website/images/0.jpg differ diff --git a/81. Animated Images Website/images/1.jpg b/81. Animated Images Website/images/1.jpg new file mode 100644 index 0000000..a12ee07 Binary files /dev/null and b/81. Animated Images Website/images/1.jpg differ diff --git a/81. Animated Images Website/images/2.jpg b/81. Animated Images Website/images/2.jpg new file mode 100644 index 0000000..b33427a Binary files /dev/null and b/81. Animated Images Website/images/2.jpg differ diff --git a/81. Animated Images Website/index.html b/81. Animated Images Website/index.html new file mode 100644 index 0000000..43c1d4c --- /dev/null +++ b/81. Animated Images Website/index.html @@ -0,0 +1,37 @@ + + + + + + Animated Images + + + +
+
+
+

Explore Best Properties

+

+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Consectetur + saepe voluptatem iusto cupiditate iure qui quas natus facere + voluptates. Recusandae dicta quae doloribus repellat. A + reprehenderit mollitia incidunt vitae nihil. +

+ + +
    +
  • +
  • +
  • +
+
+ +
+ +
+
+
+ + + + diff --git a/81. Animated Images Website/style.css b/81. Animated Images Website/style.css new file mode 100644 index 0000000..c312e3e --- /dev/null +++ b/81. Animated Images Website/style.css @@ -0,0 +1,90 @@ +* { + padding: 0; + margin: 0; + box-sizing: border-box; + font-family: sans-serif; +} + +button { + margin-right: -20px; + padding: 15px 40px; + border: 0; + outline: none; + border-radius: 25px; + background: #333; + color: #fff; + font-size: 14px; + cursor: pointer; + box-shadow: 0 10px 10px rgba(0, 0, 0, 0.2); +} + +.row { + width: 100%; + display: flex; + justify-content: space-between; + background: #fff; + border-radius: 15px; + overflow: hidden; +} + +.col-1 .col2 { + overflow: hidden; +} + +.col-1 { + display: flex; + flex-direction: column; + justify-content: space-around; +} + +.col-2 img { + width: 35rem; + height: 100vh; + margin-bottom: -5px; +} + +.col-1 { + padding: 8% 5%; + position: relative; +} + +.col-1 p { + color: #777; + line-height: 22px; + margin: 15px 0 30px; + max-width: 500px; +} + +ul { + position: absolute; + bottom: 30px; +} + +ul li { + list-style: none; + width: 15px; + height: 15px; + display: inline-block; + background: #bfbfbf; + border-radius: 50%; + margin-right: 15px; + cursor: pointer; +} + +ul .active { + background: #333; +} + +/* JavaScript */ +.zoom { + animation: zoom 1s; +} + +@keyframes zoom { + 0% { + transform: scale(1.2); + } + 100% { + transform: scale(1); + } +} diff --git a/82. Emoji Catcher Game/app.js b/82. Emoji Catcher Game/app.js new file mode 100644 index 0000000..4206eb1 --- /dev/null +++ b/82. Emoji Catcher Game/app.js @@ -0,0 +1,47 @@ +const squares = document.querySelectorAll(".square"); +const timeLeft = document.querySelector("#time-left"); +const score = document.querySelector("#score"); + +let result = 0; +let hitPosition; +let currentTime = 60; +let timerId = null; + +function randomSquare() { + squares.forEach((square) => { + square.classList.remove("emoji"); + }); + + let randomSqaure = squares[Math.floor(Math.random() * 9) + 1]; + randomSqaure.classList.add("emoji"); + hitPosition = randomSqaure.id; +} + +squares.forEach((square) => { + square.addEventListener("mousedown", () => { + if (square.id == hitPosition) { + result++; + score.textContent = result; + hitPosition = null; + } + }); +}); + +function moveEmoji() { + timerId = setInterval(randomSquare, 500); +} + +moveEmoji(); + +function countDown() { + currentTime--; + timeLeft.textContent = currentTime; + + if (currentTime == 0) { + clearInterval(countDownTimerId); + clearInterval(timerId); + alert(`Game Over! Your final Score Is ${result}`); + } +} + +let countDownTimerId = setInterval(countDown, 1000); diff --git a/82. Emoji Catcher Game/index.html b/82. Emoji Catcher Game/index.html new file mode 100644 index 0000000..c978ee3 --- /dev/null +++ b/82. Emoji Catcher Game/index.html @@ -0,0 +1,39 @@ + + + + + + Emoji Catcher Game + + + +
+
+

Your Score:

+

0

+
+ +
+

Time left:

+

60

+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + diff --git a/82. Emoji Catcher Game/style.css b/82. Emoji Catcher Game/style.css new file mode 100644 index 0000000..513afa1 --- /dev/null +++ b/82. Emoji Catcher Game/style.css @@ -0,0 +1,61 @@ +body { + background: rgb(10, 10, 10); + color: #fff; + font-family: sans-serif; +} + +.scores-container { + display: flex; + justify-content: center; + align-items: center; +} + +.total-score { + margin-right: 20px; + margin: 20px; + text-align: center; + background: #ccc; + padding: 20px; + color: #000; +} + +.time { + margin-right: 20px; + margin: 20px; + text-align: center; + background: #ccc; + padding: 20px; + color: #000; +} + +.grid-container { + display: flex; + justify-content: center; + align-items: center; +} + +.grid { + width: 90%; + height: 90%; + display: flex; + flex-wrap: wrap; + justify-content: center; + align-items: center; + background-color: rgb(36, 36, 36); + margin-top: 2rem; + padding: 20px; +} + +.square { + height: 200px; + width: 200px; + margin: 10px; + background: rgb(61, 61, 61); +} + +/* JavaScript */ +.emoji { + background-image: url("https://i.guim.co.uk/img/media/a1b7129c950433c9919f5670c92ef83aa1c682d9/55_344_1971_1183/master/1971.jpg?width=1200&height=900&quality=85&auto=format&fit=crop&s=88ba2531f114b9b58b9cb2d8e723abe1"); + background-position: center; + background-size: cover; +} diff --git a/83. Twitter Follow Component/app.js b/83. Twitter Follow Component/app.js new file mode 100644 index 0000000..af7f404 --- /dev/null +++ b/83. Twitter Follow Component/app.js @@ -0,0 +1,25 @@ +let body = document.body; +let themer = document.querySelector(".themer"); +const followButtons = document.querySelectorAll(".follow-button"); + +themer.addEventListener("click", toggleTheme); + +function toggleTheme() { + if (body.className === "light-theme") { + body.className = "dark-theme"; + themer.innerText = "Light"; + } else { + body.className = "light-theme"; + themer.innerText = "Dark"; + } +} + +followButtons.forEach((btn) => { + btn.addEventListener("click", (e) => followUnFollow(e.target)); +}); + +function followUnFollow(button) { + button.classList.toggle("followed"); + if (button.innerText == "Follow") button.innerText = "Unfollow"; + else button.innerText = "Follow"; +} diff --git a/83. Twitter Follow Component/index.html b/83. Twitter Follow Component/index.html new file mode 100644 index 0000000..983a5c2 --- /dev/null +++ b/83. Twitter Follow Component/index.html @@ -0,0 +1,47 @@ + + + + + + Twitter Follow + + + + + +
+

Who To Follow

+ +
+
+
+ Albert Dare + albertdera +
+ +
+ +
+
+
+ Meysam Jarahkar + arona +
+ +
+ +
+
+
+ Meysam Jarahkar + arona +
+ +
+ + Show More +
+ + + + diff --git a/83. Twitter Follow Component/style.css b/83. Twitter Follow Component/style.css new file mode 100644 index 0000000..7d2cc66 --- /dev/null +++ b/83. Twitter Follow Component/style.css @@ -0,0 +1,174 @@ +:root { + --light-bg: white; + --light-primary: rgb(247, 249, 250); + --light-secondary: rgb(240, 242, 243); + --light-divider: rgb(235, 237, 238); + + --dark-bg: black; + --dark-primary: #15181c; + --dark-secondary: #2f3336; + --dark-divider: #2f3336; + + --highlight-color: #e0245e; +} + +* { + box-sizing: border-box; +} + +html, +body { + margin: 0; + height: 100%; + width: 100%; +} + +html { + display: table; + font-family: sans-serif; +} + +body { + background: var(--background-color); + display: table-cell; + vertical-align: middle; + width: 100%; +} + +h1 { + font-size: 1.3em; + font-weight: 900; +} + +.light-theme { + --background-color: var(--light-bg); + --primary-bg: var(--light-primary); + --secondary-bg: var(--light-secondary); + --divider: var(--light-divider); +} + +.dark-theme { + --background-color: var(--dark-bg); + --primary-bg: var(--dark-primary); + --secondary-bg: var(--dark-secondary); + --divider: var(--dark-divider); + color: white !important; +} + +.card { + background-color: var(--primary-bg); + height: auto; + width: 360px; + margin: 0 auto; + border-radius: 24px; +} + +.card-title { + margin: 0; + padding: 20px 20px 15px 20px; +} + +.divider { + display: block; + width: 100%; + border-top: 1px solid var(--secondary-bg); +} + +.profile { + width: 100%; + min-width: 100%; + max-width: 100%; + padding: 10px 20px; + display: flex; + flex-wrap: nowrap; + align-items: center; + align-content: stretch; + justify-items: stretch; + justify-content: space-between; +} + +.profile:hover, +.show-more:hover { + background-color: var(--secondary-bg); +} + +.profile-pic { + display: block; + height: 50px; + width: 50px; + border-radius: 50%; + background-position: top; + background-size: cover; +} + +.img-one { + background-image: url(https://images.unsplash.com/photo-1506794778202-cad84cf45f1d?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=387&q=80); +} +.img-two { + background-image: url(https://images.unsplash.com/photo-1610088441520-4352457e7095?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=387&q=80); +} +.img-three { + background-image: url(https://images.unsplash.com/photo-1579987102269-ac45dafda12c?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=486&q=80); +} + +.profile-info { + padding: 0 10px; + flex-grow: 1; +} + +.display-name, +.username { + display: block; +} + +.display-name { + font-weight: 700; +} + +.username { + color: rgb(155, 153, 153); +} + +.username::before { + content: "@"; +} + +.follow-button { + background-color: inherit; + border: 1px solid var(--highlight-color); + border-radius: 16px; + color: var(--highlight-color); + padding: 6px 16px; + outline: none; + font-weight: 900; +} + +.followed { + background-color: var(--highlight-color); + color: white; +} + +.show-more { + border-bottom-left-radius: inherit; + border-bottom-right-radius: inherit; + display: block; + padding: 15px 20px 20px 20px; + text-decoration: none; + color: var(--highlight-color); +} + +.show-more:focus { + -webkit-tap-highlight-color: transparent; +} + +.themer { + background-color: var(--primary-bg); + color: inherit; + outline: none; + border: none; + border-radius: 8px; + position: fixed; + right: 30px; + top: 30px; + padding: 8px 10px; +} diff --git a/84. BookList Project/app.js b/84. BookList Project/app.js new file mode 100644 index 0000000..dd1893a --- /dev/null +++ b/84. BookList Project/app.js @@ -0,0 +1,32 @@ +const title = document.getElementById("title"); +const author = document.getElementById("author"); +const year = document.getElementById("year"); +const bookList = document.getElementById("book-list"); +const btn = document.querySelector(".btn"); + +btn.addEventListener("click", function (e) { + e.preventDefault(); + + if (title.value == "" && author.value == "" && year.value == "") { + alert("Fill The Form"); + } else { + const newRow = document.createElement("section"); + + // Creating new Title + const newTitle = document.createElement("div"); + newTitle.innerHTML = title.value; + newRow.appendChild(newTitle); + + // Creating new Author + const newAuthor = document.createElement("div"); + newAuthor.innerHTML = author.value; + newRow.append(newAuthor); + + // Creating new Year + const newYear = document.createElement("div"); + newYear.innerHTML = year.value; + newRow.appendChild(newYear); + + bookList.appendChild(newRow); + } +}); diff --git a/84. BookList Project/index.html b/84. BookList Project/index.html new file mode 100644 index 0000000..afd1e4d --- /dev/null +++ b/84. BookList Project/index.html @@ -0,0 +1,40 @@ + + + + + + BookList App + + + +
+
+
+ + +
+
+ + +
+
+ + +
+ +
+ +
+
+
Title
+
Author
+
Year
+
+ +
+
+
+ + + + diff --git a/84. BookList Project/style.css b/84. BookList Project/style.css new file mode 100644 index 0000000..43b83b7 --- /dev/null +++ b/84. BookList Project/style.css @@ -0,0 +1,73 @@ +* { + padding: 0; + margin: 0; + box-sizing: border-box; +} + +body { + background-color: #080809; + background: linear-gradient(blueviolet, rgb(82, 5, 154)); + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + height: 100vh; + font-family: sans-serif; +} + +.container { + width: 80%; + height: 600px; + padding: 20px; + color: white; + position: relative; +} + +input { + width: 100%; + padding: 10px; + margin-top: 4px; + margin-bottom: 20px; + outline: none; + border: none; + border-radius: 5px; +} + +.table { + background: crimson; + width: 100%; +} + +.table-section { + display: flex; + justify-content: space-around; + padding: 10px; +} + +#book-list { + display: flex; + flex-direction: column; + list-style: none; + overflow: hidden; + word-wrap: break-word; + background: #fff; + color: #000; +} + +#book-list > section { + display: flex; + align-items: center; + text-align: center; + justify-content: space-around; + border-bottom: 1px solid #ccc; + padding: 10px; +} + +.btn { + background: deeppink; + border: none; + color: #fff; + margin-bottom: 20px; + padding: 10px 20px; + cursor: pointer; +} diff --git a/85. Timer/app.js b/85. Timer/app.js new file mode 100644 index 0000000..a52b992 --- /dev/null +++ b/85. Timer/app.js @@ -0,0 +1,68 @@ +// Create Template Variables +const INTERVAL_MS = 1000 / 60; +let timerID; +let lastTimerStartTime = 0; +let millisElapsedBeforeLastStart = 0; + +// Get Our Data From The DOM +const timer = document.getElementById("timer"); +const startButton = document.getElementById("start-button"); +const stopButton = document.getElementById("stop-button"); +const resetButton = document.getElementById("reset-button"); + +// USE EVENTS +startButton.addEventListener("click", startTimer); +stopButton.addEventListener("click", stopTimer); +resetButton.addEventListener("click", resetTimers); + +// ---- CREATING A FUNCTIONS ---- + +// 1. startTimer +function startTimer() { + startButton.disabled = true; + stopButton.disabled = false; + resetButton.disabled = true; + + lastTimerStartTime = Date.now(); + timerID = setInterval(updateTimer, INTERVAL_MS); +} + +// 2. stopTimer +function stopTimer() { + startButton.disabled = false; + stopButton.disabled = true; + resetButton.disabled = false; + + millisElapsedBeforeLastStart += Date.now() - lastTimerStartTime; + clearInterval(timerID); +} + +// 3. resetTimer +function resetTimers() { + resetButton.disabled = true; + timer.textContent = "00:00:00"; + millisElapsedBeforeLastStart = 0; +} + +// 4. updateTimer +function updateTimer() { + const milllisElapsed = + Date.now() - lastTimerStartTime + millisElapsedBeforeLastStart; + const secondsElapsed = milllisElapsed / 1000; + const minutesElapsed = secondsElapsed / 60; + + const millisText = formateNumber(milllisElapsed % 1000, 3); + const secondsText = formateNumber(Math.floor(secondsElapsed) % 60, 2); + const minutesText = formateNumber(Math.floor(minutesElapsed), 2); + timer.textContent = `${minutesText}:${secondsText}:${millisText}`; +} + +// 5. formatNumber +function formateNumber(number, desiredLength) { + const stringNumber = String(number); + if (stringNumber.length > desiredLength) { + return stringNumber.slice(0, desiredLength); + } + + return stringNumber.padStart(desiredLength, "0"); +} diff --git a/85. Timer/index.html b/85. Timer/index.html new file mode 100644 index 0000000..007ad79 --- /dev/null +++ b/85. Timer/index.html @@ -0,0 +1,22 @@ + + + + + + Timer + + + +
+

Stop Watch

+
00:00:00
+
+ + + +
+
+ + + + diff --git a/85. Timer/style.css b/85. Timer/style.css new file mode 100644 index 0000000..d41c84f --- /dev/null +++ b/85. Timer/style.css @@ -0,0 +1,57 @@ +* { + padding: 0; + margin: 0; + box-sizing: border-box; +} + +body { + display: flex; + justify-content: center; + align-items: center; + background: linear-gradient(to right, #21d4fd, #b721ff); +} + +section { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +section h1 { + font-size: 4rem; + font-family: sans-serif; + margin: 20px; + color: #fff; + text-transform: uppercase; +} + +section #timer { + font-size: 4rem; + margin: 20px; +} + +section button { + background: transparent; + border: none; + padding: 10px 20px; +} + +button { + margin: 10px; + color: #fff; + width: 6rem; + cursor: pointer; +} + +#start-button { + background: #71e027; +} + +#stop-button { + background: crimson; +} + +#reset-button { + background: darkblue; +} diff --git a/86. Typing Game/app.js b/86. Typing Game/app.js new file mode 100644 index 0000000..2d4fe14 --- /dev/null +++ b/86. Typing Game/app.js @@ -0,0 +1,73 @@ +const main = document.querySelector(".main"); +const typeArea = document.querySelector(".typingArea"); +const btn = document.querySelector(".btn"); + +const words = [ + "A day in the life of programmer", + "What is JavaScript?", + "What is React?", + "What is Programming Language?", + "What's your name?", + "Where are you from?", + "This is just random word", + "What is Remix.js?", + "New Technologies", + "Is programming hard?", + "Why do you wanna become a programmer?", + "Which programming language you like the most?", + "What is Golang? and why do you wanna learn it?", + "What is CSS", +]; + +const game = { + start: 0, + end: 0, + user: "", + arrText: "", +}; + +btn.addEventListener("click", () => { + if (btn.textContent === "Start") { + play(); + typeArea.value = ""; + typeArea.disabled = false; + } else if (btn.textContent === "Done") { + typeArea.disabled = true; + main.style.borderColor = "white"; + end(); + } +}); + +function play() { + let randText = Math.floor(Math.random() * words.length); + main.textContent = words[randText]; + game.arrText = words[randText]; + main.style.borderColor = "#c8c8c8"; + btn.textContent = "Done"; + const duration = new Date(); + game.start = duration.getTime(); // unix timestamp +} + +function end() { + const duration = new Date(); + game.end = duration.getTime(); + const totalTime = (game.end - game.start) / 1000; + game.user = typeArea.value; + const correct = results(); + main.style.borderColor = "white"; + main.innerHTML = `Time: ${totalTime} Score: ${correct.score} out of ${correct.total}`; + btn.textContent = "Start"; +} + +function results() { + let valueOne = game.arrText.split(" "); + let valueTwo = game.user.split(" "); + let score = 0; + valueOne.forEach((word, idx) => { + if (word === valueTwo[idx]) { + score++; + } + }); + + return { score, total: valueOne.length }; +} diff --git a/86. Typing Game/index.html b/86. Typing Game/index.html new file mode 100644 index 0000000..547dfaf --- /dev/null +++ b/86. Typing Game/index.html @@ -0,0 +1,18 @@ + + + + + + Typing Challenge + + + +
+
+ +
+ +
+ + + diff --git a/86. Typing Game/style.css b/86. Typing Game/style.css new file mode 100644 index 0000000..5110e80 --- /dev/null +++ b/86. Typing Game/style.css @@ -0,0 +1,35 @@ +body { + display: flex; + justify-content: center; + align-items: center; + text-align: center; +} + +.container { + width: 70%; + padding: 10px; +} + +.main { + text-align: center; + padding: 10px; + font-size: 2em; + border: 3px solid white; +} + +.typingArea { + width: 100%; + height: 350px; + margin-top: 20px; +} + +.btn { + width: 20%; + outline: none; + border: none; + font-size: 2em; + padding: 10px; + color: white; + background-color: blueviolet; + margin-top: 20px; +} diff --git a/87. Shape Clicker Game/app.js b/87. Shape Clicker Game/app.js new file mode 100644 index 0000000..b5f2b35 --- /dev/null +++ b/87. Shape Clicker Game/app.js @@ -0,0 +1,44 @@ +const game = { timer: 0, start: null }; + +// Create Message Element +const message = document.createElement("div"); +message.classList.add("message"); +message.textContent = "Press To Start"; +document.body.prepend(message); + +// Create a Box +const box = document.createElement("div"); +box.classList.add("box"); + +const output = document.querySelector(".output"); +output.append(box); + +box.addEventListener("click", () => { + box.textContent = ""; + box.style.display = "none"; + game.timer = setTimeout(addBox, randomNumbers(3000)); + if (!game.start) { + message.textContent = "Watch for element and click it"; + } else { + const current = new Date().getTime(); + const duration = (current - game.start) / 1000; + message.textContent = `It took ${duration} seconds to click`; + } +}); + +function randomNumbers(max) { + return Math.floor(Math.random() * max); +} + +function addBox() { + game.start = new Date().getTime(); + const container = output.getBoundingClientRect(); + const dim = [randomNumbers(50) + 20, randomNumbers(50) + 20]; + box.style.display = "block"; + box.style.width = `${dim[0]}px`; + box.style.height = `${dim[1]}px`; + box.style.backgroundColor = "#" + Math.random().toString(16).substr(-6); + box.style.left = randomNumbers(container.width - dim[0]) + "px"; + box.style.top = randomNumbers(container.height - dim[1]) + "px"; + box.style.borderRadius = randomNumbers(50) + "%"; +} diff --git a/87. Shape Clicker Game/index.html b/87. Shape Clicker Game/index.html new file mode 100644 index 0000000..c003e13 --- /dev/null +++ b/87. Shape Clicker Game/index.html @@ -0,0 +1,14 @@ + + + + + + Shape Clicker Game + + + +
+ + + + diff --git a/87. Shape Clicker Game/style.css b/87. Shape Clicker Game/style.css new file mode 100644 index 0000000..ecb9646 --- /dev/null +++ b/87. Shape Clicker Game/style.css @@ -0,0 +1,23 @@ +body { + background: black; + color: white; +} + +/* JavaScript */ +.message { + text-align: center; + padding: 10px; + font-size: 2rem; +} + +.box { + width: 100px; + height: 100px; + position: relative; + top: 50px; + left: 20%; + background-color: cornsilk; + border: 1px solid black; + font-size: 1.5em; + line-height: 100px; +} diff --git a/88. World Counter/app.js b/88. World Counter/app.js new file mode 100644 index 0000000..275c1d0 --- /dev/null +++ b/88. World Counter/app.js @@ -0,0 +1,43 @@ +const textInput = document.querySelector(".text-input"); +const worldCountElement = document.querySelector(".word-count"); +const letterCountElement = document.querySelector(".letter-count"); +const spaceCountElement = document.querySelector(".space-count"); + +const checks = [atLeastTwoCharacters, abscenceOfThreeConsecutiveCharacters]; + +function atLeastTwoCharacters(text) { + const letters = text.match(/[a-z]/gi) || []; + return letters.length >= 2; +} + +function abscenceOfThreeConsecutiveCharacters(text) { + for (const character of text) { + const occurrences = Array.from(text).filter((v) => v == character).length; + + if (occurrences >= 3) { + return false; + } + } + + return true; +} + +textInput.addEventListener("input", () => { + const splitted = textInput.value.trim().split(/[\s-]/); + const letterCount = (textInput.value.match(/[a-z]/gi) || []).length; + const spaceCount = (textInput.value.match(/\s+/g) || []).length; + let wordCount = 0; + + outer: for (const text of splitted) { + for (const check of checks) { + if (!check(text)) { + continue outer; + } + } + wordCount++; + } + + worldCountElement.textContent = wordCount; + letterCountElement.textContent = letterCount; + spaceCountElement.textContent = spaceCount; +}); diff --git a/88. World Counter/index.html b/88. World Counter/index.html new file mode 100644 index 0000000..2c37f8d --- /dev/null +++ b/88. World Counter/index.html @@ -0,0 +1,29 @@ + + + + + + Word Counter + + + +
+

Word Counter

+ +
+ Word Count: + 0 +
+
+ Letter Count: + 0 +
+
+ Number Of Spaces: + 0 +
+
+ + + + diff --git a/88. World Counter/style.css b/88. World Counter/style.css new file mode 100644 index 0000000..feadbf5 --- /dev/null +++ b/88. World Counter/style.css @@ -0,0 +1,33 @@ +body { + margin: 0; + font-family: sans-serif; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + height: 100vh; +} + +.container { + width: 400px; + margin: 25px; + padding: 25px; + border: 1px solid #ccc; + border-radius: 5px; + line-height: 1.4; + box-shadow: 2px 1px 5px 1px; +} + +.title { + margin-top: 0; + margin-bottom: 25px; +} + +.text-input { + width: 100%; + height: 225px; + margin-bottom: 25px; + resize: none; + padding: 10px; + box-sizing: border-box; +} diff --git a/89. Random User/app.js b/89. Random User/app.js new file mode 100644 index 0000000..9674a4e --- /dev/null +++ b/89. Random User/app.js @@ -0,0 +1,43 @@ +const btn = document.getElementById("btn"); + +btn.addEventListener("click", function () { + getPerson(getData); +}); + +function getPerson(cb) { + const url = "https://randomuser.me/api/"; + const request = new XMLHttpRequest(); + + request.open("GET", url, true); + request.onload = function () { + if (this.status === 200) { + cb(this.responseText, showData); + } + }; + + request.send(); +} + +function getData(response, cb) { + const data = JSON.parse(response); + + const { + name: { first }, + name: { last }, + picture: { large }, + location: { street }, + phone, + email, + } = data.results[0]; + cb(first, last, large, street, phone, email); +} + +function showData(first, last, large, street, phone, email) { + document.getElementById("name").textContent = `${first} ${last}`; + document.getElementById("first").textContent = first; + document.getElementById("last").textContent = last; + document.getElementById("street").textContent = street.name; + document.getElementById("phone").textContent = phone; + document.getElementById("email").textContent = email; + document.getElementById("photo").src = large; +} diff --git a/89. Random User/index.html b/89. Random User/index.html new file mode 100644 index 0000000..a7c41d9 --- /dev/null +++ b/89. Random User/index.html @@ -0,0 +1,34 @@ + + + + + + Random User + + + +
+
+
+ +
+
+
John Doe
+
+
+

First Name : John

+

Last Name : Doe

+

Location : Earth

+

Phone : 333-333-2222

+

Email : test@gmail.com

+
+ + +
+ + + + diff --git a/89. Random User/style.css b/89. Random User/style.css new file mode 100644 index 0000000..1aa49a0 --- /dev/null +++ b/89. Random User/style.css @@ -0,0 +1,100 @@ +@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@200;300;400;500;600;700&display=swap"); + +* { + margin: 0; + padding: 0; + box-sizing: border-box; + font-family: "Poppins", sans-serif; +} + +body { + display: flex; + align-items: center; + justify-content: center; + background-color: #ecf0f3; + min-height: 100vh; +} + +.wrapper, +.wrapper .img-area { + background: #ecf0f3; + box-shadow: -3px -3px 7px #fff, 3px 3px 5px #ceced1; +} + +.wrapper { + position: relative; + width: 350px; + padding: 30px; + border-radius: 10px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + margin: 15px; +} + +.wrapper .img-area { + height: 150px; + width: 150px; + border-radius: 50%; + display: flex; + justify-content: center; + align-items: center; +} + +.img-area .inner-area { + height: calc(100% - 25px); + width: calc(100% - 25px); + border-radius: 50%; +} + +.inner-area img { + height: 100%; + width: 100%; + border-radius: 50%; + object-fit: cover; +} + +.wrapper #name { + font-size: 23px; + font-weight: 500; + color: #31344b; + margin: 10px 0 5px 0; +} + +.wrapper #btn { + position: relative; + width: 150px; + border: none; + outline: none; + padding: 5px; + color: #31344b; + font-size: 13px; + font-weight: 450; + border-radius: 5px; + cursor: pointer; + z-index: 4; + margin: 10px 0 15px 0; + background-color: #ecf0f3; + box-shadow: -3px -3px 7px #fff, 3px 3px 5px #ceced1; +} + +.wrapper .horizon { + width: 330px; + height: 2px; + border-width: 0; + background: #e4e4e4; + margin: 10px 0 5px 0; +} + +.wrapper .info { + color: #44476a; + font-size: 14px; + font-weight: 500; + color: #31344b; + text-align: left; +} + +.info p { + margin-bottom: 20px; +} diff --git a/90. Construction Landing Page/Images/Zayn.jpg b/90. Construction Landing Page/Images/Zayn.jpg new file mode 100644 index 0000000..201632f Binary files /dev/null and b/90. Construction Landing Page/Images/Zayn.jpg differ diff --git a/90. Construction Landing Page/Images/one.jpg b/90. Construction Landing Page/Images/one.jpg new file mode 100644 index 0000000..47679f1 Binary files /dev/null and b/90. Construction Landing Page/Images/one.jpg differ diff --git a/90. Construction Landing Page/Images/scott-blake-x-ghf9LjrVg-unsplash.jpg b/90. Construction Landing Page/Images/scott-blake-x-ghf9LjrVg-unsplash.jpg new file mode 100644 index 0000000..404da50 Binary files /dev/null and b/90. Construction Landing Page/Images/scott-blake-x-ghf9LjrVg-unsplash.jpg differ diff --git a/90. Construction Landing Page/Images/three.jpg b/90. Construction Landing Page/Images/three.jpg new file mode 100644 index 0000000..72ddc61 Binary files /dev/null and b/90. Construction Landing Page/Images/three.jpg differ diff --git a/90. Construction Landing Page/Images/two.jpg b/90. Construction Landing Page/Images/two.jpg new file mode 100644 index 0000000..8247b3b Binary files /dev/null and b/90. Construction Landing Page/Images/two.jpg differ diff --git a/90. Construction Landing Page/index.html b/90. Construction Landing Page/index.html new file mode 100644 index 0000000..f6a0994 --- /dev/null +++ b/90. Construction Landing Page/index.html @@ -0,0 +1,243 @@ + + + + + + + Dream Home + + + + + +
+
+

Build Your

+

+ DREAM HOME +

+

WE CONSTRUCT YOUR FUTURE

+ Learn More +
+
+ +

+ OUR SERVICES +

+ + +
+ +
+
+
+

Construction

+
+
+
+

ARCHITECTURE PLANING

+
+
+
+

CONSULTANCY

+
+
+
+ +

WHY CHOOSE US?

+ + +
+
+
+
+

1

+
+

HIGH QUALIFIED & TECHNICAL PROFESSIONALS

+
+
+
+

2

+
+

ADVANCE PLANING

+
+
+
+

3

+
+

STABILITY RESOURCES & EXPERTIES

+
+
+
+

4

+
+

PASSION, INTEGRITY, & PUNCTUALITY

+
+
+
+

5

+
+

BREADTH OF SERVICES

+
+
+
+
+
+
+ +

+ PROJECT #DETAILS +

+ + +
+
+
+
+
+
+

ARCHITECTURE DESIGN

+
+
+

1

+
+

2D & 3D MODELING

+
+
+
+

2

+
+

INTERIAL & EXTERIOR DESIGN

+
+
+
+

3

+
+

LANDSCAPING & OUTDOOR GARDENING

+
+
+
+

4

+
+

+ ELECTRICAL, PLUMBING & SEWERAGE DRAWING PLANE. +

+
+
+
+

5

+
+

SOIL INVESTIGATION

+
+
+
+ +
+
+

CONSTRUCTION

+ +
+
+

1

+
+

RESIDENTIAL & COMMERCIAL PROJECTS

+
+
+
+

2

+
+

TURNKEY PROJECT (WITH MATERIAL)

+
+
+
+

3

+
+

LANDSCAPING & OUTDOOR GARDENING

+
+
+
+

4

+
+

DEMOLATION

+
+
+
+

5

+
+

RENOVATION & RE-CONSTRUCTION

+
+
+
+
+
+
+ + +
+
+
+
+
+

REAL ESTATE

+
+
+

1

+
+

+ B - 17 MULTI GARDEN

+
+
+
+

2

+
+

PARK VIEW CITY

+
+
+
+

3

+
+

BEAUTY OF HILLS

+
+
+
+

4

+
+

+ FAISAL MARGALLAH CITY. +

+
+
+
+

5

+
+

BLUE WORLD CITY

+
+
+
+ +
+ + + + Submit +
+ + + + diff --git a/90. Construction Landing Page/style.css b/90. Construction Landing Page/style.css new file mode 100644 index 0000000..8327fb0 --- /dev/null +++ b/90. Construction Landing Page/style.css @@ -0,0 +1,291 @@ +* { + padding: 0; + margin: 0; + box-sizing: border-box; +} + +/* GLOBAL STYLES */ +:root { + --primary-color: #87bc29; + --primary-font: Algerian; + --bg-image-center: no-repeat center/cover; +} + +.center { + text-align: center; +} + +/* ***** NAVIGATION ***** */ +.nav { + display: flex; + justify-content: space-around; + align-items: center; + flex-wrap: wrap; + text-align: center; + background-color: rgba(0, 0, 0, 0.5); + position: fixed; + width: 100%; + padding: 20px; + z-index: 999; +} + +.list-items { + display: inline; +} + +.list-items a { + padding: 20px; + text-decoration: none; + font-family: sans-serif; + color: #fff; +} + +.list-items a:hover { + border-bottom: 2px solid #fff; +} + +.nav__logo h1 { + color: #fff; + font-size: 2rem; + text-align: center; +} + +span { + color: var(--primary-color); +} + +/* ***** HEADER ***** */ +.hero { + background: linear-gradient(to left, rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.616)), + url("Images/scott-blake-x-ghf9LjrVg-unsplash.jpg") var(--bg-image-center) + fixed; +} + +.hero__headings-container { + height: 100vh; + display: flex; + flex-direction: column; + justify-content: center; + align-items: flex-start; + font-family: sans-serif; + margin-left: 10rem; + color: #fff; +} + +.hero__main-headings { + font-size: 5rem; + color: white; +} + +.main-span { + font-family: var(--primary-font); +} + +.hero__headings-container p { + font-weight: bold; +} + +.main-btn { + text-decoration: none; + margin-top: 20px; + color: #fff; + border-bottom: 2px solid var(--primary-color); + padding-bottom: 5px; + font-weight: bold; +} + +/* ****** SERVICES *******/ +.main-headings { + font-family: sans-serif; + font-size: 3rem; + font-weight: normal; + margin: 50px; + transition-property: all; + transition-duration: 0.5s; +} + +.main-headings:hover { + transform: skew(30deg); +} + +/* CARDS */ +.cards { + display: flex; + justify-content: center; + align-items: center; + flex-wrap: wrap; +} + +.card { + padding: 20px; + margin: 20px; + transition-property: all; + transition-duration: 1s; + border: 1px solid #ccc; +} + +.card:hover { + box-shadow: 2px 2px 2px 2px #ccc; + transform: scale(1.1); + cursor: pointer; +} + +.card-image { + width: 300px; + height: 250px; +} + +.card p { + color: rgb(39, 39, 39); + font-family: sans-serif; + padding: 10px; +} + +.img-one { + background: url("Images/one.jpg") var(--bg-image-center); +} +.img-two { + background: url("Images/two.jpg") var(--bg-image-center); +} +.img-three { + background: url("Images/three.jpg") var(--bg-image-center); +} + +/* ******* WHY US ******* */ +.why-us { + display: flex; + justify-content: space-between; + flex-wrap: wrap; +} + +.lists-container { + margin-left: 30px; + font-family: sans-serif; +} + +.list { + display: flex; + align-items: center; + text-align: center; +} + +.list-number { + width: 30px; + height: 30px; + border: 2px solid var(--primary-color); + border-radius: 50%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + margin: 10px 20px; +} + +.list-number p { + color: var(--primary-color); + text-align: center; +} + +.list-info { + color: rgb(122, 122, 122); + transition-property: all; + transition-duration: 0.7s; +} + +.list-info:hover { + transform: scale(1.1); + font-weight: bold; +} + +.owner-image { + background: url(Images/Zayn.jpg) no-repeat top/cover; + width: 300px; + height: 300px; + margin-right: 10rem; + border-radius: 50%; + border: 10px solid var(--primary-color); + transition-property: all; + transition-duration: 1s; +} + +.owner-image:hover { + transform: scale(1.2); +} + +/* ******* PROJECT DETAILS ******* */ +.project-details__container-left { + display: flex; + justify-content: space-around; + align-items: center; + flex-wrap: wrap; + margin-top: 10rem; + font-family: sans-serif; +} + +.project-details__container-right { + display: flex; + justify-content: space-around; + align-items: center; + flex-wrap: wrap; + margin-top: 10rem; + font-family: sans-serif; +} + +.project-details-img { + box-shadow: 10px 10px 5px var(--primary-color); + transition-property: all; + transition-duration: 1s; +} + +.project-details-img:hover { + transform: scale(1.1); + box-shadow: 20px 20px 10px var(--primary-color); + transform: skew(10deg); +} + +.title { + margin-left: 40px; +} + +/* ********* FORM ********* */ +form { + display: flex; + flex-direction: column; + justify-content: center; + align-items: flex-start; + margin: 10rem 10rem; +} + +input { + border: none; + border-bottom: 1px solid #ccc; + margin-bottom: 20px; + outline: none; + width: 50%; +} + +input:focus { + border-bottom: 2px solid var(--primary-color); +} + +.form-btn { + text-decoration: none; + color: var(--primary-color); + border-bottom: 3px solid var(--primary-color); +} + +/* ********* FOOTER ********* */ +footer { + height: 30vh; + background-color: #000000be; + display: flex; + justify-content: center; + align-items: center; +} + +footer > a { + color: #fff; + text-decoration: none; + margin: 20px; + font-family: "IBM Plex Sans Condensed", sans-serif; +} diff --git a/91. Foody Landing Page/assets/Images/ian-dooley-d1UPkiFd04A-unsplash.jpg b/91. Foody Landing Page/assets/Images/ian-dooley-d1UPkiFd04A-unsplash.jpg new file mode 100644 index 0000000..871cf26 Binary files /dev/null and b/91. Foody Landing Page/assets/Images/ian-dooley-d1UPkiFd04A-unsplash.jpg differ diff --git a/91. Foody Landing Page/assets/Images/img-1.png b/91. Foody Landing Page/assets/Images/img-1.png new file mode 100644 index 0000000..7a5e057 Binary files /dev/null and b/91. Foody Landing Page/assets/Images/img-1.png differ diff --git a/91. Foody Landing Page/assets/Images/img-2.png b/91. Foody Landing Page/assets/Images/img-2.png new file mode 100644 index 0000000..2926d44 Binary files /dev/null and b/91. Foody Landing Page/assets/Images/img-2.png differ diff --git a/91. Foody Landing Page/index.html b/91. Foody Landing Page/index.html new file mode 100644 index 0000000..28e30aa --- /dev/null +++ b/91. Foody Landing Page/index.html @@ -0,0 +1,107 @@ + + + + + + + Foody + + + + +
+

Foody

+
+
+

A Chef In Every Tasty Meal Box

+ +
+ +
+
+ +
+
+
+
We Deliver Anywhere
+

+ Each fresh meal is perfectly sized for 1 person to enjoy at 1 + sittings.
+ Our fully-prepared meals are delivered freash, & to eat in 3 minutes. +

+ +
+
+ +
+

Why Foody Meal

+
+
+

Variety

+
+

60+ recipes a week, cooked from 10 mins

+

+ Family classics, global cuisines plus Joe Wickss health rang +

+

Tasty plant based and gluten free options too

+
+
+

Quality

+
+

Fresh ingredients from trusted suppliers

+

100% British fresh meat

+

+ All recipes tried, tasted and loved by our chefs and customers +

+
+
+

Simplicity

+
+

Easy-to follow recipe cards

+

Precise ingredients with zero food waste

+

Precise ingredients with zero food waste

+
+
+ +
+ +
+
+
+

+ "I love coming home to a foody with four different ban ging recipes + each week. With so many dishes to choose from there's always something + new to try!" +

+

+ Joe Wicks | The Body Coach +

+
+
+ + + + diff --git a/91. Foody Landing Page/style.css b/91. Foody Landing Page/style.css new file mode 100644 index 0000000..65d8b0b --- /dev/null +++ b/91. Foody Landing Page/style.css @@ -0,0 +1,290 @@ +@import url("https://fonts.googleapis.com/css2?family=Playfair+Display:wght@800&family=Roboto&display=swap"); + +* { + padding: 0; + margin: 0; + box-sizing: border-box; +} + +:root { + --main-color: #d41b27; + --black-color: #050505; + --main-font: "Playfair Display"; + --secondary-font: Roboto; +} + +.logo { + color: #000; + font-family: var(--main-font); + margin-left: 4rem; +} + +.highlight { + color: var(--main-color); +} + +.main-btn-fill { + background: var(--main-color); + text-decoration: none; + color: #fff; + padding: 10px 20px; + border-radius: 50px; + font-family: var(--secondary-font); + margin: 10px; +} + +.main-btn { + background: #000; + text-decoration: none; + color: #fff; + padding: 10px 20px; + border-radius: 50px; + font-family: var(--secondary-font); + margin: 10px; +} + +.btn-animation:hover { + background: #fff; + color: #000; + border: 1px solid #000; + transition: 0.5s ease; +} + +/* HEADER */ +.top-header { + height: 80vh; +} + +.top-header__content { + display: flex; + justify-content: center; + align-items: center; + margin-top: 2rem; + text-align: center; +} + +.main-headings { + color: var(--black-color); + font-family: var(--main-font); + font-size: 400%; + margin: 3rem; +} + +.main-img { + margin-right: 20px; + width: 40%; + height: 40%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +/* SECTION 2 */ +.delivery { + display: flex; + flex-wrap: wrap; + justify-content: center; + align-items: center; + background: #000; + color: #fff; + padding-top: 10rem; + padding-bottom: 5rem; +} + +.delivery__img { + width: 250px; + height: 250px; + background-image: url(assets/Images/img-2.png); + background-position: center; + background-size: cover; + margin-right: 3rem; +} + +.delivery__content { + width: 30rem; +} + +.delivery__headings { + font-family: var(--secondary-font); + margin-bottom: 10px; + font-size: 3rem; + font-weight: normal; +} + +.delivery__sub-headings { + font-family: var(--secondary-font); + margin-bottom: 2rem; +} + +.delivery-btn { + border: 1px solid #fff; +} + +/* SECTION 3 */ +.why-foody { + height: 110vh; + background: #fff; + color: #000; +} + +.foody-headings { + text-align: center; + margin-top: 10rem; + padding-top: 2rem; +} + +.why-foody__cards { + display: flex; + justify-content: center; + align-items: center; +} + +.cards__card { + width: 30%; + margin: 0 auto; +} + +.card__title { + font-family: var(--main-font); + font-size: 2rem; + text-align: center; + margin-bottom: 20px; +} + +.card__img { + width: 120px; + height: 120px; + background-size: cover; + background-position: center; + margin: 20px; + margin: 0 auto; +} + +.img-one { + background-image: url("assets/Images/img-2.png"); +} + +.card-info { + margin: 20px; + font-family: var(--secondary-font); + text-align: center; + line-height: 20px; +} + +.btn-container { + text-align: center; + margin-top: 10px; +} + +/* SECTION 4 */ +.testimonial { + height: 100vh; + display: flex; + flex-wrap: wrap; + justify-content: center; + align-items: center; + background: #000; + color: #fff; +} + +.user-img { + background-image: url("assets/Images/ian-dooley-d1UPkiFd04A-unsplash.jpg"); + background-size: cover; + background-position: center; + width: 26%; + height: 30rem; + box-shadow: 20px 20px 2px 2px #fff; +} + +.user-rating-info { + width: 20rem; + height: 20px; + margin-left: 40px; + font-size: 20px; +} + +.user-name { + font-size: 20px; + margin-top: 20px; + font-family: var(--main-font); +} + +/* FOOTER */ +.footer { + display: flex; + flex-wrap: wrap; + justify-content: center; + align-items: center; + background: #fff; + color: #000; + height: 40vh; +} + +.footer-card { + margin: 0 auto; + font-family: var(--secondary-font); + font-weight: normal; +} + +.footer-title { + margin-bottom: 20px; +} + +.footer-info { + margin-bottom: 10px; +} + +@media only screen and (max-width: 600px) { + .main-headings { + font-size: 2rem; + } + + .btns { + display: flex; + justify-content: center; + align-items: center; + } + + .delivery { + text-align: center; + } + .delivery__img { + margin: 0 auto; + margin-bottom: 2rem; + } + + .delivery__headings { + font-size: 2rem; + } + .delivery__sub-headings { + font-size: 12px; + } + + .why-foody { + height: 120vh; + } + + .card__title { + font-size: 1.4rem; + } + + .user-img { + width: 50%; + height: 50%; + } + + .user-rating-info { + margin-bottom: 8rem; + text-align: center; + } + .user-name { + font-size: 20px; + margin-top: 20px; + font-family: var(--main-font); + } + + .footer { + margin-top: 10rem; + } +} diff --git a/92. Coffee/Images/1.png b/92. Coffee/Images/1.png new file mode 100644 index 0000000..d29ab22 Binary files /dev/null and b/92. Coffee/Images/1.png differ diff --git a/92. Coffee/Images/2.png b/92. Coffee/Images/2.png new file mode 100644 index 0000000..dc0ac85 Binary files /dev/null and b/92. Coffee/Images/2.png differ diff --git a/92. Coffee/Images/3.png b/92. Coffee/Images/3.png new file mode 100644 index 0000000..6243430 Binary files /dev/null and b/92. Coffee/Images/3.png differ diff --git a/92. Coffee/Images/4.png b/92. Coffee/Images/4.png new file mode 100644 index 0000000..32e6ccc Binary files /dev/null and b/92. Coffee/Images/4.png differ diff --git a/92. Coffee/Images/pexels-chitokan-2183027-removebg-preview.png b/92. Coffee/Images/pexels-chitokan-2183027-removebg-preview.png new file mode 100644 index 0000000..5db372b Binary files /dev/null and b/92. Coffee/Images/pexels-chitokan-2183027-removebg-preview.png differ diff --git a/92. Coffee/Images/pexels-nao-triponez-129207.jpg b/92. Coffee/Images/pexels-nao-triponez-129207.jpg new file mode 100644 index 0000000..29950ed Binary files /dev/null and b/92. Coffee/Images/pexels-nao-triponez-129207.jpg differ diff --git a/92. Coffee/index.html b/92. Coffee/index.html new file mode 100644 index 0000000..e94cf1a --- /dev/null +++ b/92. Coffee/index.html @@ -0,0 +1,144 @@ + + + + + + Coffee + + + + + + + +
+

START YOUR DAY

+

WITH OUR COFFEE

+ +
+ + + +
+
+
+
+
+
+ +

Our Story

+
+

+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolor + doloremque reiciendis ea voluptatibus. Quis modi ratione incidunt + ipsam +

+ +
+
+ + +
+
+
+

+ Perfect Place
+ To Enjoy Your
+ Coffee +

+
+

Lorem ipsum dolor sit amet consectetur adipisicing elit.

+ +
+ +
+ +
+
+ + +
+

Products

+ +
+
+
+
+

Mocha

+
+
+

Espresso

+

Chocolate

+

Steamed Milk

+
+ +
+
+
+
+

Mocha

+
+
+

Espresso

+

Chocolate

+

Steamed Milk

+
+ +
+
+
+
+

Mocha

+
+
+

Espresso

+

Chocolate

+

Steamed Milk

+
+ +
+
+
+ + +
+ +
+ +

+ Copyright @ 2022 HuXn WebDev | Provided by HuXn WebDev +

+ + + + diff --git a/92. Coffee/style.css b/92. Coffee/style.css new file mode 100644 index 0000000..e191dc5 --- /dev/null +++ b/92. Coffee/style.css @@ -0,0 +1,325 @@ +@import url("https://fonts.googleapis.com/css2?family=Playfair+Display+SC:wght@700&display=swap"); + +:root { + --main-color: #deab5f; + --primary-color: #312e2e; +} + +/* Utility Styles */ +button { + padding: 10px 30px; + background: var(--main-color); + border: none; + cursor: pointer; +} + +* { + padding: 0; + margin: 0; + box-sizing: border-box; +} + +body { + background: #100e0f; +} + +nav { + display: flex; + justify-content: space-around; + align-items: center; + color: #fff; + font-family: sans-serif; + padding-top: 15px; +} + +li { + display: inline; + list-style: none; +} + +li a { + color: #fff; + text-decoration: none; + margin-left: 40px; +} + +li a:hover { + border-bottom: 2px solid #deab5f; +} + +.header { + background: url("Images/pexels-nao-triponez-129207.jpg"); + background-position: center; + background-size: cover; + height: 100vh; + font-family: "Playfair Display SC", serif; + font-weight: normal; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + color: #fff; + position: relative; + text-align: center; +} + +.main-headings { + position: absolute; + top: 7rem; + font-size: 4rem; + word-spacing: 10px; +} +.primary-heading { + position: absolute; + bottom: 4rem; + font-size: 4rem; + word-spacing: 10px; + margin-bottom: -40px; +} + +.main-btn { + position: absolute; + bottom: 2rem; + padding: 10px 30px; + margin-top: 20px; + background: transparent; + background: var(--main-color); + border: none; + cursor: pointer; + transform: translateY(60px); +} + +#our-story { + margin-top: 15%; + display: flex; + flex-wrap: wrap; + justify-content: space-around; + align-items: center; +} + +.img { + width: 400px; + height: 400px; + background: url(Images/pexels-chitokan-2183027-removebg-preview.png); + background-position: center; + background-size: cover; +} + +.title-style { + display: flex; + align-items: center; +} + +.title { + font-family: "Playfair Display SC", serif; + font-size: 4rem; + color: #fff; + transform: translateX(-100px); +} + +.line { + width: 100px; + height: 2px; + background: #fff; + transform: translateX(-120px); +} + +.section-content p { + max-width: 500px; + color: #fff; + font-family: sans-serif; + line-height: 20px; + margin: 20px 0; +} + +.coffee-container { + display: flex; + justify-content: space-around; + align-items: center; + flex-wrap: wrap; + margin-top: 10rem; +} + +.content-section p { + max-width: 500px; +} + +.img-container { + width: 500px; + height: 400px; +} + +.img-2 { + width: 400px; + height: 400px; +} + +.title-two { + font-size: 3rem; + color: #fff; + font-family: "Playfair Display SC", serif; + font-weight: normal; +} + +.content-section p { + color: white; + margin-top: 20px; + font-family: sans-serif; +} + +.products { + margin-top: 5rem; +} + +.title-three { + font-size: 4rem; + margin-left: 10rem; + margin-top: 10rem; + margin-bottom: 10rem; +} + +.cards { + display: flex; + flex-wrap: wrap; + flex-direction: row; + justify-content: space-around; + align-items: center; +} + +.card { + border: 2px solid #deab5f; + padding: 0 20px; + height: 400px; + width: 300px; + display: flex; + flex-direction: column; + justify-content: space-around; + align-items: center; + border-radius: 5px; + position: relative; + margin-bottom: 4rem; +} + +.card-img { + width: 100px; + height: 100px; + position: absolute; + top: -60px; +} + +.img-one { + background: url(Images/1.png); + background-position: center; + background-size: cover; +} +.img-two { + background: url(Images/3.png); + background-position: center; + background-size: cover; +} +.img-three { + background: url(Images/4.png); + background-position: center; + background-size: cover; +} + +.card-title { + color: #fff; + font-family: sans-serif; + margin-top: 50px; +} + +.card .items p { + color: #fff; + margin: 20px 0; + font-family: sans-serif; +} + +/* footer */ +footer { + height: 50vh; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: center; + color: #fff; + font-family: sans-serif; +} + +footer .container { + margin: 20px; + max-width: 300px; + text-align: center; +} + +footer .heading-info { + margin-bottom: 20px; +} + +footer p { + line-height: 25px; +} + +span { + color: #deab5f; +} + +hr { + margin-bottom: 20px; + border-color: #deab5f; + width: 500px; + margin: 0 auto; +} + +.para { + color: white; + font-family: sans-serif; + text-align: center; + margin-top: 20px; +} + +@media only screen and (max-width: 768px) { + .main-headings, + .primary-heading { + font-size: 2.5rem; + } + + #our-story { + text-align: center; + } + + #our-story .title { + transform: translateX(50px); + } + + #our-story .line { + display: none; + } + + .content-section { + text-align: center; + } + + #our-story .img-container .img { + width: 70%; + text-align: center; + margin: 0 auto; + } + + .coffee-container .img-container { + margin-top: 5rem; + width: 50%; + } + + hr { + width: 400px; + } + + .hr-two { + display: none; + } + + .para { + margin-top: 10rem; + } +} diff --git a/93. The Art/index.html b/93. The Art/index.html new file mode 100644 index 0000000..5aa4bcb --- /dev/null +++ b/93. The Art/index.html @@ -0,0 +1,154 @@ + + + + + + theArt + + + + + + + +
+

+ WHAT
+ IS CALLED ART? +

+

+ Art, also called (to distinguish it from other art forms) visual art, a + visual object or experience consciously + created through an expression of skill or imagination. +

+
+ +
+ + + + + + +
+ +
+

7 TYPES OF ART

+

+ The seven different art forms are + + Painting, Sculpture, Literature, Architecture, Theater, Film, and + Music + + . However, back in the day, the seven different art forms were called + the Liberal Arts, consisting of Grammar, Logic, Rhetoric, Arithmetic, + Geometry, Astronomy, and Music. +

+ +
+
+

PAINTING

+ +
+
+

SCULPTURE

+ +
+
+

LITERATURE

+ +
+
+

ARCHITECTURE

+ +
+
+

CINEMA

+ +
+
+

MUSIC

+ +
+
+

THEATER

+ +
+
+
+ + + + diff --git a/93. The Art/style.css b/93. The Art/style.css new file mode 100644 index 0000000..950a5b0 --- /dev/null +++ b/93. The Art/style.css @@ -0,0 +1,186 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +/* Fonts */ +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300&display=swap"); +@import url("https://fonts.googleapis.com/css?family=Reenie+Beanie&display=swap"); + +/* Basic */ +body { + background-color: #ebeae9; +} + +html { + font-family: "Open Sans", sans-serif; +} + +nav { + display: flex; + justify-content: space-between; + align-items: center; + color: #fff; + padding: 20px; + margin-bottom: 5rem; +} + +nav ul { + margin-left: 5rem; + list-style: none; +} + +li a { + text-decoration: none; + color: #000; +} + +nav .burger { + margin-right: 5rem; + cursor: pointer; +} + +nav .burger span { + height: 4px; + border: 2px solid black; + margin: 4px; + background: #000; +} + +header { + margin: 6rem; +} + +.main-headings { + width: 50%; + font-size: 3rem; +} + +.primary-headings { + width: 50%; + margin-top: 3rem; + font-size: 1.5rem; + line-height: 30px; +} + +.bg-gray { + background: rgb(53, 53, 53); + color: #fff; + padding: 2px 10px; + font-weight: bold; +} +/* Header End */ + +/* Main Start */ +main { + margin: 0 4rem; + display: flex; + flex-wrap: wrap; + margin: 40px; +} + +main .img { + width: 50%; +} + +/* SECTION THREE START */ +.section-three { + margin-left: 5rem; +} + +.section-three .primary-headings { + margin-bottom: 10rem; +} + +.list { + display: flex; + flex-wrap: wrap; + justify-content: center; + align-items: center; +} + +.section-three .item h1 { + font-size: 2rem; + color: rgb(53, 53, 53); + margin-left: 1rem; +} + +.section-three img { + width: 400px; + height: 500px; + margin: 50px; +} +/* SECTION THREE END */ + +/* FOOTER START */ +footer { + background: var(--primary-color); + margin-top: 10rem; + display: flex; + flex-wrap: wrap; + justify-content: space-around; + align-items: center; + height: 100vh; + color: #fff; +} + +footer .logo-container h1 { + font-size: 4rem; + font-family: var(--main-font); + margin-bottom: 20px; +} + +footer .logo-container p { + max-width: 400px; + font-family: sans-serif; + line-height: 25px; +} + +footer .about-company { + display: flex; + flex-wrap: wrap; + justify-content: center; + align-items: center; +} + +footer .about-company .container { + margin-right: 40px; + margin-top: 20px; +} + +.about-company .container h1 { + margin-bottom: 50px; +} + +.about-company .container p { + font-family: sans-serif; + margin-bottom: 20px; +} + +footer { + height: 100vh; + background: rgb(43, 43, 43); +} + +@media screen and (max-width: 740px) { + header .main-headings { + width: 100%; + } + header .primary-headings { + width: 100%; + font-size: 1.5rem; + } + + .section-three .main-headings { + width: 100%; + } + .section-three .primary-headings { + width: 100%; + font-size: 1.5rem; + } + + .section-three img { + margin: 0; + } +} diff --git a/94. Hoodie/images/Product/1.png b/94. Hoodie/images/Product/1.png new file mode 100644 index 0000000..4edbbe5 Binary files /dev/null and b/94. Hoodie/images/Product/1.png differ diff --git a/94. Hoodie/images/Product/2.png b/94. Hoodie/images/Product/2.png new file mode 100644 index 0000000..26994e4 Binary files /dev/null and b/94. Hoodie/images/Product/2.png differ diff --git a/94. Hoodie/images/Product/3.png b/94. Hoodie/images/Product/3.png new file mode 100644 index 0000000..c378be1 Binary files /dev/null and b/94. Hoodie/images/Product/3.png differ diff --git a/94. Hoodie/images/Product/4.png b/94. Hoodie/images/Product/4.png new file mode 100644 index 0000000..6096ea8 Binary files /dev/null and b/94. Hoodie/images/Product/4.png differ diff --git a/94. Hoodie/images/alireza-esmaeeli-BGSZ1t80rpM-unsplash.jpg b/94. Hoodie/images/alireza-esmaeeli-BGSZ1t80rpM-unsplash.jpg new file mode 100644 index 0000000..85df542 Binary files /dev/null and b/94. Hoodie/images/alireza-esmaeeli-BGSZ1t80rpM-unsplash.jpg differ diff --git a/94. Hoodie/images/gesphotoss-1i9K55ni5Dk-unsplash.jpg b/94. Hoodie/images/gesphotoss-1i9K55ni5Dk-unsplash.jpg new file mode 100644 index 0000000..1c79bed Binary files /dev/null and b/94. Hoodie/images/gesphotoss-1i9K55ni5Dk-unsplash.jpg differ diff --git a/94. Hoodie/images/joshua-rondeau-xazIYnxpS2Q-unsplash.jpg b/94. Hoodie/images/joshua-rondeau-xazIYnxpS2Q-unsplash.jpg new file mode 100644 index 0000000..21f4995 Binary files /dev/null and b/94. Hoodie/images/joshua-rondeau-xazIYnxpS2Q-unsplash.jpg differ diff --git a/94. Hoodie/images/milan-popovic-kOnmHdLJTNI-unsplash.jpg b/94. Hoodie/images/milan-popovic-kOnmHdLJTNI-unsplash.jpg new file mode 100644 index 0000000..1982c24 Binary files /dev/null and b/94. Hoodie/images/milan-popovic-kOnmHdLJTNI-unsplash.jpg differ diff --git a/94. Hoodie/images/oswaldo-ibanez-1NPUmTaiMeg-unsplash.jpg b/94. Hoodie/images/oswaldo-ibanez-1NPUmTaiMeg-unsplash.jpg new file mode 100644 index 0000000..3ace530 Binary files /dev/null and b/94. Hoodie/images/oswaldo-ibanez-1NPUmTaiMeg-unsplash.jpg differ diff --git a/94. Hoodie/images/yogendra-singh-uWs_N5Dlyiw-unsplash.jpg b/94. Hoodie/images/yogendra-singh-uWs_N5Dlyiw-unsplash.jpg new file mode 100644 index 0000000..609abbb Binary files /dev/null and b/94. Hoodie/images/yogendra-singh-uWs_N5Dlyiw-unsplash.jpg differ diff --git a/94. Hoodie/index.html b/94. Hoodie/index.html new file mode 100644 index 0000000..7b8b6ea --- /dev/null +++ b/94. Hoodie/index.html @@ -0,0 +1,174 @@ + + + + + + Hoodie + + + + + +
+
+

+ New Cocktail
+ Hoodies +

+

+ Lorem Ipsum dolor sit amet, constecture adipiscing elit, sed do + eiusmod. Sit amet, constecture orem Ipsum dolor adipiscing elit, sed + do eiusmod. +

+
+ + +
+
+
+
+
+
+ +
+
+
+
+ +
+

+ Summer Sell
Offer
+ +

+

+ Lorem Ipsum dolor sit amet, constecture adipiscing elit, sed do + eiusmod. +

+ +
+ +
+ + +
+

OUR PRODUCTS

+ +
+ + + +
+ +
+
+
+ +
+

Red Hoodie

+

$52.99

+ View Product +
+
+
+ +
+

Black Luxurious Hoodie

+

$52.99

+ View Product +
+
+
+ +
+

Teal Expensive Hoodie

+

$52.99

+ View Product +
+
+
+ +
+

Red Hoodie

+

$52.99

+ View Product +
+
+
+ +
+

Black Luxurious Hoodie

+

$52.99

+ View Product + +
+
+
+ +
+

Teal Expensive Hoodie

+

$52.99

+ View Product +
+
+
+ + +

OUR CLIENT'S SAYS

+
+ +
+
+
+
+ +

Anna Maria

+ +

Lorem Ipsum dolor sit amet, constecture adipiscing elit, sed

+
+ +
+
+
+
+

Anna Maria

+ +

Lorem Ipsum dolor sit amet, constecture adipiscing elit, sed

+
+ +
+
+
+
+

Anna Maria

+

Lorem Ipsum dolor sit amet, constecture adipiscing elit, sed.

+
+
+ + + + + diff --git a/94. Hoodie/style.css b/94. Hoodie/style.css new file mode 100644 index 0000000..8b34484 --- /dev/null +++ b/94. Hoodie/style.css @@ -0,0 +1,334 @@ +/* Playfair Display */ +@import url("https://fonts.googleapis.com/css2?family=Playfair+Display+SC:wght@700&display=swap"); + +/* Roboto */ +@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@100;300&display=swap"); + +* { + padding: 0; + margin: 0; + box-sizing: border-box; +} + +:root { + --main-color: #239b7e; + --main-font: "Playfair Display SC", serif; + --primary-font: "Roboto", sans-serif; +} + +nav { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; + padding: 20px; + font-family: var(--primary-font); + font-weight: bold; +} + +.logo { + margin-left: 5rem; +} + +.burger { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + cursor: pointer; + margin-right: 5rem; + /* --- uncomment this code --- */ + /* border: 2px solid #000; */ +} + +.burger span { + border: 2px solid var(--main-color); + width: 40px; + height: 1px; + margin: 2px; +} + +/* header */ +header { + display: flex; + flex-wrap: wrap; + justify-content: space-around; + align-items: center; + height: 90vh; + margin-top: 2rem; +} + +.main-headings { + font-size: 4rem; + font-family: var(--main-font); + transform: translateY(-40px); + color: #00000097; + line-height: 5rem; +} + +.main-headings span { + color: #000; +} + +.primary-headings { + max-width: 500px; + font-family: var(--primary-font); + line-height: 25px; + margin-bottom: 1rem; + color: #716d6d; +} + +.btn-fill { + background: var(--main-color); + color: #fff; + border: none; + padding: 12px 20px; + margin-right: 10px; + cursor: pointer; + transition: all 0.5s ease-out; +} + +.btn-fill:hover { + background-color: #fff; + border: 1px solid var(--main-color); + color: var(--main-color); +} + +.btn-outline.active { + border: 2px solid var(--main-color); + color: var(--main-color); + background: transparent; + padding: 10px 20px; + cursor: pointer; + transition: all 0.5s ease-out; +} + +.btn-outline.active:hover { + background: var(--main-color); + color: #fff; +} + +.btn-outline { + border: 2px solid #ccc; + color: #ccc; + background: transparent; + padding: 10px 20px; + cursor: pointer; + transition: all 0.5s ease-out; +} + +.btn-outline:hover { + border-color: var(--main-color); + color: var(--main-color); +} + +.img-container { + border-radius: 50%; + box-shadow: 4px 7px 5px 2px #bcbaba; +} + +.header-img { + border-radius: 100%; + background: url(images/oswaldo-ibanez-1NPUmTaiMeg-unsplash.jpg); + background-position: top; + background-size: cover; + width: 400px; + height: 400px; +} + +/* Section 1 */ +.section-one { + display: flex; + flex-wrap: wrap; + justify-content: space-around; + align-items: center; + margin-top: 7rem; +} + +.img-container { + border-radius: 50%; + box-shadow: 4px 7px 5px 2px #bcbaba; +} + +.section-one-img { + background: url(images/gesphotoss-1i9K55ni5Dk-unsplash.jpg); + background-position: top; + background-size: cover; +} + +.primary-headings { + max-width: 500px; + font-family: var(--primary-font); + line-height: 25px; + margin-bottom: 1rem; + color: #716d6d; +} + +/* Products */ +.products { + margin-top: 10rem; + display: flex; + flex-wrap: wrap; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.products .products-heading { + font-family: var(--primary-font); + font-size: 2rem; + margin-bottom: 3rem; +} + +.products .product-categories button { + margin-right: 20px; + margin-bottom: 2rem; +} + +.products .product-items-container { + display: flex; + flex-wrap: wrap; + justify-content: center; + align-items: center; + margin: 20px; + max-width: 60rem; +} + +.products .product-items-container .item { + margin: 20px; +} + +.products .product-items-container .item-layer { + background: #ebf1f0; + padding: 40px; + margin-right: 20px; + margin: 0 auto; + margin-bottom: 20px; +} + +.products .product-items-container .item-layer img { + width: 150px; + height: 200px; +} + +.products .product-items-container .item .item-name { + font-family: var(--primary-font); + margin-bottom: 10px; +} + +.products .product-items-container .item .item-price { + font-family: var(--primary-font); + margin-bottom: 10px; +} + +.products .product-items-container .item .view-product { + font-family: var(--primary-font); + margin-bottom: 10px; + text-decoration: none; + color: var(--main-color); + border-bottom: 1px solid var(--main-color); +} + +/* Customers */ +.customers-reviews { + margin-top: 7rem; + display: flex; + flex-wrap: wrap; + justify-content: space-around; + align-items: center; +} + +.customer { + text-align: center; +} + +.customers-heading { + font-family: var(--primary-font); + font-size: 2rem; + margin-bottom: 20px; + text-align: center; + margin-top: 10rem; +} + +.customers-reviews .customer-description { + font-size: 12px; + margin-top: 20px; + max-width: 200px; + text-align: center; + margin: 10px; + font-family: var(--primary-font); +} + +.customer .customer-img .img { + width: 200px; + height: 200px; + border-radius: 100%; + background-size: cover; + background-position: center; + margin: 0 auto; + margin-bottom: 20px; +} + +.customer-img .img-one { + background: url(images/yogendra-singh-uWs_N5Dlyiw-unsplash.jpg); +} +.customer-img .img-two { + background: url(images/joshua-rondeau-xazIYnxpS2Q-unsplash.jpg); +} +.customer-img .img-three { + background: url(images/milan-popovic-kOnmHdLJTNI-unsplash.jpg); +} + +footer { + background: #1f1e1e; + margin-top: 10rem; + color: #fff; + display: flex; + flex-wrap: wrap; + justify-content: space-around; + align-items: center; + height: 100vh; + font-family: var(--primary-font); +} + +footer .container .footer-heading { + margin-bottom: 3rem; +} + +footer .container .footer-primary-heading { + font-weight: normal; + font-size: 15px; + margin-bottom: 20px; +} + +/* You can make it responsive for your own screen if you wanna to, but for now this is good enough. */ +@media only screen and (max-width: 900px) { + header { + height: 120vh; + text-align: center; + } + + .section-one { + height: 120vh; + text-align: center; + } + + .header-img { + width: 250px; + height: 250px; + } + + .main-headings { + font-size: 3rem; + margin-top: 2rem; + } + + .primary-headings { + width: 400px; + } + + .customer .customer-img .img { + width: 150px; + height: 150px; + } +} diff --git a/95. Chairs/Images/bruno-emmanuelle--MUoHL1XULM-unsplash-removebg-preview.png b/95. Chairs/Images/bruno-emmanuelle--MUoHL1XULM-unsplash-removebg-preview.png new file mode 100644 index 0000000..d030972 Binary files /dev/null and b/95. Chairs/Images/bruno-emmanuelle--MUoHL1XULM-unsplash-removebg-preview.png differ diff --git a/95. Chairs/Images/daniil-silantev-1P6AnKDw6S8-unsplash-removebg-preview.png b/95. Chairs/Images/daniil-silantev-1P6AnKDw6S8-unsplash-removebg-preview.png new file mode 100644 index 0000000..7b321d6 Binary files /dev/null and b/95. Chairs/Images/daniil-silantev-1P6AnKDw6S8-unsplash-removebg-preview.png differ diff --git a/95. Chairs/Images/daniil-silantev-1P6AnKDw6S8-unsplash.jpg b/95. Chairs/Images/daniil-silantev-1P6AnKDw6S8-unsplash.jpg new file mode 100644 index 0000000..8fc93ff Binary files /dev/null and b/95. Chairs/Images/daniil-silantev-1P6AnKDw6S8-unsplash.jpg differ diff --git a/95. Chairs/Images/pexels-ron-lach-8346055-removebg-preview.png b/95. Chairs/Images/pexels-ron-lach-8346055-removebg-preview.png new file mode 100644 index 0000000..94514b1 Binary files /dev/null and b/95. Chairs/Images/pexels-ron-lach-8346055-removebg-preview.png differ diff --git a/95. Chairs/Images/scott-webb-eD853mTbBA0-unsplash-removebg-preview.png b/95. Chairs/Images/scott-webb-eD853mTbBA0-unsplash-removebg-preview.png new file mode 100644 index 0000000..4b4e060 Binary files /dev/null and b/95. Chairs/Images/scott-webb-eD853mTbBA0-unsplash-removebg-preview.png differ diff --git a/95. Chairs/index.html b/95. Chairs/index.html new file mode 100644 index 0000000..c78fdb9 --- /dev/null +++ b/95. Chairs/index.html @@ -0,0 +1,230 @@ + + + + + + Chairs + + + + + +
+
+

+ The Most
+ Comfortable
+ Chair For You +

+

+ Lorem Ipsum is simply dummy text of the printing and typesetting + industry. Lorem Ipsum has been the industry's standard dummy text ever + since the 1500s +

+
+ + +
+
+ +
+ +
+
+
+
+

12k+

+

Premium Product

+
+
+

21k+

+

Happy Customers

+
+
+

28k+

+

Awards Winnings

+
+
+ +
+

+ Shop Popular
+ Categories +

+ +
+
+
+
+
+
+

Workshop Chair

+

Indoor Chair

+
+
+
+
+
+
+
+

Workshop Chair

+

Indoor Chair

+
+
+
+
+
+
+
+

Workshop Chair

+

Indoor Chair

+
+
+
+
+ + +
+
+ +
+
+
+
+
+
+ +
+

Why Choose Us?

+

+ Lorem Ipsum is simply dummy text of the printing and typesetting + industry. Lorem Ipsum has been the industry's standard dummy text ever + since the 1500s. +

+
+
+
+

Longevity

+

+ Lorem Ipsum is simply dummy text of the printing and typesetting + industry. +

+
+
+

Quality

+

+ Lorem Ipsum is simply dummy text of the printing and typesetting + industry. +

+
+
+

Heritage

+

+ Lorem Ipsum is simply dummy text of the printing and typesetting + industry. +

+
+
+
+

Community

+

+ Lorem Ipsum is simply dummy text of the printing and typesetting + industry. +

+
+
+
+
+ +
+
+

Best Features

+

+ Lorem Ipsum is simply dummy text of the printing and typesetting + industry. Lorem Ipsum has been the industry's standard dummy text ever + since the 1500s. +

+
+
+
+

Dilvery

+

+ Lorem Ipsum is simply dummy text of the printing and typesetting + industry. +

+
+
+
+

Gurantee

+

+ Lorem Ipsum is simply dummy text of the printing and typesetting + industry. +

+
+
+
+

Free Repair

+

+ Lorem Ipsum is simply dummy text of the printing and typesetting + industry. +

+
+
+
+ +
+ +
+
+ + + + diff --git a/95. Chairs/style.css b/95. Chairs/style.css new file mode 100644 index 0000000..55c7b5e --- /dev/null +++ b/95. Chairs/style.css @@ -0,0 +1,429 @@ +@import url("https://fonts.googleapis.com/css2?family=Playfair+Display&display=swap"); + +* { + padding: 0; + margin: 0; + box-sizing: border-box; +} + +:root { + --main-color: #e3e8e4; + --primary-color: #363636; + --main-font: "Playfair Display SC", serif; +} + +nav { + display: flex; + justify-content: space-around; + align-items: center; + text-align: center; + font-family: sans-serif; + padding: 10px; +} + +ul li { + display: inline; + list-style: none; +} + +ul li a { + text-decoration: none; + color: #000; + margin-left: 4rem; +} + +ul li a:hover { + border-bottom: 2px solid var(--primary-color); + padding-bottom: 10px; +} + +.btn-fill { + padding: 10px 30px; + background: var(--primary-color); + border: none; + border-radius: 100px; + color: #fff; + cursor: pointer; +} + +.btn-outline { + background: transparent; + border: none; + margin-left: 20px; + font-weight: bold; + cursor: pointer; +} + +/* header */ +header { + height: 100vh; + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; +} + +.content-container { + margin-left: 6rem; +} + +.main-headings { + font-size: 4rem; + font-family: var(--main-font); + color: #0000004f; + margin-bottom: 2rem; +} + +.main-headings span { + color: #000; +} + +.primary-headings { + max-width: 500px; + font-family: sans-serif; + line-height: 25px; + margin-bottom: 2rem; +} + +.img-container { + width: 500px; + height: 500px; + background: var(--main-color); + border-radius: 100%; +} + +.img-container img { + width: 400px; + height: 500px; + margin-left: 20px; + margin-bottom: 40px; +} + +/* popularity */ +.popularity { + display: flex; + justify-content: flex-end; + align-items: center; +} + +.popularity div { + margin-right: 5rem; +} + +.popularity div h1 { + font-size: 3rem; + text-align: center; + color: #363636; + font-family: var(--main-font); +} +.popularity div p { + color: #363636; + font-family: sans-serif; +} + +/* PRODUCTS */ +.products-heading { + text-align: center; + margin-top: 10rem; + margin-bottom: 5rem; + font-size: 4rem; + color: #0000004f; +} + +.products-heading span { + color: #000; +} + +.products { + display: flex; + flex-wrap: wrap; + justify-content: space-around; + align-items: center; +} + +.product { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + margin-top: 50px; +} + +.product .product-img-layer { + background: var(--main-color); + border-top-left-radius: 200px; + border-top-right-radius: 200px; + padding: 20px; +} + +.product .product-img-layer .img { + width: 200px; + height: 200px; +} + +.product .product-img-layer .img-one { + background: url(Images/daniil-silantev-1P6AnKDw6S8-unsplash-removebg-preview.png); + background-size: cover; + background-position: center; +} +.product .product-img-layer .img-two { + background: url(Images/bruno-emmanuelle--MUoHL1XULM-unsplash-removebg-preview.png); + background-size: cover; + background-position: center; +} +.product .product-img-layer .img-three { + background: url(Images/scott-webb-eD853mTbBA0-unsplash-removebg-preview.png); + background-size: cover; + background-position: center; +} + +.product-content { + background: var(--primary-color); + padding: 27px; + padding-bottom: 50px; + text-align: center; + color: #fff; +} + +.product-content .product-name { + font-family: sans-serif; + margin-bottom: 10px; +} + +.b-container { + text-align: center; +} + +.b-container button { + border: none; + background: transparent; + font-size: 2rem; + cursor: pointer; + margin: 0 auto; + margin-left: 20px; + margin-top: 20px; +} + +/* why us */ +.why-us { + display: flex; + flex-wrap: wrap; + justify-content: space-around; + align-items: center; + margin-top: 10rem; +} + +.why-us .img-layer { + width: 400px; + height: 400px; + background: var(--main-color); + border-radius: 100%; +} + +.why-us .img-layer .img { + width: 400px; + height: 400px; + background: url(Images/scott-webb-eD853mTbBA0-unsplash-removebg-preview.png); + background-size: cover; + background-position: center; +} + +.cards { + display: grid; + grid-template-columns: 2fr 2fr; +} + +.card { + width: 200px; + height: 150px; + padding: 20px; + margin-top: 40px; + border-radius: 5px; +} + +.card.card-fill { + background: #e3e8e490; + position: relative; +} + +.card.card.card-fill .star { + width: 10px; + height: 10px; + padding: 15px; + border-radius: 100%; + background: var(--primary-color); + position: absolute; + top: -15px; + left: -10px; + display: flex; + justify-content: center; + align-items: center; + font-size: 15px; + color: #fff; +} + +.card h1 { + color: black; + font-family: sans-serif; + font-size: 17px; +} + +.card p { + color: #999999; + font-family: sans-serif; + font-size: 12px; + margin-top: 20px; +} + +/* Features */ +.features { + margin-top: 10rem; + display: flex; + flex-wrap: wrap; + justify-content: space-around; + align-items: center; +} +.main-headings { + font-size: 4rem; + font-family: var(--main-font); + color: #0000004f; + margin-bottom: 20px; +} + +.main-headings span { + color: #000; +} + +.primary-headings { + max-width: 500px; + font-family: sans-serif; +} + +.features .img-container { + width: 300px; + height: 350px; + background: var(--main-color); + border-top-left-radius: 200px; + border-top-right-radius: 200px; +} + +.features .img-container img { + width: 350px; + height: 450px; +} + +footer { + background: var(--primary-color); + margin-top: 10rem; + display: flex; + flex-wrap: wrap; + justify-content: space-around; + align-items: center; + height: 100vh; + color: #fff; +} + +footer .logo-container h1 { + font-size: 4rem; + font-family: var(--main-font); + margin-bottom: 20px; +} + +footer .logo-container p { + max-width: 400px; + font-family: sans-serif; + line-height: 25px; +} + +footer .about-company { + display: flex; + flex-wrap: wrap; + justify-content: center; + align-items: center; +} + +footer .about-company .container { + margin-right: 40px; + margin-top: 20px; +} + +.about-company .container h1 { + margin-bottom: 50px; +} + +.about-company .container p { + font-family: sans-serif; + margin-bottom: 20px; +} + +@media only screen and (max-width: 1150px) { + .img-container { + width: 340px; + height: 340px; + } + .d-none { + display: none; + } +} + +@media only screen and (max-width: 900px) { + header { + height: 120vh; + text-align: center; + justify-content: center; + } + + header .content-container { + margin-bottom: 6rem; + margin-top: 4rem; + margin-left: 0; + } + + .popularity { + margin-top: 22rem; + text-align: center; + } + + .d-none { + display: none; + } +} + +@media only screen and (max-width: 600px) { + .primary-headings { + width: 350px; + } + + .img-container { + width: 350px; + height: 350px; + } + + .popularity div h1 { + font-size: 2rem; + } + + .popularity div { + font-size: 0.9rem; + text-align: center; + margin: 0 auto; + margin-top: 7rem; + } + + .main-headings { + font-size: 3rem; + text-align: center; + } + + .d-none { + display: none; + } + + .cards { + margin-right: 5rem; + } + + .card-fill { + margin-left: 10px; + } +} diff --git a/96. The Art/index.html b/96. The Art/index.html new file mode 100644 index 0000000..5aa4bcb --- /dev/null +++ b/96. The Art/index.html @@ -0,0 +1,154 @@ + + + + + + theArt + + + + + + + +
+

+ WHAT
+ IS CALLED ART? +

+

+ Art, also called (to distinguish it from other art forms) visual art, a + visual object or experience consciously + created through an expression of skill or imagination. +

+
+ +
+ + + + + + +
+ +
+

7 TYPES OF ART

+

+ The seven different art forms are + + Painting, Sculpture, Literature, Architecture, Theater, Film, and + Music + + . However, back in the day, the seven different art forms were called + the Liberal Arts, consisting of Grammar, Logic, Rhetoric, Arithmetic, + Geometry, Astronomy, and Music. +

+ +
+
+

PAINTING

+ +
+
+

SCULPTURE

+ +
+
+

LITERATURE

+ +
+
+

ARCHITECTURE

+ +
+
+

CINEMA

+ +
+
+

MUSIC

+ +
+
+

THEATER

+ +
+
+
+ + + + diff --git a/96. The Art/style.css b/96. The Art/style.css new file mode 100644 index 0000000..950a5b0 --- /dev/null +++ b/96. The Art/style.css @@ -0,0 +1,186 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +/* Fonts */ +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300&display=swap"); +@import url("https://fonts.googleapis.com/css?family=Reenie+Beanie&display=swap"); + +/* Basic */ +body { + background-color: #ebeae9; +} + +html { + font-family: "Open Sans", sans-serif; +} + +nav { + display: flex; + justify-content: space-between; + align-items: center; + color: #fff; + padding: 20px; + margin-bottom: 5rem; +} + +nav ul { + margin-left: 5rem; + list-style: none; +} + +li a { + text-decoration: none; + color: #000; +} + +nav .burger { + margin-right: 5rem; + cursor: pointer; +} + +nav .burger span { + height: 4px; + border: 2px solid black; + margin: 4px; + background: #000; +} + +header { + margin: 6rem; +} + +.main-headings { + width: 50%; + font-size: 3rem; +} + +.primary-headings { + width: 50%; + margin-top: 3rem; + font-size: 1.5rem; + line-height: 30px; +} + +.bg-gray { + background: rgb(53, 53, 53); + color: #fff; + padding: 2px 10px; + font-weight: bold; +} +/* Header End */ + +/* Main Start */ +main { + margin: 0 4rem; + display: flex; + flex-wrap: wrap; + margin: 40px; +} + +main .img { + width: 50%; +} + +/* SECTION THREE START */ +.section-three { + margin-left: 5rem; +} + +.section-three .primary-headings { + margin-bottom: 10rem; +} + +.list { + display: flex; + flex-wrap: wrap; + justify-content: center; + align-items: center; +} + +.section-three .item h1 { + font-size: 2rem; + color: rgb(53, 53, 53); + margin-left: 1rem; +} + +.section-three img { + width: 400px; + height: 500px; + margin: 50px; +} +/* SECTION THREE END */ + +/* FOOTER START */ +footer { + background: var(--primary-color); + margin-top: 10rem; + display: flex; + flex-wrap: wrap; + justify-content: space-around; + align-items: center; + height: 100vh; + color: #fff; +} + +footer .logo-container h1 { + font-size: 4rem; + font-family: var(--main-font); + margin-bottom: 20px; +} + +footer .logo-container p { + max-width: 400px; + font-family: sans-serif; + line-height: 25px; +} + +footer .about-company { + display: flex; + flex-wrap: wrap; + justify-content: center; + align-items: center; +} + +footer .about-company .container { + margin-right: 40px; + margin-top: 20px; +} + +.about-company .container h1 { + margin-bottom: 50px; +} + +.about-company .container p { + font-family: sans-serif; + margin-bottom: 20px; +} + +footer { + height: 100vh; + background: rgb(43, 43, 43); +} + +@media screen and (max-width: 740px) { + header .main-headings { + width: 100%; + } + header .primary-headings { + width: 100%; + font-size: 1.5rem; + } + + .section-three .main-headings { + width: 100%; + } + .section-three .primary-headings { + width: 100%; + font-size: 1.5rem; + } + + .section-three img { + margin: 0; + } +} diff --git a/97. Form Validation/index.html b/97. Form Validation/index.html new file mode 100644 index 0000000..8548e81 --- /dev/null +++ b/97. Form Validation/index.html @@ -0,0 +1,69 @@ + + + + + + + + Form Validator + + + +
+
+
+ +

error message

+
+ +
+ + +
+
+ +

error message

+
+
+ +

error message

+
+ +

Already have an account? Login

+
+ +
+ +

+ Shoe
+ Palace +

+
+
+ + + + + diff --git a/97. Form Validation/script.js b/97. Form Validation/script.js new file mode 100644 index 0000000..6b951d4 --- /dev/null +++ b/97. Form Validation/script.js @@ -0,0 +1,52 @@ +const username = document.querySelector(".username"); +const email = document.querySelector(".email"); +const password1 = document.querySelector(".password1"); +const password2 = document.querySelector(".password2"); +const submit = document.querySelector(".submit"); + +// MESSAGES +const usernameMessage = document.querySelector(".user-msg"); +const emailMessage = document.querySelector(".email-msg"); +const password1Message = document.querySelector(".password1-msg"); +const password2Message = document.querySelector(".password2-msg"); + +submit.addEventListener("click", (e) => { + e.preventDefault(); + + if (username === "" && email === "" && password1 === "" && password2 === "") { + alert("Please fill all input fields"); + } + + if (username.value === "") { + showMessage(usernameMessage, "Please Provide Your Name", "#FF0000"); + } else { + showMessage(usernameMessage, "Great Name", "#4BB543"); + } + + if (email.value === "") { + showMessage(emailMessage, "Please Provide Your Email", "#FF0000"); + } else { + showMessage(emailMessage, "Got your email", "#4BB543"); + } + + if (password1.value === "") { + showMessage(password1Message, "Please Provide Your Password", "#FF0000"); + } else { + showMessage(password1Message, "Valid password", "#4BB543"); + } + + if (password2.value === "") { + showMessage(password2Message, "Confirm Your Password", "#FF0000"); + } else if (password1.value !== password2.value) { + showMessage(password2Message, "Passwords do not match", "#FF0000"); + } else { + showMessage(password2Message, "Valid password", "#4BB543"); + } +}); + +function showMessage(element, msg, color) { + element.style.visibility = "visible"; + element.textContent = msg; + element.style.color = color; + element.previousElementSibling.style.border = `2px solid ${color}`; +} diff --git a/97. Form Validation/style.css b/97. Form Validation/style.css new file mode 100644 index 0000000..ea2a065 --- /dev/null +++ b/97. Form Validation/style.css @@ -0,0 +1,87 @@ +* { + padding: 0; + margin: 0; + box-sizing: border-box; +} + +:root { + --main-color: #161a1d; + --primary-color: #7289da; + --gray-color: #4f4f4f; +} + +body { + background-color: var(--main-color); +} + +/* Form */ +form { + border: 2px solid rgba(255, 255, 255, 0.224); + border-radius: 5px; + width: 30%; + padding: 40px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + opacity: 1.2; + margin-left: 60px; + margin-top: 50px; +} + +form input { + padding: 6px; + width: 230px; + outline: none; +} + +input[type="submit"] { + width: 230px; + background: var(--primary-color); + border: none; + padding: 10px 20px; + cursor: pointer; +} + +.already { + margin-top: 20px; +} + +form p { + font-family: sans-serif; + font-size: 14px; + color: #fff; +} + +.input-container p.msg { + visibility: hidden; + margin-bottom: 10px; + margin-top: 5px; +} + +.input-container.error p.msg { + visibility: visible; +} + +img { + width: 51%; + position: absolute; + top: 60px; + right: 10%; +} + +.content h1 { + position: absolute; + top: 45%; + right: 38%; + font-size: 5rem; + color: #fff; +} + +.input-container.error input { + border-color: red; +} + +.input-container.success input { + border-color: rgb(97, 249, 97); +} diff --git a/98. Meal Finder/app.js b/98. Meal Finder/app.js new file mode 100644 index 0000000..75e04f2 --- /dev/null +++ b/98. Meal Finder/app.js @@ -0,0 +1,73 @@ +const searchMeal = async (e) => { + e.preventDefault(); + + // Select Elements + const input = document.querySelector(".input"); + const title = document.querySelector(".title"); + const info = document.querySelector(".info"); + const img = document.querySelector(".img"); + const ingredientsOutput = document.querySelector(".ingredients"); + + const showMealInfo = (meal) => { + const { strMeal, strMealThumb, strInstructions } = meal; + title.textContent = strMeal; + img.style.backgroundImage = `url(${strMealThumb})`; + info.textContent = strInstructions; + + const ingredients = []; + + for (let i = 1; i <= 20; i++) { + if (meal[`strIngredient${i}`]) { + ingredients.push( + `${meal[`strIngredient${i}`]} - ${meal[`strMeasure${i}`]}` + ); + } else { + break; + } + } + + const html = ` + ${ingredients + .map((ing) => `
  • ${ing}
  • `) + .join("")}
    + `; + + ingredientsOutput.innerHTML = html; + }; + + const showAlert = () => { + alert("Meal not found :("); + }; + + // Fetch Data + const fetchMealData = async (val) => { + const res = await fetch( + `https://www.themealdb.com/api/json/v1/1/search.php?s=${val}` + ); + + const { meals } = await res.json(); + return meals; + }; + + // Get the user value + const val = input.value.trim(); + + if (val) { + const meals = await fetchMealData(val); + + if (!meals) { + showAlert(); + return; + } + + meals.forEach(showMealInfo); + } else { + alert("Please try searching for meal :)"); + } +}; + +const form = document.querySelector("form"); +form.addEventListener("submit", searchMeal); + +const magnifier = document.querySelector(".magnifier"); +magnifier.addEventListener("click", searchMeal); diff --git a/98. Meal Finder/index.html b/98. Meal Finder/index.html new file mode 100644 index 0000000..2511c6c --- /dev/null +++ b/98. Meal Finder/index.html @@ -0,0 +1,49 @@ + + + + + Meal Finder + + + + + + +
    +
    +
    + +
    +

    Food Name

    +

    + Lorem ipsum dolor sit amet consectetur, adipisicing elit. Unde + nostrum consequatur, nulla explicabo vero nesciunt architecto + officiis eius ullam alias. +

    + +
    +
    +
    + +
    + + + + diff --git a/98. Meal Finder/style.css b/98. Meal Finder/style.css new file mode 100644 index 0000000..1b6f210 --- /dev/null +++ b/98. Meal Finder/style.css @@ -0,0 +1,121 @@ +* { + box-sizing: border-box; +} + +nav { + display: flex; + justify-content: space-around; + align-items: center; + margin: 20px; +} + +.input-container { + display: flex; + align-items: center; + border: 1px solid #ff6e00; + padding: 5px; + width: 300px; + height: 50px; + border-radius: 50px; + margin: 10px; + position: relative; + transition: width 1.5s; +} + +.input { + margin: 10px 50px; + margin-left: 20px; + width: 100%; + color: #ff6e00; + border: none; + background: transparent; + outline: none; + transition-delay: 0.5s; +} + +.magnifier { + position: absolute; + right: 15px; + width: 25px; + text-align: center; + margin: 0 auto; + cursor: pointer; + color: #ffa31a; +} + +ul li { + display: inline; + margin-left: 40px; + font-family: sans-serif; +} + +main { + display: flex; + justify-content: center; + align-items: center; +} + +.container { + width: 60%; + padding: 3rem; + box-shadow: 10px 10px 40px 5px #e0e0e0; + margin-top: 5rem; + display: flex; + justify-content: space-between; + align-items: center; +} + +.content-container h1 { + font-family: sans-serif; + font-size: 2rem; + color: #2c2c2c; +} + +.content-container p { + font-family: sans-serif; + line-height: 1.4; + margin-bottom: 2rem; + color: #444444; + width: 26rem; +} + +.img { + transform: translateX(-120px); + margin-top: 1rem; + width: 350px; + height: 350px; + border-radius: 300px; + background: url("https://images.unsplash.com/photo-1600289031464-74d374b64991?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1075&q=80"); + background-repeat: no-repeat; + background-position: center; + background-size: conver; +} + +.ingredients { + width: 80%; + margin: 0 auto; + margin-top: 5rem; + padding: 50px; +} + +.ingredients span { + display: flex; + flex-wrap: wrap; + list-style: none; +} + +.ing { + padding: 10px 20px; + border: 2px solid #ff6e00; + color: #ff6e00; + font-family: sans-serif; + border-radius: 100px; +} + +.main-btn { + background: transparent; + border: none; + border: 2px solid #ffa31a; + padding: 10px; + color: #ffa31a; +} diff --git a/99. Github Profile Clone/app.js b/99. Github Profile Clone/app.js new file mode 100644 index 0000000..1ff7976 --- /dev/null +++ b/99. Github Profile Clone/app.js @@ -0,0 +1,131 @@ +const form = document.querySelector("form"); +const input = document.querySelector("input"); +const reposContainer = document.querySelector(".repos"); +const mainContainer = document.querySelector(".main-container"); + +const API = "https://api.github.com/users/"; + +async function fetchData(username) { + try { + const response = await fetch(`${API}${username}`); + if (!response.ok) throw new Error(response.statusText); + + const { + avatar_url, + bio, + blog, + company, + followers, + following, + location, + login, + twitter_username, + } = await response.json(); + + const html = ` +
    +

    ${login}

    + +

    ${bio}

    +
    + + + ${followers} follower + + + + ${following} following + + +
    + + ${company} +
    +
    + + ${location} +
    +
    + + ${blog} +
    + +
    + `; + + const section = document.createElement("section"); + section.classList.add("about-user"); + section.innerHTML = html; + mainContainer.insertAdjacentElement("afterbegin", section); + } catch (error) { + console.error(error); + } +} + +async function fetchRepos(username) { + try { + const response = await fetch(`${API}${username}/subscriptions`); + if (!response.ok) throw new Error(response.statusText); + const data = await response.json(); + + data.forEach( + ({ + name, + description, + forks_count, + language, + watchers_count, + git_url, + }) => { + const modifiedUrl = git_url + .replace(/^git:/, "http:") + .replace(/\.git$/, ""); + + const singleElement = document.createElement("div"); + singleElement.classList.add("repo-card"); + const html = ` + ${name} +

    ${description}

    +
    +

    ${language}

    +

    ${watchers_count}

    + Fork SVG + ${forks_count} +
    + +

    Public

    + `; + singleElement.innerHTML = html; + reposContainer.append(singleElement); + } + ); + } catch (error) { + console.error(error); + } +} + +form.addEventListener("submit", async (e) => { + e.preventDefault(); + const val = input.value; + + if (val) { + try { + await fetchData(val); + await fetchRepos(val); + } catch (error) { + console.log(error); + } finally { + input.value = ""; + } + } + + document + .querySelector("input") + .addEventListener("click", () => location.reload()); +}); diff --git a/99. Github Profile Clone/git-fork_1.svg b/99. Github Profile Clone/git-fork_1.svg new file mode 100644 index 0000000..5caf333 --- /dev/null +++ b/99. Github Profile Clone/git-fork_1.svg @@ -0,0 +1,39 @@ + + + + + + + + + \ No newline at end of file diff --git a/99. Github Profile Clone/index.html b/99. Github Profile Clone/index.html new file mode 100644 index 0000000..d313fbd --- /dev/null +++ b/99. Github Profile Clone/index.html @@ -0,0 +1,289 @@ + + + + + Github Profile Clone + + + + + + +
    + +
    + +
    +
    +

    Popular Repositories

    +
    + +
    +
    +
    + + + + diff --git a/99. Github Profile Clone/style.css b/99. Github Profile Clone/style.css new file mode 100644 index 0000000..2c628ed --- /dev/null +++ b/99. Github Profile Clone/style.css @@ -0,0 +1,260 @@ +* { + padding: 0; + margin: 0; + box-sizing: border-box; +} + +a { + text-decoration: none; +} + +:root { + --primary-color: #161b22; + --secondary-color: #0d1117; +} + +body { + background: var(--secondary-color); + font-family: Hubot-Sans, sans-serif; + font-weight: normal; +} + +/* ************************** Navigation ************************** */ +nav { + background: var(--primary-color); + padding: 15px; + display: flex; + justify-content: center; + align-items: center; +} + +.nav-container { + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; +} + +nav ul li { + display: inline; + margin: 10px; +} + +ul li a { + text-decoration: none; + color: #fff; + font-size: 14px; +} + +nav form { + width: 20%; +} + +nav form input { + background: var(--secondary-color); + padding: 7px; + border: none; + border-radius: 5px; + width: 100%; + border: 1px solid #4a515d; + color: #fff; +} + +nav form input::placeholder { + color: #fff; +} + +/* ************************** Header ************************** */ +header { + border-bottom: 0.6px solid #242424; +} + +.active { + border-bottom: 2px solid rgb(255, 102, 0); + padding-bottom: 20px; +} + +header ul { + display: flex; + justify-content: center; + align-items: center; +} + +header ul li { + list-style: none; + margin: 20px; +} + +.btns-container { + display: flex; + justify-content: center; + align-items: center; + width: 210px; + margin-left: 20px; +} + +.btns-container a { + color: #fff; +} + +.btns-container button { + background: transparent; + border: none; + margin-left: 20px; + border: 1px solid #585d63; + padding: 6px 20px; + color: #fff; + border-radius: 5px; + cursor: pointer; +} + +.main-container { + display: flex; +} + +/* ************************** Header ************************** */ +.about-user { + width: 30%; + margin-left: 30px; + color: #fff; +} + +.about-user .user-avatar { + background-image: url("https://avatars.githubusercontent.com/u/85052811?v=4"); + background-repeat: no-repeat; + background-size: cover; + width: 300px; + height: 300px; + transform: translateY(-20px); + border-radius: 100%; +} + +.user-name { + color: #585d63; + font-size: 20px; + margin: 10px 0; + font-weight: normal; +} + +button.follow { + width: 70%; + background: #21262d; + color: #fff; + cursor: pointer; + border: none; + border-radius: 4px; + padding: 6px 5px; + margin-bottom: 20px; +} + +.followers-info { + margin: 15px 0; +} + +.followers-info a { + text-decoration: none; + color: #fff; +} + +.followers-info span { + color: #545c66; +} + +.company, +.location, +.blog, +.twitter_username { + margin: 10px 0; + color: #dce9f7; + font-size: 13px; +} + +/* ************************** REPOSITORIES ************************** */ +main { + color: #fff; + margin-top: 20px; + margin-left: 1rem; +} + +main p { + margin-bottom: 20px; +} + +.repo-card { + border: 1px solid #4a515d; + border-radius: 5px; + width: 43%; + padding: 10px; + margin: 10px; + position: relative; + padding-top: 1.3rem; +} + +.repo-title { + text-decoration: non; + color: #549ef3; + font-weight: 500; + margin-top: 3rem; + font-size: 13px; +} + +.repo-subtitle { + font-size: 11px; + margin-top: 15px; + color: #868686; +} + +.popularity { + display: flex; + color: #585c5e; +} + +.stars { + margin-right: 20px; + color: #585c5e; +} + +.repos { + display: flex; + flex-wrap: wrap; +} + +.pill { + border: 1px solid #4a515d; + color: #a3acbc; + width: 50px; + padding: 3px 10px; + border-radius: 100px; + font-size: 10px; + text-align: center; + position: absolute; + top: 10px; + right: 10px; +} + +/* ************************** STYLING ICONS ************************** */ +.icon-container { + margin: 5px 0; +} + +i { + color: #4a515d; + margin-right: 5px; +} + +.fa-github { + font-size: 2rem; + color: #fff; + margin-right: 1rem; +} + +section.fork { + display: flex; + align-items: center; +} + +.fork-svg { + width: 14px; + margin-bottom: 20px; + margin-right: 6px; +} diff --git a/README.md b/README.md index 55922fc..ec08191 100644 --- a/README.md +++ b/README.md @@ -1 +1,5 @@ -# HTML-CSS-JavaScript-100-Projects +# HTML, CSS & JAVASCRIPT 100+ PROJECTS 👇 + +# [Watch me build 100 Projects](https://www.youtube.com/playlist?list=PLSDeUiTMfxW7lm7P7GZ8qtNFffHAR5d_w) 🤘🥂. + +![Course Thumbnail](/thumb.png) diff --git a/thumb.png b/thumb.png new file mode 100644 index 0000000..d9d79d9 Binary files /dev/null and b/thumb.png differ