The Wall
+
+ stare at
pure
delightful
nothing
all day long . . .
+
diff --git a/submissions/usides/html-movie-seat-booking-js/css/main.css b/submissions/usides/html-movie-seat-booking-js/css/main.css new file mode 100644 index 0000000..f6ea4b3 --- /dev/null +++ b/submissions/usides/html-movie-seat-booking-js/css/main.css @@ -0,0 +1,539 @@ +@import url('https://fonts.googleapis.com/css2?family=Russo+One&display=swap'); +button, +a, +input, +li, +label { + outline: none; + border: transparent; + background-color: rgba(255, 255, 255, 0); + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +html, +body { + height: 100%; +} + +h1, +h2, +p, +a { + font-family: 'Russo One', sans-serif; + text-transform: uppercase; + color: #efefef; + font-size: 1.2rem; +} + +body { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin: 0 2rem; + background-color: #000; + background-image: url(../img/background_wall.jpg); + background-size: 70%; + background-repeat: repeat; + background-attachment: fixed; +} + +@-webkit-keyframes scaleme { + 50% { + -webkit-transform: scale(1.2, 1.2); + transform: scale(1.2, 1.2); + background-color: #fddeaf; + } +} + +@keyframes scaleme { + 50% { + -webkit-transform: scale(1.2, 1.2); + transform: scale(1.2, 1.2); + background-color: #fddeaf; + } +} + +.visually-hidden { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + overflow: hidden; + clip: rect(0 0 0 0); +} + +.overlay { + position: absolute; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.7); + z-index: -1; + -webkit-transition: opacity 0.5s; + transition: opacity 0.5s; +} + +.overlay.hidden-opacity { + opacity: 0; +} + +.try-btn { + position: absolute; + display: block; + top: 0; + right: 0; + margin: 2rem; + width: 55px; + height: 55px; + background-color: #fdffa5; + border-radius: 50%; + border: 3px solid #2c2c2c; + font-family: 'Russo One', sans-serif; + font-size: 0.7rem; + text-align: center; + text-transform: uppercase; + color: #2c2c2c; + cursor: pointer; + -webkit-animation: scaleme 1.5s ease-in-out infinite; + animation: scaleme 1.5s ease-in-out infinite; + z-index: 1; +} + +.main { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + max-width: 700px; + min-height: 730px; + width: 100%; + -webkit-transition: opacity 0.5s; + transition: opacity 0.5s; +} + +.main.hidden-opacity { + opacity: 0; +} + +.description { + min-width: 250px; + -ms-flex-negative: 0; + flex-shrink: 0; + overflow: hidden; + border-radius: 30px 0 0 30px; + border-left: 3px solid #fdffa5; + border-top: 3px solid #fdffa5; + border-bottom: 3px solid #fdffa5; +} + +.description__wrap { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + width: 100%; + height: 100%; + background-image: url(../img/catwall.jpg); + background-repeat: no-repeat; + background-position: 28% 0; + background-size: cover; +} + +.description__header { + margin-top: 1rem; + text-align: center; +} + +.description__text { + padding-left: 1rem; + padding-bottom: 1rem; + padding-top: 3rem; + background: black; + background: -webkit-gradient( + linear, + left bottom, + left top, + color-stop(30%, #1b1b1b), + to(rgba(255, 255, 255, 0)) + ); + background: linear-gradient(0deg, #1b1b1b 30%, rgba(255, 255, 255, 0) 100%); +} + +.description__text__accent { + color: #fdffa5; +} + +.control { + position: relative; + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0; + padding: 1rem 1.2rem; + background-color: rgba(0, 0, 0, 0.2); + border: 3px solid #fdffa5; + border-radius: 0 30px 30px 0; +} + +.control__header { + color: #fdffa5; +} + +.control nav { + margin-top: 1rem; +} + +.control__day-select { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-top: 5rem; +} + +.control__day-select li:not(:first-child) { + margin-left: 0.5rem; +} + +.control__day-select__item { + padding: 0.3rem 0.5rem; + font-family: 'Russo One', sans-serif; + color: #fff; + text-decoration: none; + text-transform: uppercase; + border-radius: 7px; + border: 3px solid transparent; + -webkit-transition: background-color 0.3s, color 0.3s; + transition: background-color 0.3s, color 0.3s; +} + +.control__day-select__item:focus { + border-color: #cb8c2e; +} + +.control__day-select__item:active { + border-color: #cb8c2e; +} + +.control__day-select__item--active { + color: #000; + background-color: #fdffa5; + border-color: #cb8c2e; +} + +.control__seat-select { + text-align: center; + margin-top: 1.5rem; +} + +.control__boxzone { + padding-bottom: 1rem; + border: 1px solid #efefef; + border-radius: 20px; +} + +.control__boxzone .control__header { + text-align: center; + padding: 0.3rem 0; + border-bottom: 1px solid #efefef; +} + +.control__wall { + width: 90%; + margin: 0.5rem auto 0; + padding-bottom: 0.5rem; + color: #efefef; + text-align: center; + border-bottom: 8px solid #efefef; +} + +.control__boxes-row { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} + +.control__price-label { + margin-top: 1rem; + text-align: center; + font-size: 0.7rem; + color: #fddeaf; +} + +.control__prices { + margin: 1rem auto 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: space-evenly; + -ms-flex-pack: space-evenly; + justify-content: space-evenly; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} + +.control__prices__item { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.control__prices__item p { + font-size: 0.7rem; + margin-right: 0.5rem; +} + +.control__prices__item img { + width: 18px; + height: auto; +} + +.control__order { + margin-top: 1rem; + text-align: left; +} + +.control__order .control__header { + text-align: center; +} + +.control__order__boxes { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.control__order__boxes__label { + margin-top: 0.7rem; + color: #fddeaf; +} + +.control__order__boxes__set { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; +} + +.control__order__boxes__item { + margin-left: 0.5rem; + margin-top: 0.7rem; + padding: 0.3rem; + min-width: 30px; + font-size: 0.7rem; + text-align: center; + background-color: #fddeaf; + color: #454545; + border: 2px solid #cb8c2e; +} + +.control__order__price { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin-top: 0.5rem; +} + +.control__order__price p { + color: #fddeaf; +} + +.control__order__price span { + color: #8fff68; + font-size: 1.5rem; +} + +.control__order__price img { + width: 25px; + margin-left: 0.5rem; +} + +.control__confirm-btn { + position: absolute; + -webkit-transform: translate(-50%); + transform: translate(-50%); + left: 50%; + bottom: 0.7rem; + margin-top: 1rem; + padding: 0.5rem; + font-family: 'Russo One', sans-serif; + font-size: 1.2rem; + text-transform: uppercase; + border-radius: 7px; + background-color: #fdffa5; + -webkit-appearance: none; + cursor: pointer; + border: 3px solid transparent; +} + +.control__confirm-btn:focus { + border-color: #cb8c2e; +} + +.control__confirm-btn:active { + border-color: #cb8c2e; +} + +.box { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 30px; + height: 50px; + margin-left: 0.3rem; + margin-right: 0.3rem; + margin-top: 1rem; + background-color: #fddeaf; + border: 2px solid #cb8c2e; + cursor: pointer; +} + +.box__checkbox:checked ~ .box__cat { + opacity: 1; +} + +.box__checkbox:checked ~ .box__number { + opacity: 0; +} + +.box__checkbox:disabled ~ .box__cat { + opacity: 1; + background-image: url(../img/occupied_cat.svg); + cursor: not-allowed; +} + +.box__checkbox:disabled ~ .box__number { + opacity: 0; + cursor: not-allowed; +} + +.box__checkbox:focus ~ .box__number { + color: #cb8c2e; +} + +.box__cat { + position: absolute; + top: 0; + left: 0; + display: block; + width: 100%; + height: 100%; + background: url(../img/select_cat.svg) center/85% no-repeat; + opacity: 0; + -webkit-transition: opacity 0.6s; + transition: opacity 0.6s; +} + +.box__number { + font-size: 0.6rem; + color: #454545; + text-align: center; + font-family: 'Russo One', sans-serif; + text-transform: uppercase; + -webkit-transition: opacity 0.6s, color 0.3s; + transition: opacity 0.6s, color 0.3s; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +@media (hover: hover) and (pointer: fine) { + .control__day-select__item:hover { + color: #000; + background-color: #fdffa5; + border-radius: 7px; + } +} + +@media screen and (max-width: 1400px) { + body { + background-size: 120%; + } +} + +@media screen and (max-width: 690px) { + body { + margin: 0; + background-size: 150%; + } + .main { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + min-height: 0; + height: 100%; + } + .description { + border: none; + border-radius: 0; + border-bottom: 3px solid #fdffa5; + } + .description__wrap { + min-height: 420px; + background-position: 0% 20%; + background-size: cover; + } + .overlay { + display: none; + } + .control { + border-radius: 0; + border: none; + background-color: rgba(0, 0, 0, 0.65); + } + .control__confirm-btn { + position: static; + -webkit-transform: translate(0%); + transform: translate(0%); + } +} + +@media screen and (max-width: 450px) { + .description__wrap { + min-height: 380px; + background-position: 0% 15%; + background-size: 125%; + } + .box { + margin-left: 0.1rem; + margin-right: 0.1rem; + } +} diff --git a/submissions/usides/html-movie-seat-booking-js/css/reset.css b/submissions/usides/html-movie-seat-booking-js/css/reset.css new file mode 100644 index 0000000..a402e9f --- /dev/null +++ b/submissions/usides/html-movie-seat-booking-js/css/reset.css @@ -0,0 +1,59 @@ +*, +*::before, +*::after { + box-sizing: border-box; +} + +ul[class], +ol[class] { + padding: 0; +} + +body, +h1, +h2, +h3, +h4, +p, +ul[class], +ol[class], +li, +figure, +figcaption, +blockquote, +dl, +dd { + margin: 0; +} + +body { + scroll-behavior: smooth; + text-rendering: optimizeSpeed; +} + +ul[class], +ol[class] { + list-style: none; +} + +img { + max-width: 100%; + display: block; +} + +input, +button, +textarea, +select { + font: inherit; +} + +.noselect { + -webkit-touch-callout: none; /* iOS Safari */ + -webkit-user-select: none; /* Safari */ + -khtml-user-select: none; /* Konqueror HTML */ + -moz-user-select: none; /* Old versions of Firefox */ + -ms-user-select: none; /* Internet Explorer/Edge */ + user-select: none; /* Non-prefixed version, currently + supported by Chrome, Edge, Opera and Firefox */ +} diff --git a/submissions/usides/html-movie-seat-booking-js/index.html b/submissions/usides/html-movie-seat-booking-js/index.html new file mode 100644 index 0000000..fc9541d --- /dev/null +++ b/submissions/usides/html-movie-seat-booking-js/index.html @@ -0,0 +1,305 @@ + + +
+ + +
+ stare at
pure
delightful
nothing
all day long . . .
+
Not selected
'; + totalPrice.innerHTML = '0'; + return; + } + + orderedBoxes.innerHTML = selectedBoxes + .map((item) => `${item.value}
`) + .join('\n'); + + totalPrice.innerHTML = selectedBoxes + .map((item) => { + if (item.value <= 6) return PRICES.firstRow; + if (item.value > 6 && item.value <= 13) return PRICES.secondRow; + return PRICES.thirdRow; + }) + .reduce((sum, current) => sum + current); +}; + +const printPrices = () => { + priceRows.forEach((item) => { + item.insertAdjacentHTML( + 'beforeend', + new Array(PRICES[item.dataset.row]) + .fill('