KSS Style Guide

4 #permalink PRODUKTY - sekcja produktów

Toggle example guides Toggle HTML markup

Oto opis kodu CSS:

  1. main: Ten selektor definiuje stylizację dla elementu <main>. Ustala minimalną wysokość na 100% ekranu (min-height: 100%), pozycję względną (position: relative), elastyczny flex na 1 i szerokość na 100%.

  2. #hamburger: Ukrywa element o identyfikatorze "hamburger" (display: none).

  3. input#toggle: Ukrywa element input o identyfikatorze "toggle" (display: none).

  4. #men, #women, #kid: Stylizuje sekcje etykiet kategorii (Men, Women, Kids) nadając im odpowiedni rozmiar czcionki (font-size: 1.8rem), kolor tekstu (color: gray), tło (background-color: #b4b0b0) oraz wewnętrzny padding.

  5. .products label: Stylizuje etykiety kategorii produktów. Dodaje obramowanie, padding, marginesy, kursor wskazujący na wskaźnik oraz efekt przejścia.

  6. .products: Wyśrodkowuje zawartość sekcji "products" w pionie i układa ją w kolumnę.

  7. .products > div: Ustala szerokość elementów wewnątrz "products" na 90%, ustawia maksymalną szerokość na 400px i wyśrodkowuje je na stronie.

  8. .products input[type="radio"] + label: Ustala margines dla etykiet obok radio inputów.

  9. .products input:checked + label: Stylizuje etykiety wybranych kategorii, zmieniając tło na kolor szary.

  10. input[type="radio"]: Ukrywa radio inputy.

  11. .product_women-main, .product_men-main, .product_kids-main: Stylizuje sekcje główne produktów (dla kobiet, mężczyzn i dzieci), ukrywając je i ustawiając odpowiednie właściwości flexbox.

  12. .product_women, .product_men, .product_kids: Stylizuje pojedyncze produkty, nadając im obramowanie, margines na dole, tło, zaokrąglone rogi, padding, szerokość i efekt przejścia.

  13. .product_women:hover, .product_men:hover, .product_kids:hover: Definiuje efekty interakcji przy najechaniu kursorem na produkty. Dodaje cień i animację.

  14. .product_women img, .product_men img, .product_kids img: Stylizuje obrazy produktów, zapewniając im maksymalną szerokość, wysokość automatyczną i wyśrodkowanie na stronie.

  15. .product_women h3, .product_men h3, .product_kids h3: Stylizuje tytuły produktów, nadając im margines na dole, rozmiar czcionki i kolor tekstu.

  16. .product_women p, .product_men p, .product_kids p: Stylizuje opisy produktów, nadając im margines na dole, rozmiar czcionki i kolor tekstu.

  17. .product_women button, .product_men button, .product_kids button: Stylizuje przyciski "ADD CARD" przy produktach, nadając im odpowiednie tło, kolor tekstu, padding, brak obramowania i efekt przejścia.

  18. .product button:hover: Stylizuje przyciski przy najechaniu kursorem, zmieniając kolor tła.

  19. #men1, #women1, #kid1: Stylizuje etykiety sekcji "PRODUCTS MEN", "PRODUCTS WOMEN" i "PRODUCTS KID", nadając im odpowiednią justyfikację, rozmiar czcionki, tło i padding.

  20. #all:checked ~ #men1, #all:checked ~ #women1, #all:checked ~ #kid1: Wyświetla odpowiednie sekcje po zaznaczeniu kategorii "All" za pomocą selektora ":checked" i operatora "~".

  21. #men:checked ~ #women1, #men:checked ~ #kid1, #women:checked ~ #men1, #women:checked ~ #kid1, #kids:checked ~ #men1, #kids:checked ~ #women1: Ukrywa odpowiednie sekcje po wybraniu konkretnej kategorii.

  22. #all:checked ~ .product_men-main, #all:checked ~ .product_women-main, #all:checked ~ .product_kids-main, #men:checked ~ .product_men-main, #women:checked ~ .product_women-main, #kids:checked ~ .product_kids-main: Wyświetla odpowiednie sekcje produktów po zaznaczeniu kategorii za pomocą selektora ":checked" i operatora "~".

  23. #men:checked ~ .product_women-main, #men:checked ~ .product_kids-main, #women:checked ~ .product_men-main, #women:checked ~ .product_kids-main, #kids:checked ~ .product_men-main, #kids:checked ~ .product_women-main: Ukrywa odpowied

