AltoCode

Giungano 3 Prezzi

HTML


<!-- ============================================ -->
<!--                   Prezzi                     -->
<!-- ============================================ -->

<section id="pricing-2421">
	<div class="cs-container">
		<div class="cs-content">
			<span class="cs-topper">Prezzi Chiari e Semplici</span>
			<h2 class="cs-title">Piani Convenienti per ogni Giardino</h2>
			<p class="cs-text">
        Crediamo in prezzi trasparenti ed equi, senza costi nascosti. Scegli il piano più adatto alle tue esigenze, 
        che si tratti di una pulizia una tantum o di un servizio continuativo per risultati sempre impeccabili.
      </p>
		</div>
		<div class="cs-wrapper">
			<div class="cs-button-group">
				<button class="cs-button" data-filter="one">
					<picture class="cs-check-wrapper">
						<img class="cs-check" src="https://nyc3.digitaloceanspaces.com/csimages2/Images/Icons/white-check.svg" alt="check" height="24" width="24" loading="lazy" decoding="async" />
					</picture>
					<div class="cs-flex">
						<span class="cs-discount">Sconto 10%</span>
						<span class="cs-plan">Pulizia settimanale e freschezza</span>
					</div>
					<span class="cs-price">
						€15
						<span class="cs-price-small">/Settimana</span>
					</span>
				</button>
				<button class="cs-button" data-filter="two">
					<picture class="cs-check-wrapper">
						<img class="cs-check" src="https://nyc3.digitaloceanspaces.com/csimages2/Images/Icons/white-check.svg" alt="check" height="24" width="24" loading="lazy" decoding="async" />
					</picture>
					<div class="cs-flex">
						<span class="cs-discount">Sconto 20%</span>
						<span class="cs-plan">Piano base di pulizia</span>
					</div>
					<span class="cs-price">
						€25
						<span class="cs-price-small">/Mese</span>
					</span>
				</button>
				<button class="cs-button" data-filter="three">
					<picture class="cs-check-wrapper">
						<img class="cs-check" src="https://nyc3.digitaloceanspaces.com/csimages2/Images/Icons/white-check.svg" alt="check" height="24" width="24" loading="lazy" decoding="async" />
					</picture>
					<div class="cs-flex">
						<span class="cs-discount">Sconto 30%</span>
						<span class="cs-plan">Cura completa del giardino per animali</span>
					</div>
					<span class="cs-price">
						€40
						<span class="cs-price-small">/Mese</span>
					</span>
				</button>
			</div>
			<!--Card 1-->
			<div class="cs-card" data-category="one">
				<span class="cs-package">Il pacchetto include:</span>
				<ul class="cs-ul">
					<li class="cs-li">
						<img class="cs-icon" loading="lazy" decoding="async" src="https://nyc3.digitaloceanspaces.com/csimages2/Images/Icons/white-check.svg" alt="icona grafica" width="16" height="16" />
						Scegli piani di servizio flessibili, come preferisci.
					</li>
					<li class="cs-li">
						<img class="cs-icon" loading="lazy" decoding="async" src="https://nyc3.digitaloceanspaces.com/csimages2/Images/Icons/white-check.svg" alt="icona grafica" width="16" height="16" />
						Nessun contratto a lungo termine: annulla facilmente in qualsiasi momento.
					</li>
					<li class="cs-li">
						<img class="cs-icon" loading="lazy" decoding="async" src="https://nyc3.digitaloceanspaces.com/csimages2/Images/Icons/white-check.svg" alt="icona grafica" width="16" height="16" />
						Disponibili interventi singoli o ricorrenti.
					</li>
					<li class="cs-li">
						<img class="cs-icon" loading="lazy" decoding="async" src="https://nyc3.digitaloceanspaces.com/csimages2/Images/Icons/white-check.svg" alt="icona grafica" width="16" height="16" />
						Opzioni di pulizia settimanale o bisettimanale.
					</li>
					<li class="cs-li cs-disabled">
						<img class="cs-icon" loading="lazy" decoding="async" src="https://nyc3.digitaloceanspaces.com/csimages2/Images/Icons/white-check.svg" alt="icona grafica" width="16" height="16" />
						Aggiungi la sanificazione ecologica per una protezione extra.
					</li>
					<li class="cs-li cs-disabled">
						<img class="cs-icon" loading="lazy" decoding="async" src="https://nyc3.digitaloceanspaces.com/csimages2/Images/Icons/white-check.svg" alt="icona grafica" width="16" height="16" />
						Servizio disponibile per giardini di tutte le dimensioni.
					</li>
					<li class="cs-li cs-disabled">
						<img class="cs-icon" loading="lazy" decoding="async" src="https://nyc3.digitaloceanspaces.com/csimages2/Images/Icons/white-check.svg" alt="icona grafica" width="16" height="16" />
						Paga facilmente con pagamenti online sicuri.
					</li>
				</ul>
				<a href="" class="cs-button-solid">Scegli il tuo piano</a>
			</div>
			<!--Card 2-->
			<div class="cs-card cs-hidden" data-category="two">
				<span class="cs-package">Il pacchetto include:</span>
				<ul class="cs-ul">
					<li class="cs-li">
						<img class="cs-icon" loading="lazy" decoding="async" src="https://nyc3.digitaloceanspaces.com/csimages2/Images/Icons/white-check.svg" alt="icona grafica" width="16" height="16" />
						Scegli piani di servizio flessibili, come preferisci.
					</li>
					<li class="cs-li">
						<img class="cs-icon" loading="lazy" decoding="async" src="https://nyc3.digitaloceanspaces.com/csimages2/Images/Icons/white-check.svg" alt="icona grafica" width="16" height="16" />
						Nessun contratto a lungo termine: annulla facilmente in qualsiasi momento.
					</li>
					<li class="cs-li">
						<img class="cs-icon" loading="lazy" decoding="async" src="https://nyc3.digitaloceanspaces.com/csimages2/Images/Icons/white-check.svg" alt="icona grafica" width="16" height="16" />
						Disponibili interventi singoli o ricorrenti.
					</li>
					<li class="cs-li">
						<img class="cs-icon" loading="lazy" decoding="async" src="https://nyc3.digitaloceanspaces.com/csimages2/Images/Icons/white-check.svg" alt="icona grafica" width="16" height="16" />
						Opzioni di pulizia settimanale o bisettimanale.
					</li>
					<li class="cs-li">
						<img class="cs-icon" loading="lazy" decoding="async" src="https://nyc3.digitaloceanspaces.com/csimages2/Images/Icons/white-check.svg" alt="icona grafica" width="16" height="16" />
						Aggiungi la sanificazione ecologica per una protezione extra.
					</li>
					<li class="cs-li cs-disabled">
						<img class="cs-icon" loading="lazy" decoding="async" src="https://nyc3.digitaloceanspaces.com/csimages2/Images/Icons/white-check.svg" alt="icona grafica" width="16" height="16" />
						Servizio disponibile per giardini di tutte le dimensioni.
					</li>
					<li class="cs-li cs-disabled">
						<img class="cs-icon" loading="lazy" decoding="async" src="https://nyc3.digitaloceanspaces.com/csimages2/Images/Icons/white-check.svg" alt="icona grafica" width="16" height="16" />
						Paga facilmente con pagamenti online sicuri.
					</li>
				</ul>
				<a href="" class="cs-button-solid">Scegli il tuo piano</a>
			</div>
			<!--Card 3-->
			<div class="cs-card cs-hidden" data-category="three">
				<span class="cs-package">Il pacchetto include:</span>
				<ul class="cs-ul">
					<li class="cs-li">
						<img class="cs-icon" loading="lazy" decoding="async" src="https://nyc3.digitaloceanspaces.com/csimages2/Images/Icons/white-check.svg" alt="icona grafica" width="16" height="16" />
						Scegli piani di servizio flessibili, come preferisci.
					</li>
					<li class="cs-li">
						<img class="cs-icon" loading="lazy" decoding="async" src="https://nyc3.digitaloceanspaces.com/csimages2/Images/Icons/white-check.svg" alt="icona grafica" width="16" height="16" />
						Nessun contratto a lungo termine: annulla facilmente in qualsiasi momento.
					</li>
					<li class="cs-li">
						<img class="cs-icon" loading="lazy" decoding="async" src="https://nyc3.digitaloceanspaces.com/csimages2/Images/Icons/white-check.svg" alt="icona grafica" width="16" height="16" />
						Disponibili interventi singoli o ricorrenti.
					</li>
					<li class="cs-li">
						<img class="cs-icon" loading="lazy" decoding="async" src="https://nyc3.digitaloceanspaces.com/csimages2/Images/Icons/white-check.svg" alt="icona grafica" width="16" height="16" />
						Opzioni di pulizia settimanale o bisettimanale.
					</li>
					<li class="cs-li">
						<img class="cs-icon" loading="lazy" decoding="async" src="https://nyc3.digitaloceanspaces.com/csimages2/Images/Icons/white-check.svg" alt="icona grafica" width="16" height="16" />
						Aggiungi la sanificazione ecologica per una protezione extra.
					</li>
					<li class="cs-li">
						<img class="cs-icon" loading="lazy" decoding="async" src="https://nyc3.digitaloceanspaces.com/csimages2/Images/Icons/white-check.svg" alt="icona grafica" width="16" height="16" />
						Servizio disponibile per giardini di tutte le dimensioni.
					</li>
					<li class="cs-li cs-disabled">
						<img class="cs-icon" loading="lazy" decoding="async" src="https://nyc3.digitaloceanspaces.com/csimages2/Images/Icons/white-check.svg" alt="icona grafica" width="16" height="16" />
						Paga facilmente con pagamenti online sicuri.
					</li>
				</ul>
				<a href="" class="cs-button-solid">Scegli il tuo piano</a>
			</div>
		</div>
	</div>
