Fix: single banner as grid background, no duplicated images

- Banner is now a single CSS background-image on .brands-grid
  spanning both card columns (left half on FI-NE, right on LACUEOR)
- Cards only have header (above) + spacer + footer (below)
  with semi-transparent solid backgrounds for readability
- Dropdown changes the grid's background-image directly
- Removed per-card <img> elements (was showing image twice)
- Cleaned up orphaned CSS classes
This commit is contained in:
Oliver
2026-07-01 20:44:08 +00:00
parent ba2097c2d6
commit d4690d9f54
3 changed files with 88 additions and 96 deletions
+45 -59
View File
@@ -75,7 +75,7 @@
experience. experience.
</p> </p>
<div class="brands-grid" role="list"> <div class="brands-grid" role="list" id="brands-grid">
<!-- FI-NE (left half) --> <!-- FI-NE (left half) -->
<a <a
@@ -90,37 +90,30 @@
class="brand-card-top-accent" class="brand-card-top-accent"
aria-hidden="true" aria-hidden="true"
></div> ></div>
<div class="brand-card-image-wrap"> <div class="brand-card-header">
<div class="brand-card-header"> <span class="brand-card-eyebrow"
<span class="brand-card-eyebrow" >Premium Natural Cosmetics</span
>Premium Natural Cosmetics</span >
>
<img
class="brand-card-logo"
src="asset/Fine.svg"
alt="[fi-ne] brand logo"
/>
</div>
<img <img
class="brand-card-image" class="brand-card-logo"
src="asset/banner/1.png" src="asset/Fine.svg"
alt="Brand banner" alt="[fi-ne] brand logo"
style="object-position: left;"
/> />
<div class="brand-card-footer"> </div>
<span class="brand-card-tagline"> <div class="brand-card-spacer" aria-hidden="true"></div>
Clean. Unisex. Uncompromisingly effective.<br /> <div class="brand-card-footer">
Made in Germany. <span class="brand-card-tagline">
</span> Clean. Unisex. Uncompromisingly effective.<br />
<span class="brand-card-cta"> Made in Germany.
finecosmetic.de </span>
<span <span class="brand-card-cta">
class="brand-card-cta-arrow" finecosmetic.de
aria-hidden="true" <span
>&#8594;</span class="brand-card-cta-arrow"
> aria-hidden="true"
</span> >&#8594;</span
</div> >
</span>
</div> </div>
</a> </a>
@@ -137,37 +130,30 @@
class="brand-card-top-accent" class="brand-card-top-accent"
aria-hidden="true" aria-hidden="true"
></div> ></div>
<div class="brand-card-image-wrap"> <div class="brand-card-header">
<div class="brand-card-header"> <span class="brand-card-eyebrow"
<span class="brand-card-eyebrow" >Premium Organic Skin Care</span
>Premium Organic Skin Care</span >
>
<img
class="brand-card-logo"
src="asset/Lacueor.svg"
alt="LACUEOR brand logo"
/>
</div>
<img <img
class="brand-card-image" class="brand-card-logo"
src="asset/banner/1.png" src="asset/Lacueor.svg"
alt="Brand banner" alt="LACUEOR brand logo"
style="object-position: right;"
/> />
<div class="brand-card-footer"> </div>
<span class="brand-card-tagline"> <div class="brand-card-spacer" aria-hidden="true"></div>
From the quantum realm to your skin.<br /> <div class="brand-card-footer">
Made in Berlin &amp; Brandenburg with love. <span class="brand-card-tagline">
</span> From the quantum realm to your skin.<br />
<span class="brand-card-cta"> Made in Berlin &amp; Brandenburg with love.
lacueor.com </span>
<span <span class="brand-card-cta">
class="brand-card-cta-arrow" lacueor.com
aria-hidden="true" <span
>&#8594;</span class="brand-card-cta-arrow"
> aria-hidden="true"
</span> >&#8594;</span
</div> >
</span>
</div> </div>
</a> </a>
+4 -11
View File
@@ -37,19 +37,12 @@
/* ── Banner image selector ──────────────────────────────── */ /* ── Banner image selector ──────────────────────────────── */
var bannerPicker = document.getElementById("banner-picker"); var bannerPicker = document.getElementById("banner-picker");
var bannerImgs = document.querySelectorAll(".brand-card-image"); var brandsGrid = document.getElementById("brands-grid");
if (bannerPicker && bannerImgs.length) { if (bannerPicker && brandsGrid) {
bannerPicker.addEventListener("change", function () { bannerPicker.addEventListener("change", function () {
var val = this.value; var val = this.value;
bannerImgs.forEach(function (img) { brandsGrid.style.backgroundImage =
img.style.opacity = "0"; "url(asset/banner/" + val + ".png)";
});
setTimeout(function () {
bannerImgs.forEach(function (img) {
img.src = "asset/banner/" + val + ".png";
img.style.opacity = "1";
});
}, 200);
}); });
} }
})(); })();
+39 -26
View File
@@ -382,25 +382,11 @@ body::before {
gap: 0; gap: 0;
max-width: 1200px; max-width: 1200px;
margin: 0 auto; margin: 0 auto;
} background-image: url("asset/banner/1.png");
background-size: cover;
.brand-card-image-wrap { background-position: center;
display: flex; background-repeat: no-repeat;
flex-direction: column; transition: background-image 0.4s ease;
height: 100%;
width: 100%;
}
.brand-card-header {
flex-shrink: 0;
padding: 32px 52px 20px;
text-align: center;
}
.brand-card-footer {
flex-shrink: 0;
padding: 20px 52px 40px;
text-align: center;
} }
.brand-card { .brand-card {
@@ -413,21 +399,48 @@ body::before {
} }
.brand-card--fine { .brand-card--fine {
background: var(--fine-beige);
border-right: 1px solid var(--border); border-right: 1px solid var(--border);
} }
.brand-card--lacueor { .brand-card--lacueor {
/* inherits background from grid */
}
.brand-card-header {
flex-shrink: 0;
padding: 32px 52px 20px;
text-align: center;
}
.brand-card--fine .brand-card-header {
background: var(--fine-beige);
}
.brand-card--lacueor .brand-card-header {
background: var(--lacueor-dark);
}
.brand-card-spacer {
flex: 1;
min-height: 280px;
}
.brand-card-footer {
flex-shrink: 0;
padding: 20px 52px 40px;
text-align: center;
}
.brand-card--fine .brand-card-footer {
background: var(--fine-beige);
}
.brand-card--lacueor .brand-card-footer {
background: var(--lacueor-dark); background: var(--lacueor-dark);
} }
.brand-card-image { .brand-card-image {
display: block; display: none;
width: 100%;
height: auto;
flex-shrink: 0;
object-fit: cover;
transition: opacity 0.4s ease;
} }
.brand-card-top-accent { .brand-card-top-accent {