nie sekcje produktów po wybraniu konkretnej kategorii za pomocą selektora ":checked" i operatora "~".

  1. a: Stylizuje wszystkie linki na stronie, nadając im kolor tekstu i usuwając domyślne podkreślenie.

  2. a:hover: Stylizuje linki przy najechaniu kursorem, zmieniając kolor tekstu.

  3. Reguły @media (max-width: 960px) i @media (max-width: 640px): Te reguły media queries dostosowują szerokość produktów do różnych rozmiarów ekranu. Produkty zmieniają swoją szerokość w zależności od szerokości ekranu, aby zachować responsywność strony.

Ten kod CSS jest odpowiedzialny za stylizację i układ elementów na stronie internetowej oraz kontrolę widoczności produktów w zależności od wybranej kategorii.

Example

.

.

PRODUCTS MEN
Men photo item1

Men product 1

$10.00

Men photo item2

Men product 2

$10.00

Men photo item3

Men product 3

$10.00

Men photo item4

Men product 4

$10.00

Men photo item5

Men product 5

$10.00

Men photo item6

Men product 6

$10.00

PRODUCTS WOMEN
Women photo item1

Women product 1

$99.00

Women photo item2

Women product 2

$99.00

Women photo item3

Women product 3

$99.00

Women photo item4

Women product 4

$99.00

Women photo item5

Women product 5

$99.00

Women photo item6

Women product 6

$99.00

PRODUCTS KID
Kids photo item1

Kids product 1

$30.00

Kids photo item2

Kids product 2

$30.00

Kids photo item3

Kids product 3

$30.00

Kids photo item4

Kids product 4

$30.00

Kids photo item5

Kids product 5

$30.00

Kids photo item6

Kids product 6

$30.00