</section>

CSS


/*-- -------------------------- -->
<---          Prezzi            -->
<--- -------------------------- -*/

/* Mobile - 360px */
@media only screen and (min-width: 0rem) {
  #pricing-2421 {
    padding: var(--sectionPadding);
  }
  #pricing-2421 .cs-container {
    width: 100%;
    max-width: 80rem;
    margin: auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: clamp(3rem, 6vw, 4rem);
    position: relative;
  }
  #pricing-2421 .cs-content {
    text-align: center;
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
  }
  #pricing-2421 .cs-title {
    max-width: 28ch;
  }
  #pricing-2421 .cs-wrapper {
    width: 100%;
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    gap: 1.25rem;
  }
  #pricing-2421 .cs-button-solid {
    font-size: 1rem;
    line-height: clamp(2.875em, 5.5vw, 3.5em);
    text-decoration: none;
    font-weight: 700;
    text-align: center;
    min-width: 9.375rem;
    margin: 0;
    box-sizing: border-box;
    padding: 0 1.5rem;
    background-color: var(--primary);
    border-radius: 0.25rem;
    color: #fff;
    display: inline-block;
    position: relative;
    z-index: 1;
  }
  #pricing-2421 .cs-button-solid:before {
    content: "";
    width: 0%;
    height: 100%;
    background: #000;
    opacity: 1;
    border-radius: 0.25rem;
    position: absolute;
    top: 0;
    left: 0;
    z-index: -1;
    transition: width 0.3s;
  }
  #pricing-2421 .cs-button-solid:hover:before {
    width: 100%;
  }
  #pricing-2421 .cs-button-group {
    grid-column: span 12;
    width: 100%;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: clamp(1rem, 1.9vw, 1.25rem);
  }
  #pricing-2421 .cs-button {
    padding: clamp(2rem, 4vw, 3rem) clamp(1rem, 2.5vw, 2.5rem);
    background-color: #fff;
    border: none;
    border-radius: 0.75rem;
    gap: clamp(1rem, 2vw, 1.5rem);
    overflow: hidden;
    cursor: pointer;
    display: flex;
    align-items: center;
    position: relative;
    z-index: 1;
  }
  #pricing-2421 .cs-button:before {
    content: "";
    width: 100%;
    height: 100%;
    background: var(--primary);
    opacity: 0.05;
    display: block;
    position: absolute;
    top: 0;
    left: 0;
    z-index: -1;
    transition: opacity 0.3s;
  }
  #pricing-2421 .cs-button:after {
    content: "";
    width: 100%;
    height: 100%;
    background: transparent;
    border: 1px solid var(--primary);
    opacity: 0.1;
    border-radius: 0.75rem;
    display: block;
    position: absolute;
    top: 0;
    left: 0;
    z-index: -1;
    transition: opacity 0.3s;
  }
  #pricing-2421 .cs-button.cs-active {
    /* quando il button è attivo puoi personalizzarlo qui se vuoi dargli uno stile diverso */
  }
  #pricing-2421 .cs-button.cs-active .cs-check-wrapper {
    border: none;
    background-color: var(--primary);
  }
  #pricing-2421 .cs-button.cs-active .cs-check {
    opacity: 1;
  }
  #pricing-2421 .cs-button.cs-active .cs-discount {
    color: #fff;
  }
  #pricing-2421 .cs-button.cs-active .cs-discount:before {
    opacity: 1;
  }
  #pricing-2421 .cs-button.cs-active .cs-price {
    color: var(--headerColor);
  }
  #pricing-2421 .cs-button.cs-active:before {
    opacity: 0.1;
  }
  #pricing-2421 .cs-button.cs-active:after {
    opacity: 1;
  }
  #pricing-2421 .cs-check-wrapper {
    width: clamp(1.5rem, 1.9vw, 2rem);
    height: clamp(1.5rem, 1.9vw, 2rem);
    flex: none;
    background-color: #fff;
    border: #cfd0d1;
    border-radius: 50%;
    transition: background-color 0.3s, border 0.3s;
  }
  #pricing-2421 .cs-check {
    width: 100%;
    height: auto;
    opacity: 0;
    display: block;
    transition: opacity 0.3s;
  }
  #pricing-2421 .cs-flex {
    margin-right: auto;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.25rem;
  }
  #pricing-2421 .cs-discount {
    font-size: 0.875rem;
    line-height: 1.5em;
    padding: 0.125rem 0.75rem 0;
    background-color: #fff;
    border-radius: 2rem;
    color: var(--secondary);
    overflow: hidden;
    position: relative;
    z-index: 1;
    transition: color 0.3s;
  }
  #pricing-2421 .cs-discount:before {
    content: "";
    width: 100%;
    height: 100%;
    background: var(--secondary);
    opacity: 0.2;
    border-radius: 2rem;
    display: block;
    position: absolute;
    top: 0;
    left: 0;
    z-index: -1;
    transition: opacity 0.3s;
  }
  #pricing-2421 .cs-plan {
    font-size: clamp(1rem, 3.3vw, 1.5625rem);
    line-height: 1.5em;
    text-align: left;
    font-weight: 700;
    color: var(--headerColor);
  }
  #pricing-2421 .cs-price {
    font-size: clamp(2.4375rem, 7vw, 3.0625rem);
    line-height: 1.2em;
    font-weight: 700;
    color: var(--bodyTextColor);
    display: inline-flex;
    align-items: baseline;
    transition: color 0.3s;
  }
  #pricing-2421 .cs-price-small {
    font-size: 1rem;
  }
  #pricing-2421 .cs-card {
    grid-column: span 12;
    list-style: none;
    width: 100%;
    margin: 0;
    box-sizing: border-box;
    padding: clamp(1rem, 5vw, 3rem);
    background-color: #fff;
    border-radius: 0.75rem;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    position: relative;
    z-index: 1;
    transition: transform 0.6s;
    transform-origin: top left;
  }
  #pricing-2421 .cs-card:before {
    content: "";
    width: 100%;
    height: 100%;
    background: var(--primary);
    opacity: 0.05;
    display: block;
    position: absolute;
    top: 0;
    left: 0;
    z-index: -1;
  }
  #pricing-2421 .cs-card.cs-hidden {
    width: 100%;
    visibility: hidden;
    opacity: 0;
    position: absolute;
    left: 0;
    transform: scale(0);
  }
  #pricing-2421 .cs-package {
    font-size: 1.5625rem;
    line-height: 1.5em;
    font-weight: 700;
    margin: 0 0 1rem;
  }
  #pricing-2421 .cs-ul {
    width: 100%;
    margin: 0 0 2rem;
    padding: 0;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1rem;
  }
  #pricing-2421 .cs-li {
    font-size: 1rem;
    line-height: 1.2em;
    text-align: left;
    list-style: none;
    width: 100%;
    margin: 0;
    padding: 0;
    color: var(--bodyTextColor);
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
  }
  #pricing-2421 .cs-li.cs-disabled .cs-icon {
    background-color: #cfd0d1;
  }
  #pricing-2421 .cs-icon {
    width: 1.5rem;
    height: auto;
    flex: none;
    padding: 0.25rem;
    background-color: var(--primary);
    border-radius: 50%;
    display: block;
  }
}
/* Desktop - 1024px */
@media only screen and (min-width: 64rem) {
  #pricing-2421 .cs-card,
  #pricing-2421 .cs-button-group {
    grid-column: span 6;
  }
  #pricing-2421 .cs-card {
    order: -1;
  }
}

JAVASCRIPT


class CS_GalleryFilter {
	filtersSelector = ".cs-button";
	cardSelector = ".cs-card";
	activeClass = "cs-active";
	hiddenClass = "cs-hidden";

	constructor() {
		this.$card = document.querySelectorAll(this.cardSelector);
		const $filters = document.querySelectorAll(this.filtersSelector);

		this.onClick($filters[0]);

		for (const $filter of $filters) {
			$filter.addEventListener("click", () => this.onClick($filter));
		}
	}

	onClick($filter) {
		this.filter($filter.dataset.filter);

		const { activeClass } = this;

		this.$activeFilter?.classList.remove(activeClass);
		$filter.classList.add(activeClass);

		this.$activeFilter = $filter;
	}

	filter(filter) {
		const showAll = filter == "all";
		const { hiddenClass } = this;

		for (const $gallery of this.$card) {
			const show = showAll || $gallery.dataset.category == filter;
			$gallery.classList.toggle(hiddenClass, !show);
		}
	}
}
new CS_GalleryFilter();