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();