KSS Style Guide

8 #permalink CART - sekcja koszyka

Toggle example guides Toggle HTML markup

Oto opis stylizacji sekcji koszyka (cart) oraz jej elementów:

  1. .cart: Główny kontener sekcji koszyka. Ma następujące właściwości stylu:

    • position: fixed; - Ustawia sekcję w pozycji stałej.
    • top: 8vh; - Umieszcza sekcję na 8% wysokości widoku od góry strony.
    • right: 0; - Przykleja sekcję do prawego krawędzi ekranu.
    • padding: 1em 3em; - Dodaje wewnętrzny odstęp 1em z góry i dołu oraz 3em z prawej strony.
    • background-color: #d4d7d8; - Ustawia tło sekcji na kolor szary.
    • transform: translateX(100%); - Przesuwa sekcję na prawo poza ekran, początkowo jest niewidoczna.
    • z-index: 10; - Określa warstwę, na której znajduje się sekcja.
    • transition: 0.3s; - Definiuje efekt płynności zmiany stylu w czasie 0.3 sekundy.
  2. .cart__active: Klasa, która aktywuje sekcję koszyka, przesuwając ją z powrotem na ekran. Włącza efekt transform przy użyciu translateX(0).

  3. .cart__wrapper: Kontener wewnątrz sekcji koszyka. Stylizacja zawiera:

    • display: flex; - Ustawia elementy w sekcji w jednym rzędzie.
    • flex-direction: column; - Elementy wewnątrz są rozmieszczone w kolumnie.
    • gap: 3em; - Dodaje odstęp między elementami 3em.
    • padding: 0.5em; - Dodaje wewnętrzny odstęp 0.5em.
    • margin-top: 5em; - Ustawia margines z góry na 5em.
    • box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.1); - Dodaje cień do sekcji.
  4. .cart__heading: Nagłówek sekcji koszyka. Stylizacja obejmuje:

    • padding: 2.5em 0 1em; - Dodaje wewnętrzny odstęp 2.5em z góry, 0 z prawej i 1em z dołu.
    • font-size: 3rem; - Ustawia rozmiar czcionki na 3rem.
    • text-align: center; - Wyśrodkowuje tekst na środku.
  5. .cart__table: Tabela zawierająca elementy w koszyku. Stylizacja zawiera:

    • border-collapse: collapse; - Scalanie obramowania komórek tabeli.
  6. .cart__table-titles: Wiersz z tytułami kolumn tabeli. Stylizacja obejmuje:

    • height: 50px; - Wysokość wynosząca 50 pikseli.
  7. .cart__table-content: Komórki z zawartością tabeli. Stylizacja zawiera:

    • text-align: center; - Wyśrodkowuje zawartość tekstu w komórkach.
  8. .cart__table-content td: Dodaje obramowanie do komórek tabeli.

  9. .cart__table-img: Zdjęcia produktów w koszyku. Stylizacja obejmuje:

    • height: 70px; - Ustawia wysokość zdjęć na 70 pikseli.
    • width: 70px; - Ustawia szerokość zdjęć na 70 pikseli.
  10. .cart__total: Wyświetla łączną cenę produktów w koszyku. Stylizacja zawiera:

    • padding: 0.1em; - Dodaje wewnętrzny odstęp 0.1em.
    • color: #8e928f; - Ustawia kolor tekstu na szary.
  11. .cart__minus, .cart__plus: Przyciski do zmniejszania i zwiększania ilości produktów. Stylizacja obejmuje:

    • padding: 0.5em; - Dodaje wewnętrzny odstęp 0.5em.
    • font-size: 1.2rem; - Ustawia rozmiar czcionki na 1.2rem.
    • cursor: pointer; - Ustawia kursor myszy w postaci wskaźnika.
  12. **.cart__

box: Kontener dla pojedynczego produktu w koszyku. Stylizacja zawiera: - display: flex; - Elementy wewnątrz są rozmieszczone w jednym rzędzie. - justify-content: space-between; - Rozmieszcza elementy w równym odstępie między sobą. - align-items: center; - Wyśrodkowuje elementy względem siebie. - margin-bottom: 2em; - Dodaje margines na dole o wysokości 2em.

  1. .cart__continue: Przycisk "Continue Shopping" służący do kontynuacji zakupów. Stylizacja obejmuje:

    • padding: 1em 2em; - Dodaje wewnętrzny odstęp 1em z góry i dołu oraz 2em poziomo.
    • background-color: #396e75; - Ustawia kolor tła na odcień niebieskiego.
    • color: #ffffff; - Ustawia biały kolor tekstu.
    • font-size: 1.4rem; - Ustawia rozmiar czcionki na 1.4rem.
    • border-radius: 50px; - Zaokrągla rogi przycisku.
  2. .cart__total-price: Wyświetla łączną cenę produktów w koszyku. Stylizacja obejmuje:

    • font-size: 2rem; - Ustawia rozmiar czcionki na 2rem.

To są główne elementy stylizacji sekcji koszyka. Stylizacja zawiera również Media Query dla większych ekranów, które wprowadzają dodatkowe zmiany wizualne. Przycisk "Continue Shopping" zmienia kolor tła i czcionki po najechaniu kursorem (hover).

Example
Total:

Personal Information

Card Information

Markup
    <main>
        <div id="container" class="container">
            <button style="display: none;" id="button" class="button">Potwierdź godzinę !</button>
        </div>
        <div class="testi">
            <div id="cartItems"></div>
            <div>Total: <span id="totalPrice"></span></div>
            <div id="checkoutSection">
            <form id="personalInfoForm">
                <h2>Personal Information</h2>
                <input type="text" id="name" placeholder="Name and Surname" required>
                <input type="text" id="phone" placeholder="Phone Number" required>
                <input type="text" id="address" placeholder="Address" required>
                <h2>Card Information</h2>
                <input type="text" id="cardNumber" placeholder="Card Number" required>
                <input type="text" id="cardMM" placeholder="MM" required>
                <input type="text" id="cardYYYY" placeholder="YYYY" required>
                <input type="text" id="cardCVV" placeholder="CVV" required>
                <button type="button" onclick="validateAndCheckout()">Checkout!</button>
            </form>
            </div>
        </div>
    </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: styleCart.css, line 1045