Demo 11 - Vaatekauppa

html_css_basics | ├── demos │ ├── ... │ └── d11 │ ├── index.html │ ├── style.css │ └── img │ ├── kuva_1.jpg │ └── kuva_2.jpg | ├── exercises │ ├── e1 │ └── ... |
gloves trousers suit shirt-s shirt-l

Teoria

shop_layout grid_layout

Tehtävä:


Jos jää aikaa ja kiinnostaa

shop1

Eikä siinä vielä kaikki

<div class="shop-item"> <img src="" alt=""> <p>Item</p> <span>€€€</span> <button>Osta</button> </div> <dialog> <figure> <img src="" alt=""> <figcaption>Item</figcaption> <button class="close add">Lisää ostoskoriin</button> <button class="close cancel">Peruuta</button> </figure> </dialog> shop1 // JavaScript // Source: Dialog Element | Loughlin McSweeney | CodePen const setup_popup = () => { // show spesific dialog on button click const modals = document.querySelectorAll("dialog") const buttons = document.querySelectorAll(".shop-item button"); const images = document.querySelectorAll(".shop-item img"); buttons.forEach( (btn, index) => { btn.addEventListener("click", () => { modals[index].showModal(); document.querySelector('body').classList.add("blur") }); images[index].addEventListener("click", () => { modals[index].showModal(); document.querySelector('body').classList.add("blur") }); }) // close dialogs (button click) const closeBtns = document.querySelectorAll(".close"); closeBtns.forEach( (btn) => { btn.addEventListener("click", () => { document.querySelector('body').classList.remove("blur"); modals.forEach( (modal) => {modal.close();}) }) }); // close dialogs (background click) const dialogs = document.querySelectorAll("dialog"); dialogs.forEach( (dia) => { dia.addEventListener("click", ( event ) => { if (event.target === dia) { modals.forEach( (modal) => {modal.close();}) document.querySelector('body').classList.remove("blur"); } }); }) } /* CSS: popup dialog styles */ /* Source: Dialog Element | Loughlin McSweeney | CodePen */ dialog .cancel:hover{ cursor: pointer; background-color: rgb(207, 207, 207); } dialog figure{ text-align: center; } dialog figure img{ max-height: 80vh; } dialog::backdrop { background: black; opacity: 0.5; } dialog { max-width: 90vw; border: 1px solid black; box-sizing: border-box; padding: 0; } .blur{ filter: blur(2px); } dialog div{ display: block; padding: 1em; }