Markup
    <main>
        <div id="container" class="container">
            <button style="display: none;" id="button" class="button">Potwierdź godzinę !</button>
        </div>
        <section class="products">
            <h1 style="display:none;">.</h1>
            <h2 style="display:none;">.</h2>
            <input type="radio" id="all" name="category" checked>
            <label for="all">All</label>
            <input type="radio" id="men" name="category">
            <label for="men">Men</label>
            <input type="radio" id="women" name="category">
            <label for="women">Women</label>
            <input type="radio" id="kids" name="category">
            <label for="kids">Kids</label>
            <div id="men1">PRODUCTS MEN</div>
            <section class="product_men-main">
                <div class="product_men">
                    <img src="img/product1.webp" alt="Men photo item1" loading="lazy" width="250" height="250">
                    <h3>Men product 1</h3>
                    <p>$10.00</p>
                    <button onclick="addToCart(this)" data-name="Men photo item1" data-price="99.00" data-image="img/product1.webp">ADD CARD</button>
                </div>
                <div class="product_men">
                    <img src="img/product2.webp" alt="Men photo item2" loading="lazy" width="250" height="250">
                    <h3>Men product 2</h3>
                    <p>$10.00</p>
                    <button onclick="addToCart(this)" data-name="Men photo item2" data-price="99.00" data-image="img/product2.webp">ADD CARD</button>
                </div>
                <div class="product_men">
                    <img src="img/product3.webp" alt="Men photo item3" loading="lazy" width="250" height="250">
                    <h3>Men product 3</h3>
                    <p>$10.00</p>
                    <button onclick="addToCart(this)" data-name="Men photo item3" data-price="99.00" data-image="img/product3.webp">ADD CARD</button>
                </div>
                <div class="product_men">
                    <img src="img/product4.webp" alt="Men photo item4" loading="lazy" width="250" height="250">
                    <h3>Men product 4</h3>
                    <p>$10.00</p>
                    <button onclick="addToCart(this)" data-name="Men photo item4" data-price="99.00" data-image="img/product4.webp">ADD CARD</button>
                </div>
                <div class="product_men">
                    <img src="img/product5.webp" alt="Men photo item5" loading="lazy" width="250" height="250">
                    <h3>Men product 5</h3>
                    <p>$10.00</p>
                    <button onclick="addToCart(this)" data-name="Men photo item5" data-price="99.00" data-image="img/product5.webp">ADD CARD</button>
                </div>
                <div class="product_men">
                    <img src="img/product6.webp" alt="Men photo item6" loading="lazy" width="250" height="250">
                    <h3>Men product 6</h3>
                    <p>$10.00</p>
                    <button onclick="addToCart(this)" data-name="Men photo item6" data-price="99.00" data-image="img/product6.webp">ADD CARD</button>
                </div>
            </section>
            <div id="women1">PRODUCTS WOMEN</div>
            <section class="product_women-main">
                <div class="product_women">
                    <img src="img/product7.webp" alt="Women photo item1" loading="lazy" width="250" height="250">
                    <h3>Women product 1</h3>
                    <p>$99.00</p>
                    <button onclick="addToCart(this)" data-name="Women photo item1" data-price="99.00" data-image="img/product7.webp">ADD CARD</button>
                </div>
                <div class="product_women">
                    <img src="img/product8.webp" alt="Women photo item2" loading="lazy" width="250" height="250">
                    <h3>Women product 2</h3>
                    <p>$99.00</p>
                    <button onclick="addToCart(this)" data-name="Women photo item2" data-price="99.00" data-image="img/product8.webp">ADD CARD</button>
                </div>
                <div class="product_women">
                    <img src="img/product9.webp" alt="Women photo item3" loading="lazy" width="250" height="250">
                    <h3>Women product 3</h3>
                    <p>$99.00</p>
                    <button onclick="addToCart(this)" data-name="Women photo item3" data-price="99.00" data-image="img/product9.webp">ADD CARD</button>
                </div>
                <div class="product_women">
                    <img src="img/product10.webp" alt="Women photo item4" loading="lazy" width="250" height="250">
                    <h3>Women product 4</h3>
                    <p>$99.00</p>
                    <button onclick="addToCart(this)" data-name="Women photo item4" data-price="99.00" data-image="img/product10.webp">ADD CARD</button>
                </div>
                <div class="product_women">
                    <img src="img/product11.webp" alt="Women photo item5" loading="lazy" width="250" height="250">
                    <h3>Women product 5</h3>
                    <p>$99.00</p>
                    <button onclick="addToCart(this)" data-name="Women photo item5" data-price="99.00" data-image="img/product11.webp">ADD CARD</button>
                </div>
                <div class="product_women">
                    <img src="img/product12.webp" alt="Women photo item6" loading="lazy" width="250" height="250">
                    <h3>Women product 6</h3>
                    <p>$99.00</p>
                    <button onclick="addToCart(this)" data-name="Women photo item6" data-price="99.00" data-image="img/product12.webp">ADD CARD</button>
                </div>
            </section>
            <div id="kid1">PRODUCTS KID</div>
            <section class="product_kids-main">
                <div class="product_kids">
                    <img src="img/product4.webp" alt="Kids photo item1" loading="lazy" width="250" height="250">
                    <h3>Kids product 1</h3>
                    <p>$30.00</p>
                    <button onclick="addToCart(this)" data-name="Kids photo item1" data-price="30.00" data-image="img/product14.webp">ADD CARD</button>
                </div>
                <div class="product_kids">
                    <img src="img/product14.webp" alt="Kids photo item2" loading="lazy" width="250" height="250">
                    <h3>Kids product 2</h3>
                    <p>$30.00</p>
                    <button onclick="addToCart(this)" data-name="Kids photo item2" data-price="30.00" data-image="img/product14.webp">ADD CARD</button>
                </div>
                <div class="product_kids">
                    <img src="img/product15.webp" alt="Kids photo item3" loading="lazy" width="250" height="250">
                    <h3>Kids product 3</h3>
                    <p>$30.00</p>
                    <button onclick="addToCart(this)" data-name="Kids photo item3" data-price="30.00" data-image="img/product15.webp">ADD CARD</button>
                </div>
                <div class="product_kids">
                    <img src="img/product16.webp" alt="Kids photo item4" loading="lazy" width="250" height="250">
                    <h3>Kids product 4</h3>
                    <p>$30.00</p>
                    <button onclick="addToCart(this)" data-name="Kids photo item4" data-price="30.00" data-image="img/product16.webp">ADD CARD</button>
                </div>
                <div class="product_kids">
                    <img src="img/product8.webp" alt="Kids photo item5" loading="lazy" width="250" height="250">
                    <h3>Kids product 5</h3>
                    <p>$30.00</p>
                    <button onclick="addToCart(this)" data-name="Kids photo item5" data-price="30.00" data-image="img/product8.webp">ADD CARD</button>
                </div>
                <div class="product_kids">
                    <img src="img/product18.webp" alt="Kids photo item6" loading="lazy" width="250" height="250">
                    <h3>Kids product 6</h3>
                    <p>$30.00</p>
                    <button onclick="addToCart(this)" data-name="Kids photo item6" data-price="30.00" data-image="img/product18.webp">ADD CARD</button>
                </div>
            </section>
        </section>
    </main>
    <script>
      function addToCart(buttonElement) {
          const name = buttonElement.getAttribute('data-name');
          const price = parseFloat(buttonElement.getAttribute('data-price'));
          const image = buttonElement.getAttribute('data-image'); // Pobierz ścieżkę obrazu
          let cart = JSON.parse(localStorage.getItem('cart')) || [];
          cart.push({ name, price, image }); // Dodaj przedmiot do koszyka
          localStorage.setItem('cart', JSON.stringify(cart)); // Zaktualizuj koszyk w localStorage
          updateCartCount(); // Aktualizuj licznik koszyka
      }
      function displayCart() {
          let cartItems = document.getElementById('cartItems');
          let totalPrice = 0;
          let cart = JSON.parse(localStorage.getItem('cart')) || [];
          cartItems.innerHTML = ''; // Wyczyść istniejące przedmioty
          cart.forEach((item, index) => {
              let itemElement = document.createElement('div');
              itemElement.classList.add('item');
              itemElement.innerHTML = `
                  <img src="${item.image}" alt="${item.name}" style="width:100px;">
                  <span>${item.name} - $${item.price.toFixed(2)}</span>
                  <button onclick="removeFromCart(${index})">Remove</button>
              `;
              cartItems.appendChild(itemElement);
              totalPrice += item.price;
          });
          if (cart.length === 0) {
              cartItems.innerHTML = '<p>Your cart is empty.</p>';
          }
          document.getElementById('totalPrice').innerText = `$${totalPrice.toFixed(2)}`;
          updateCartCount(); // Aktualizuj licznik koszyka również tutaj
      }
      function removeFromCart(index) {
          let cart = JSON.parse(localStorage.getItem('cart')) || [];
          cart.splice(index, 1); // Usuń przedmiot z koszyka
          localStorage.setItem('cart', JSON.stringify(cart)); // Zaktualizuj koszyk w localStorage
          displayCart(); // Odśwież widok koszyka
          updateCartCount(); // Aktualizuj licznik koszyka
      }
      function updateCartCount() {
          let cart = JSON.parse(localStorage.getItem('cart')) || [];
          let count = cart.length; // Liczba przedmiotów w koszyku
          document.getElementById('cartCount').textContent = count; // Ustaw tekst licznika koszyka
      }
      function validateAndCheckout() {
          // Pobierz wartości z pól formularza
          const name = document.getElementById('name').value;
          const phone = document.getElementById('phone').value;
          const address = document.getElementById('address').value;
          const cardNumber = document.getElementById('cardNumber').value;
          const cardMM = document.getElementById('cardMM').value;
          const cardYYYY = document.getElementById('cardYYYY').value;
          const cardCVV = document.getElementById('cardCVV').value;
          if (name && phone && address && cardNumber && cardMM && cardYYYY && cardCVV) {
              alert('Zakupy zrealizowane. Więcej informacji na mailu.');
              localStorage.removeItem('cart');
              displayCart();
              updateCartCount();
          } else {
              alert('Proszę uzupełnić wszystkie dane.');
          }
      }
      document.addEventListener('DOMContentLoaded', () => {
          updateCartCount(); // Aktualizacja licznika przy ładowaniu strony
          if (window.location.pathname.includes('cart.html')) {
              displayCart(); // Wyświetl przedmioty w koszyku jeśli jesteś na stronie koszyka
          }
      });
      </script>
Source: styleProduct.css, line 662