diff --git a/README.md b/README.md new file mode 100644 index 0000000..494065c --- /dev/null +++ b/README.md @@ -0,0 +1,39 @@ +

Sushi Restaurant Website 🍣

+ +

+ A fictional website for a sushi restaurant, offering a delightful experience! +

+ +![Homepage Image](https://imgur.com/54dxJKP.jpg) + +## 🍱 Overview + +This is a hypothetical website developed for a sushi restaurant, showcasing popular dishes, the option to place orders, and information about events. It was built using HTML, CSS, and JavaScript. + +## 📂 Content + +- **Homepage:** Showcases popular dishes and provides a button for placing orders. +- **Newsletter Section:** Allows users to subscribe to receive updates. +- **Footer:** Includes contact details, address, and links to important sections. + +## 🚀 How to Use + +1. Clone this repository: + +```bash +https://github.com/pamyszz/Pamy-s-Sushi.git +``` +2. Open the `index.html` file in your browser to view the site. + +## 🛠 Technologies Used +- HTML +- CSS +- JavaScript + +## 🤝 Contributions +Contributions are welcome! Feel free to open an issue or submit a pull request for code improvements, bug fixes, or new features. + +## 📜 License +The ScrollReveal v4.0.9 JS code used in this project is licensed under the GNU General Public License 3.0 (GPL-3.0) for compatible open-source projects and non-commercial use. + +

Created with ❤️ by Pamy.

\ No newline at end of file diff --git a/assets/css/styles.css b/assets/css/styles.css new file mode 100644 index 0000000..2dea8e4 --- /dev/null +++ b/assets/css/styles.css @@ -0,0 +1,1149 @@ +/*=============== GOOGLE FONTS ===============*/ +@import url("https://fonts.googleapis.com/css2?family=Dancing+Script:wght@600&family=Lora:wght@500;600&family=Poppins:wght@400;500&display=swap"); + +/*=============== VARIABLES CSS ===============*/ +:root { + --header-height: 3.5rem; + + /*========== Colors ==========*/ + /*Color mode HSL(hue, saturation, lightness)*/ + --first-color: hsl(19, 64%, 54%); + --first-color-alt: hsl(19, 64%, 52%); + --title-color: hsl(19, 16%, 15%); + --text-color: hsl(19, 16%, 35%); + --text-color-light: hsl(19, 8%, 55%); + --body-color: hsl(19, 100%, 96%); + --container-color: hsl(19, 100%, 97%); + + /*========== Font and typography ==========*/ + /*.5rem = 8px | 1rem = 16px ...*/ + --body-font: "Poppins", sans-serif; + --title-font: "Lora", serif; + --subtitle-font: "Dancing Script", cursive; + --biggest-font-size: 2.25rem; + --h1-font-size: 1.5rem; + --h2-font-size: 1.25rem; + --h3-font-size: 1rem; + --normal-font-size: .938rem; + --small-font-size: .813rem; + --smaller-font-size: .75rem; + + /*========== Font weight ==========*/ + --font-medium: 500; + --font-semi-bold: 600; + + /*========== z index ==========*/ + --z-tooltip: 10; + --z-fixed: 100; +} +@media screen and (min-width: 1024px) { + :root { + --biggest-font-size: 4rem; + --h1-font-size: 2.25rem; + --h2-font-size: 1.5rem; + --h3-font-size: 1.25rem; + --normal-font-size: 1rem; + --small-font-size: .875rem; + --smaller-font-size: .813rem; + } +} + +/*=============== BASE ===============*/ +* { + box-sizing: border-box; + padding: 0; + margin: 0; +} + +html { + scroll-behavior: smooth; +} + +body { + font-family: var(--body-font); + font-size: var(--normal-font-size); + background-color: var(--body-color); + color: var(--text-color); + transition: background 0.5s; /* for dark mode animation */ +} + +h1, h2, h3 { + color: var(--title-color); + font-weight: var(--font-medium); +} + +ul { + list-style: none; +} + +a { + text-decoration: none; +} + +img { + max-width: 100%; + height: auto; +} + +/*=============== THEME ===============*/ +.nav__buttons{ + display: flex; + align-items: center; + column-gap: 1rem; +} +.change-theme{ + font-size: 1.25rem; + color: var(--title-color); + cursor: pointer; + transition: color .3s; +} + +/*========== Variables Dark theme ==========*/ +body.dark-theme{ + --first-color: hsl(19, 64%, 58%); + --first-color-alt: hsl(19, 64%, 54%); + --title-color: hsl(19, 24%, 85%); + --text-color: hsl(19, 16%, 65%); + --body-color: hsl(19, 12%, 8%); + --container-color: hsl(19, 10%, 10%); +} + +/*========== + Color changes in some parts of + the website, in light theme +==========*/ +.dark-theme .bg-header, +.dark-theme .nav__menu, +.dark-theme .scrollup{ + box-shadow: 0 2px 8px hsla(19, 64%, 4%, .5); +} + +.dark-theme .popular__card{ + box-shadow: 0 8px 20px hsla(a9, 64%, 4%, .2); +} +.dark-theme .newsletter__content{ + background-color: var(--container-color); +} + +.dark-theme .newsletter__form, +.dark-theme .newsletter__input{ + background-color: var(--body-color); +} + +.dark-theme::-webkit-scrollbar{ + background-color: hsl(19, 8%, 15%); +} +.dark-theme::-webkit-scrollbar-thumb{ + background-color: hsl(19, 8%, 25%); +} +.dark-theme::-webkit-scrollbar-thumb:hover{ + background-color: hsl(19, 8%, 37%); +} +/*=============== REUSABLE CSS CLASSES ===============*/ +.container { + max-width: 1024px; + margin-inline: 1.5rem; +} + +.grid { + display: grid; + gap: 1.5rem; +} + +.section { + padding-block: 5rem 1rem; +} + +.section__title { + font-size: var(--h1-font-size); + font-family: var(--title-font); + margin-bottom: 1.5rem; +} + +.section__subtitle { + display: block; + font-size: var(--h2-font-size); + font-family: var(--subtitle-font); + color: var(--first-color); + margin-bottom: 0.5rem; +} + +.section__title, +.section__subtitle { + text-align: center; +} + +.main { + overflow: hidden; /* For animation ScrollReveal */ +} + +/*=============== HEADER & NAV ===============*/ +.header{ + position: fixed; + width: 100%; + background-color: var(--body-color); + top: 0; + left: 0; + z-index: var(--z-fixed); + transition: box-shadow .3s, background .4s; +} + + +.nav{ + position: relative; + height: var(--header-height); + display: flex; + justify-content: space-between; + align-items: center; + +} + +.nav__logo, +.nav__toggle, +.nav__close{ + display: flex; + color: var(--title-color); +} + +.nav__logo{ + align-items: center; + column-gap: .5rem; + font-family: var(--title-font); + font-size: var(--h3-font-size); + font-weight: var(--font-semi-bold); + transition: color .3s; +} + +.nav__logo img{ + width: 26px; + +} + +.nav__logo:hover{ + color: var(--first-color); +} + +.nav__toggle{ + font-size: 1.25rem; + cursor:pointer; + +} + +@media screen and (max-width: 767px){ + .nav__menu{ + position: fixed; + top: -100%; + left: 0; + background-color: var(--body-color); + width: 100%; + box-shadow: 0 8px 20px hsla(19, 64%, 24%, .1); + padding-block: 3.5rem; + transition: top .4s; + + } +} + +.nav__list{ + display: flex; + flex-direction: column; + text-align: center; + row-gap: 2rem; +} + +.nav__link{ + color: var(--title-color); + font-weight: var(--font-medium); + transition: color .4s; +} + +.nav__link:hover{ + color: var(--first-color); +} + +.nav__close{ + position: absolute; + top: 1rem; + right: 1.5rem; + font-size: 1.5rem; + cursor: pointer; +} + +.nav__img-1, +.nav__img-2{ + position: absolute; + opacity: .2; +} +.nav__img-1{ + width: 100px; + top: .75rem; + left: -2rem; + transform: rotate(165deg); +} + +.nav__img-2{ + width: 50px; + right: -1rem; + bottom: 0; + transform: rotate(-30deg) +} +/* Show menu */ +.show-menu{ + top: 0; +} + +/* Change background header */ +.bg-header{ + box-shadow: 0 2px 8px hsla(19, 64%, 24%, .1); +} + +/* Active link */ +.active-link{ + color: var(--first-color); +} + + +/*=============== HOME ===============*/ +.home{ + position: relative; +} + +.home__container{ + row-gap: 3rem; + padding-top: 2rem; +} + +.home__img{ + width: 300px; + justify-self: center; +} + +.home__data{ + text-align: center; +} +.home__title{ + font-size: var(--biggest-font-size); + font-family: var(--title-font); + margin-bottom: 1rem; +} + +.home__title img{ + width: 40px; + +} +.home__title div{ + display: flex; + align-items: center; + justify-content: center; + column-gap: .5rem; +} + +.home__description{ + padding: 0 1rem; + margin-bottom: 2.5rem; +} + +.home__leaf-1, +.home__leaf-2{ + position: absolute; + opacity: .2; +} + +.home__leaf-1{ + width: 80px; + top: 8rem; + left: -1rem; + transform: rotate(90deg); +} + +.home__leaf-2{ + width: 100px; + right: -2rem; + bottom: 1rem; + transform: rotate(-15deg); +} +/*=============== BUTTON ===============*/ +.button{ + display: inline-flex; + align-items: center; + column-gap: .5rem; + background-color: var(--first-color); + padding: 1rem 1.5rem; + border-radius: 4rem; + color: #fff; + font-weight: var(--font-medium); + transition: background .3s; + +} + +.button i{ + font-size: 1.5rem; + transition: transform .3s; + +} + +.button:hover{ + background-color: var(--first-color-alt); +} +.button:hover i{ + transform: translateX(.25rem); +} +/*=============== ABOUT ===============*/ +.about{ + position: relative; +} + +.about__container{ + row-gap: 3rem; +} + +.about__data{ + text-align: center; +} + +.about__title img{ + width: 30px; +} + +.about__title div{ + display: flex; + justify-content: center; + align-items: center; + column-gap: .5rem; +} + +.about__img{ + width: 300px; + justify-self: center; + +} + +.about__leaf{ + width: 100px; + opacity: .2; + position: absolute; + right: -1.5rem; + bottom: 11rem; + transform: rotate(-15deg); +} +/*=============== POPULAR ===============*/ +.popular__container{ + padding-top: 4rem; + grid-template-columns: 250px; + justify-content: center; + row-gap: 5.5rem; +} + +.popular__card{ + position: relative; + background-color: var(--container-color); + padding: 7rem 2rem 1.5rem; + box-shadow: 0 8px 20px hsla(19, 64%, 48%, .08); + border-radius: 1rem; + text-align: center; + transition: background 0.5s; /* for dark mode animation */ +} + +.popular__img{ + width: 220px; + position: absolute; + inset: 0; + top: -2.5rem; + margin: 0 auto; + transition: transform .4s; +} + +.popular__name{ + font-size: var(--h3-font-size); + font-family: var(--title-font); + margin-bottom: .25rem; +} + +.popular__description{ + display: block; + font-size: var(--smaller-font-size); + margin-bottom: 1rem; + +} + +.popular__price{ + font-size: var(--h3-font-size); + font-weight: var(--font-medium); + color: var(--first-color); + +} + +.popular__button{ + display: flex; + background-color: var(--first-color); + padding: 6px; + border-radius: 50%; + border: none; + outline: none; + color: aliceblue; + font-size: 1.25rem; + box-shadow: 0 4px 20px hsla(19, 64%, 20% ,.2); + position: absolute; + bottom: 1.25rem; + right: 1.25rem; + cursor: pointer; + transition: background .3s; +} + +.popular__button:hover{ + background-color: var(--first-color-alt); + +} +.popular__card:hover .popular__img{ + transform: translateY(-.25rem); +} + +/*=============== RECENTLY ===============*/ +.recently{ + position: relative; +} + +.recently__container{ + row-gap: 4rem; +} +.recently__data{ + position: relative; + text-align: center; +} + +.recently__description{ + margin-bottom: 2rem; +} + +.recently__data-img{ + width: 25px; + position: absolute; + top: 3.5rem; + right: 1.5rem; + transform: rotate(30deg); +} + +.recently__img{ + width: 300px; + justify-self: center; + +} + +.recently__leaf-1, +.recently__leaf-2{ + position: absolute; + opacity: .2; +} + +.recently__leaf-1{ + width: 80px; + top: 17rem; + left: -1rem; + transform: rotate(15deg); +} + +.recently__leaf-2{ + width: 40px; + right: -1rem; + bottom: 12rem; + transform: rotate(30deg); +} +/*=============== NEWSLETTER ===============*/ +.newsletter__container{ + position: relative; + +} + +.newsletter__content{ + position: relative; + background-color: hsl(19, 24%, 15%); + border-radius: 2.5rem; + padding: 5rem 1rem 3rem; + text-align: center; + overflow: hidden; + margin-bottom: 2rem; +} + +.newsletter__img{ + width: 250px; + position: absolute; + top: -4.5rem; + left: -8rem; +} + +.newsletter__data .section__title{ + color: #fff; + margin-bottom: 2rem; + +} + +.newsletter__form{ + background-color: #fff; + padding: 5px 5px 5px 16px; + border-radius: 4rem; + display: flex; + column-gap: .5rem; +} + +.newletter__input, +.newsletter__button{ + font-family: var(--body-font); + border: none; + outline: none; +} + +.newsletter__input{ + width: 90%; + color: var(--text-color); + outline: none; + border: none; +} + +.newsletter__button{ + cursor: pointer; +} + +.newsletter__spinach{ + width: 30px; + position: absolute; + right: 2rem; + bottom: -2rem; + transform: rotate(55deg); +} + +.newsletter__container, +.newsletter__form, +.newsletter__input{ + transition: background 0.5s; /* for dark mode animation */ +} +/*=============== FOOTER ===============*/ +.footer{ + position: relative; + padding-block: 3rem 2rem; + overflow: hidden; +} + +.footer__container{ + row-gap: 3rem; +} + +.footer__logo{ + display: inline-flex; + align-items: center; + column-gap: .5rem; + color: var(--title-color); + font-family: var(--title-font); + font-size: var(--h3-font-size); + font-weight: var(--font-semi-bold); + margin-bottom: 1rem; + transition: color .3s; +} + +.footer__logo img{ + width: 25px; +} + +.footer__logo:hover{ + color: var(--first-color); +} + +.footer__description, +.footer__link, .footer__information{ +font-size: var(--small-font-size); + +} +.footer__content, +.footer__links{ + display: grid; +} + +.footer__content{ + grid-template-columns: repeat(2, max-content); + gap: 2.5rem; +} + +.footer__title{ + font-size: var(--h3-font-size); + margin-bottom: 1.5rem; +} + +.footer__links{ + row-gap: .5rem; +} +.footer__link{ + color: var(--text-color); + transition: color .3s; +} + +.footer__link:hover{ + color: var(--first-color); +} + +.footer__social{ + display: flex; + column-gap: 1.25rem; +} + +.footer__social-link{ + color: var(--first-color); + font-size: 1.25rem; + transition: color .3s, transform .3s; +} + +.footer__social-link:hover{ + color: var(--first-color-alt); + transform: translateY(-2px); +} + +.footer__onion, +.footer__spinach{ + width: 30px; + position: absolute; +} + + + +.footer__onion{ + top: 7.5rem; + right: 5rem; + transform: rotate(-45deg); +} +.footer__onion-1{ + top: 9.5rem; + right: 5rem; + display: flex; + width: 30px; + justify-self: center; + left: 3rem; + transform: rotate(-45deg); +} + + +.footer__spinach{ + bottom: 8rem; + left: 3rem; + transform: rotate(30deg); +} +.footer__spinach-1{ + display: flex; + width: 30px; + justify-self: end; + top: 5%; + left: 3rem; + transform: rotate(-45deg); +} +.footer__leaf{ + width: 100px; + opacity: .2; + position: absolute; + bottom: 6rem; + right: -2rem; + transform: rotate(-15deg); +} + +.footer__info, +.footer__card{ + display: flex; + +} + +.footer__info{ + margin-top: 6.5rem; + flex-direction: column; + row-gap: 1.5rem +} + +.footer__card{ + column-gap: 1rem; + justify-content: center; +} + +.footer__card img{ + width: 35px; +} + +.footer__copy{ + text-align: center; + font-size: var(--smaller-font-size); + color: var(--text-color-light); +} +/*=============== SCROLL BAR ===============*/ +::-webkit-scrollbar{ + width: .6rem; + border-radius: .5rem; + background-color: hsl(19, 8%, 75%); +} + +::-webkit-scrollbar-thumb{ + border-radius: .5rem; + background-color: hsl(19, 8%, 65%) +} + +::-webkit-scrollbar-thumb:hover{ + background-color: hsl(19, 8%, 55%) +} +/*=============== SCROLL UP ===============*/ +.scrollup{ + position: fixed; + right: 1rem; + bottom: 3rem; + background-color: var(--container-color); + box-shadow: 0 4px 12px hsla(19, 64%, 24%, .1); + display: inline-flex; + padding: .35rem; + border-radius: .25rem; + font-size: 1.1rem; + color: var(--first-color); + z-index: var(--z-tooltip); + transition: bottom .3s, transform .3s, background .4s; + +} + +.scrollup:hover{ + transform: translateY(-.25rem); +} +/* Show Scroll Up*/ +.show-scroll{ + bottom: 3rem; +} + +/*=============== BREAKPOINTS ===============*/ +/* For small devices */ +@media screen and (max-width: 340px){ + .container{ + margin-inline: 1rem; + } + + .section{ + padding-block: 4rem 1; + } + + .home__title{ + font-size: 2rem; + } + .home__leaf-1{ + top: 5rem; + } + .home__leaf-2{ + bottom: 0; + } + + .about__leaf{ + bottom: 8rem; + + } + + .recently__data-img{ + right: .5rem; + + } + + .newsletter__content{ + padding: 6rem 1rem 2rem; + } + .newsletter__form{ + flex-direction: column; + background: none; + row-gap: 1rem; + } + .newsletter__input{ + width: initial; + padding: 1rem; + border-radius: 4rem; + } + .newsletter__button{ + justify-content: center; + } + + .footer__content{ + gap: 1.5rem; + } +} + +/* For medium devices */ +@media screen and (min-width: 576px){ + .home__container, + .about__container, + .recently__container, + .newsletter__content + { + grid-template-columns: .7fr; + justify-content: center; + } + + .footer__content{ + grid-template-columns: repeat(3, max-content); + } +} + +@media screen and (min-width: 767px) { + .nav{ + column-gap: 3rem; + } + + .nav__toggle, + .nav__close, + .nav__img-1, + .nav__img-2{ + display: none; + } + + .nav__list{ + flex-direction: row; + column-gap: 3rem; + + } + + .nav__menu{ + margin-left: auto; + } + + .dark-theme .nav__menu{ + box-shadow: none; + } + .popular__container{ + grid-template-columns: repeat(2, 240px); + } + + .footer__content{ + grid-template-columns: repeat(4, max-content); + } +} + +/* For large devices */ +@media screen and (min-width: 1024px){ + .section{ + padding-block: 7rem 1.5rem; + } + + .section__subtitle{ + margin-bottom: .75rem; + } + + .nav{ + height: calc(var(--header-height) + 1.5rem); + } + .home__container{ + position: relative; + grid-template-columns: 480px 500px; + padding-block: 7rem 3rem; + } + .home__data{ + text-align: initial; + order: -1; + } + .home__title img{ + width: 60px; + } + + .home__title div{ + justify-content: initial; + column-gap: 1rem; + } + .home__description{ + padding-inline: 0 10rem; + + } + + .home__img{ + width: 600px; + position: absolute; + top: 5rem; + right:-2rem; + } + .about__container{ + grid-template-columns: 450px 360px; + align-items: center; + column-gap: 7rem; + } + .about__data{ + order: 1; + + } + + .about__data, + .about .section__subtitle, + .about .section__title{ + text-align: initial; + } + .about__title div{ + column-gap: 1rem; + justify-content: initial; + } + .about__title img{ + width: 50px; + } + .about__img{ + width: 450px; + } + .popular__container{ + grid-template-columns: repeat(3, 262px); + column-gap: 3.5rem; + padding-block: 6rem 4rem; + } + .popular__card{ + padding: 7.5rem 2rem 2rem; + border-radius: 1.5rem; + } + .popular__img{ + width: 230px; + } + .popular__button{ + bottom: 2rem; + + } + .recently__container{ + grid-template-columns: 350px 480px; + align-items: center; + column-gap: 7rem; + padding-bottom: 2rem; + } + + .recently__data, + .recently .section__subtitle, + .recently .section__title{ + text-align: initial; + + } + .recently__data-img{ + width: 30px; + top: 5.5rem; + right: 2.5rem; + } + + .recently__img{ + width: 480px; + + } + + .newsletter__content{ + grid-template-columns: 350px 360px; + align-items: center; + column-gap: 6rem; + padding: 2.5rem; + border-radius: 4.5rem; + } + .newsleter__img{ + position: initial; + width: 350px; + } + + .newsletter .section__subtitle, + .newsletter .section__title{ + text-align: initial; + } + .newsletter .section__title{ + margin-bottom: 2.5rem; + } + .newsletter__form{ + padding: 8px 8px 8px 24px; + + } + .newsletter__button{ + font-size: var(--normal-font-size); + } + .newsletter__spinach{ + width: 40px; + right: 5rem; + bottom: -2.5rem; + + } + + .footer{ + padding-block: 8rem 3rem; + } + .footer__container{ + position: relative; + grid-template-columns: repeat(2, max-content); + justify-content: space-between; + } + + .footer__content{ + column-gap: 4rem; + + } + + .footer__title, + .footer__description, + .footer__link, + .footer__information{ + font-size: var(--normal-font-size); + + } + .footer__social-link{ + font-size: 1.5rem; + } + .footer__info{ + flex-direction: row; + justify-content: space-between; + margin-top: 8.5rem; + } + .footer__copy{ + order: -1; + } + .footer__spinach{ + bottom: -3rem; + left: 6rem; + } + .footer__onion, + .footer__onion-1{ + right: 1rem; + } + + .scrollup{ + right: 3rem; + } +} + +@media screen and (min-width: 1064px){ + .container{ + margin-inline: auto; + } +} + +@media screen and (min-width: 1280px){ + .home__leaf-1{ + width: 150px; + top: 5rem; + } + + .home__leaf-2{ + width: 180px; + right: -4rem; + + } + + .about__leaf{ + width: 200px; + bottom: 3rem; + } + + .recently__leaf-1{ + width: 150px; + top: 19rem; + } + + .recently__leaf-2{ + width: 100px; + bottom: 15rem; + } + + .footer__leaf{ + right: 0; + left: 0; + bottom: -15rem; + margin: 0 auto; + width: 150px; + } + .newsletter__img{ + width: 250px; + position: relative; + left: -8rem; + } + .newsletter__content { + grid-template-columns: 198px 390px; + align-items: center; + /* column-gap: 6rem; */ + padding: 2.5rem; + border-radius: 4.5rem; + } +} \ No newline at end of file diff --git a/assets/img/about-sushi-title.png b/assets/img/about-sushi-title.png new file mode 100644 index 0000000..fa6c57b Binary files /dev/null and b/assets/img/about-sushi-title.png differ diff --git a/assets/img/about-sushi.png b/assets/img/about-sushi.png new file mode 100644 index 0000000..2ed53c2 Binary files /dev/null and b/assets/img/about-sushi.png differ diff --git a/assets/img/favicon.png b/assets/img/favicon.png new file mode 100644 index 0000000..854ee65 Binary files /dev/null and b/assets/img/favicon.png differ diff --git a/assets/img/footer-card-1.png b/assets/img/footer-card-1.png new file mode 100644 index 0000000..460a5b6 Binary files /dev/null and b/assets/img/footer-card-1.png differ diff --git a/assets/img/footer-card-2.png b/assets/img/footer-card-2.png new file mode 100644 index 0000000..a35dc73 Binary files /dev/null and b/assets/img/footer-card-2.png differ diff --git a/assets/img/footer-card-3.png b/assets/img/footer-card-3.png new file mode 100644 index 0000000..0ec7759 Binary files /dev/null and b/assets/img/footer-card-3.png differ diff --git a/assets/img/footer-card-4.png b/assets/img/footer-card-4.png new file mode 100644 index 0000000..e488256 Binary files /dev/null and b/assets/img/footer-card-4.png differ diff --git a/assets/img/home-sushi-rolls.png b/assets/img/home-sushi-rolls.png new file mode 100644 index 0000000..f79acf0 Binary files /dev/null and b/assets/img/home-sushi-rolls.png differ diff --git a/assets/img/home-sushi-title.png b/assets/img/home-sushi-title.png new file mode 100644 index 0000000..b562be5 Binary files /dev/null and b/assets/img/home-sushi-title.png differ diff --git a/assets/img/leaf-branch-1.png b/assets/img/leaf-branch-1.png new file mode 100644 index 0000000..0e201bf Binary files /dev/null and b/assets/img/leaf-branch-1.png differ diff --git a/assets/img/leaf-branch-2.png b/assets/img/leaf-branch-2.png new file mode 100644 index 0000000..1073b5c Binary files /dev/null and b/assets/img/leaf-branch-2.png differ diff --git a/assets/img/leaf-branch-3.png b/assets/img/leaf-branch-3.png new file mode 100644 index 0000000..64546a6 Binary files /dev/null and b/assets/img/leaf-branch-3.png differ diff --git a/assets/img/leaf-branch-4.png b/assets/img/leaf-branch-4.png new file mode 100644 index 0000000..be38601 Binary files /dev/null and b/assets/img/leaf-branch-4.png differ diff --git a/assets/img/logo.png b/assets/img/logo.png new file mode 100644 index 0000000..391a36e Binary files /dev/null and b/assets/img/logo.png differ diff --git a/assets/img/newsletter-sushi.png b/assets/img/newsletter-sushi.png new file mode 100644 index 0000000..090e78b Binary files /dev/null and b/assets/img/newsletter-sushi.png differ diff --git a/assets/img/popular-onigiri.png b/assets/img/popular-onigiri.png new file mode 100644 index 0000000..f2e46a2 Binary files /dev/null and b/assets/img/popular-onigiri.png differ diff --git a/assets/img/popular-spring-rols.png b/assets/img/popular-spring-rols.png new file mode 100644 index 0000000..d216661 Binary files /dev/null and b/assets/img/popular-spring-rols.png differ diff --git a/assets/img/popular-sushi-rolls.png b/assets/img/popular-sushi-rolls.png new file mode 100644 index 0000000..dd30833 Binary files /dev/null and b/assets/img/popular-sushi-rolls.png differ diff --git a/assets/img/recently-salmon-sushi.png b/assets/img/recently-salmon-sushi.png new file mode 100644 index 0000000..985ecef Binary files /dev/null and b/assets/img/recently-salmon-sushi.png differ diff --git a/assets/img/spinach-leaf.png b/assets/img/spinach-leaf.png new file mode 100644 index 0000000..3e30a8d Binary files /dev/null and b/assets/img/spinach-leaf.png differ diff --git a/assets/img/spring-onion.png b/assets/img/spring-onion.png new file mode 100644 index 0000000..dc10529 Binary files /dev/null and b/assets/img/spring-onion.png differ diff --git a/assets/js/main.js b/assets/js/main.js new file mode 100644 index 0000000..f0e3409 --- /dev/null +++ b/assets/js/main.js @@ -0,0 +1,115 @@ +/*=============== SHOW MENU ===============*/ +const navMenu = document.getElementById('nav-menu'), + navToggle = document.getElementById('nav-toggle'), + navClose = document.getElementById('nav-close') + +/*===== MENU SHOW =====*/ +/* Validate if constant exists */ +if(navToggle){ + navToggle.addEventListener('click', () =>{ + navMenu.classList.add('show-menu') + }) +} + +/*===== MENU HIDDEN =====*/ +/* Validate if constant exists */ +if(navClose){ + navClose.addEventListener('click', () =>{ + navMenu.classList.remove('show-menu') + }) +} + +/*=============== REMOVE MENU MOBILE ===============*/ +const navLink = document.querySelectorAll('.nav__link') + +const linkAction = () =>{ + const navMenu = document.getElementById('nav-menu') + // When we click on each nav__link, we remove the show-menu class + navMenu.classList.remove('show-menu') +} +navLink.forEach(n => n.addEventListener('click', linkAction)) + +/*=============== CHANGE BACKGROUND HEADER ===============*/ +const scrollHeader = () =>{ + const header = document.getElementById('header') + // When the scroll is greater than 50 viewport height, add the scroll-header class to the header tag + this.scrollY >= 50 ? header.classList.add('bg-header') + : header.classList.remove('bg-header') +} +window.addEventListener('scroll', scrollHeader) + +/*=============== SHOW SCROLL UP ===============*/ +const scrollUp = () =>{ + const scrollUp = document.getElementById('scroll-up') + // When the scroll is higher than 350 viewport height, add the show-scroll class to the a tag with the scrollup class + this.scrollY >= 350 ? scrollUp.classList.add('show-scroll') + : scrollUp.classList.remove('show-scroll') +} +window.addEventListener('scroll', scrollUp) + + +/*=============== SCROLL SECTIONS ACTIVE LINK ===============*/ + +const sections = document.querySelectorAll('section[id]') + +const scrollActive = () =>{ + const scrollY = window.pageYOffset + + sections.forEach(current =>{ + const sectionHeight = current.offsetHeight, + sectionTop = current.offsetTop - 58, + sectionId = current.getAttribute('id'), + sectionsClass = document.querySelector('.nav__menu a[href*=' + sectionId + ']') + + if(scrollY > sectionTop && scrollY <= sectionTop + sectionHeight){ + sectionsClass.classList.add('active-link') + }else{ + sectionsClass.classList.remove('active-link') + } + }) +} +window.addEventListener('scroll', scrollActive) + +/*=============== DARK LIGHT THEME ===============*/ +const themeButton = document.getElementById('theme-button') +const darkTheme = 'dark-theme' +const iconTheme = 'ri-sun-line' + +// Previously selected topic (if user selected) +const selectedTheme = localStorage.getItem('selected-theme') +const selectedIcon = localStorage.getItem('selected-icon') + +// We obtain the current theme that the interface has by validating the dark-theme class +const getCurrentTheme = () => document.body.classList.contains(darkTheme) ? 'dark' : 'light' +const getCurrentIcon = () => themeButton.classList.contains(iconTheme) ? 'ri-moon-line' : 'ri-sun-line' + +// We validate if the user previously chose a topic +if (selectedTheme) { + // If the validation is fulfilled, we ask what the issue was to know if we activated or deactivated the dark + document.body.classList[selectedTheme === 'dark' ? 'add' : 'remove'](darkTheme) + themeButton.classList[selectedIcon === 'ri-moon-line' ? 'add' : 'remove'](iconTheme) +} + +// Activate / deactivate the theme manually with the button +themeButton.addEventListener('click', () => { + // Add or remove the dark / icon theme + document.body.classList.toggle(darkTheme) + themeButton.classList.toggle(iconTheme) + // We save the theme and the current icon that the user chose + localStorage.setItem('selected-theme', getCurrentTheme()) + localStorage.setItem('selected-icon', getCurrentIcon()) +}) + +/*=============== SCROLL REVEAL ANIMATION ===============*/ +const sr = ScrollReveal({ + origin: 'top', + distance: '60px', + duration: 2500, + delay: 400, +}) + +sr.reveal(`.home__img, .newsletter__container, .footer__logo, .footer__description, .footer__content, footer__info`) +sr.reveal(`.home__data`, {origin: 'bottom'}) +sr.reveal(`.about__data, recently__data`, {origin: 'left'}) +sr.reveal(`.about__img, recently__img`, {origin: 'right'}) +sr.reveal(`.popular__card`, {interval: 115}) \ No newline at end of file diff --git a/assets/js/scrollreveal.min.js b/assets/js/scrollreveal.min.js new file mode 100644 index 0000000..6d8acac --- /dev/null +++ b/assets/js/scrollreveal.min.js @@ -0,0 +1,12 @@ +/*! @license ScrollReveal v4.0.9 + + Copyright 2021 Fisssion LLC. + + Licensed under the GNU General Public License 3.0 for + compatible open source projects and non-commercial use. + + For commercial sites, themes, projects, and applications, + keep your source code private/proprietary by purchasing + a commercial license from https://scrollrevealjs.org/ +*/ +var ScrollReveal=function(){"use strict";var r={delay:0,distance:"0",duration:600,easing:"cubic-bezier(0.5, 0, 0, 1)",interval:0,opacity:0,origin:"bottom",rotate:{x:0,y:0,z:0},scale:1,cleanup:!1,container:document.documentElement,desktop:!0,mobile:!0,reset:!1,useDelay:"always",viewFactor:0,viewOffset:{top:0,right:0,bottom:0,left:0},afterReset:function(){},afterReveal:function(){},beforeReset:function(){},beforeReveal:function(){}};var n={success:function(){document.documentElement.classList.add("sr"),document.body?document.body.style.height="100%":document.addEventListener("DOMContentLoaded",function(){document.body.style.height="100%"})},failure:function(){return document.documentElement.classList.remove("sr"),{clean:function(){},destroy:function(){},reveal:function(){},sync:function(){},get noop(){return!0}}}};function o(e){return"object"==typeof window.Node?e instanceof window.Node:null!==e&&"object"==typeof e&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName}function u(e,t){if(void 0===t&&(t=document),e instanceof Array)return e.filter(o);if(o(e))return[e];if(n=e,i=Object.prototype.toString.call(n),"object"==typeof window.NodeList?n instanceof window.NodeList:null!==n&&"object"==typeof n&&"number"==typeof n.length&&/^\[object (HTMLCollection|NodeList|Object)\]$/.test(i)&&(0===n.length||o(n[0])))return Array.prototype.slice.call(e);var n,i;if("string"==typeof e)try{var r=t.querySelectorAll(e);return Array.prototype.slice.call(r)}catch(e){return[]}return[]}function s(e){return null!==e&&e instanceof Object&&(e.constructor===Object||"[object Object]"===Object.prototype.toString.call(e))}function f(n,i){if(s(n))return Object.keys(n).forEach(function(e){return i(n[e],e,n)});if(n instanceof Array)return n.forEach(function(e,t){return i(e,t,n)});throw new TypeError("Expected either an array or object literal.")}function h(e){for(var t=[],n=arguments.length-1;0=[].concat(r.body).shift())return j.call(this,n,i,-1,t),c.call(this,e,{reveal:!0,pristine:t});if(!n.blocked.foot&&i===[].concat(o.foot).shift()&&i<=[].concat(r.body).pop())return j.call(this,n,i,1,t),c.call(this,e,{reveal:!0,pristine:t})}}function E(e){var t=Math.abs(e);if(isNaN(t))throw new RangeError("Invalid sequence interval.");this.id=b(),this.interval=Math.max(t,16),this.members=[],this.models={},this.blocked={head:!1,foot:!1}}function d(e,i,r){var o=this;this.head=[],this.body=[],this.foot=[],f(e.members,function(e,t){var n=r.elements[e];n&&n[i]&&o.body.push(t)}),this.body.length&&f(e.members,function(e,t){var n=r.elements[e];n&&!n[i]&&(t + + + + + + + + + + + + + + + Pamy's Sushi + + + + + + +
+ +
+
+ home image + +
+

+ Pamy Sushi's + +
+ home image + O melhor +
+

+ +

+ Aproveite um bom jantar com os melhores pratos no restaurante e melhore seu dia. +

+ + + Faça seu pedido agora! + +
+
+ + home leaf + home leaf + +
+ + +
+
+
+ + Sobre nós + +

+
+ Nós fornecemos. + about image +
+ Comida saudável +

+ +

+ A comida nos chega dos nossos parentes, quer tenham asas ou raízes. É assim que consideramos a comida, ela também possui uma cultura. Tem uma história que passa de geração em geração. +

+
+ + about image +
+ + about image +
+ + + + + +
+
+
+ + Recente Adicionado + +

+ Sushi Samurai
+ Queijo e Salmão +

+ +

+ Dê uma olhada no que há de novo. E não se prive de uma boa refeição, aproveite e seja feliz. +

+ + + Faça seu Pedido + + + recently image +
+ + recently image +
+ + + +
+ + + +
+ + +
+ + + +
+ + + + + + + + + + + \ No newline at end of file