Foto-Collage (Polaroid-Scrapbook) für Dogfather & Casper auf der Startseite
This commit is contained in:
@@ -425,6 +425,77 @@ footer.site-footer {
|
|||||||
font-size: .8rem; color: var(--text-muted);
|
font-size: .8rem; color: var(--text-muted);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ---------- Foto-Collage (Polaroid-Scrapbook, z.B. Dogfather & Casper) ---------- */
|
||||||
|
.collage-wrap {
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: flex-end;
|
||||||
|
gap: 1.6rem 1rem;
|
||||||
|
padding: 2.5rem 0 1.5rem;
|
||||||
|
max-width: 900px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
.collage-item {
|
||||||
|
background: #fff;
|
||||||
|
padding: 10px 10px 30px;
|
||||||
|
border-radius: 6px;
|
||||||
|
box-shadow: 0 16px 30px rgba(0, 0, 0, .4);
|
||||||
|
width: 190px;
|
||||||
|
transition: transform .25s ease, box-shadow .25s ease;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
.collage-item:nth-child(1) { transform: rotate(-7deg) translateY(12px); }
|
||||||
|
.collage-item:nth-child(2) { transform: rotate(4deg) translateY(-10px); z-index: 2; width: 210px; }
|
||||||
|
.collage-item:nth-child(3) { transform: rotate(-3deg) translateY(4px); }
|
||||||
|
.collage-item:nth-child(4) { transform: rotate(8deg) translateY(-6px); }
|
||||||
|
.collage-item:nth-child(5) { transform: rotate(-9deg) translateY(10px); }
|
||||||
|
.collage-item:hover {
|
||||||
|
transform: scale(1.08) rotate(0deg) !important;
|
||||||
|
z-index: 5;
|
||||||
|
box-shadow: 0 22px 40px rgba(0, 0, 0, .55);
|
||||||
|
}
|
||||||
|
.collage-photo {
|
||||||
|
position: relative;
|
||||||
|
aspect-ratio: 1 / 1;
|
||||||
|
border-radius: 2px;
|
||||||
|
overflow: hidden;
|
||||||
|
background: repeating-linear-gradient(135deg, #e8ebee, #e8ebee 10px, #f6f7f9 10px, #f6f7f9 20px);
|
||||||
|
}
|
||||||
|
.collage-photo img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
object-fit: cover;
|
||||||
|
/* dezenter Marken-Look: Sättigung/Kontrast leicht angehoben, Farbton via Overlay */
|
||||||
|
filter: saturate(1.15) contrast(1.08) brightness(1.02);
|
||||||
|
}
|
||||||
|
.collage-photo::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
background: linear-gradient(155deg, rgba(143, 217, 234, .22), rgba(139, 92, 246, .14));
|
||||||
|
mix-blend-mode: overlay;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.collage-photo .img-placeholder {
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
border-radius: 0;
|
||||||
|
border: none;
|
||||||
|
color: #6b7280;
|
||||||
|
}
|
||||||
|
.collage-caption {
|
||||||
|
text-align: center;
|
||||||
|
font-family: "Comic Sans MS", "Segoe Print", cursive;
|
||||||
|
color: #2a2a2a;
|
||||||
|
font-size: .85rem;
|
||||||
|
margin-top: .5rem;
|
||||||
|
}
|
||||||
|
@media (max-width: 620px) {
|
||||||
|
.collage-item, .collage-item:nth-child(2) { width: 140px; }
|
||||||
|
}
|
||||||
|
|
||||||
/* ---------- Live-Status-Punkt ---------- */
|
/* ---------- Live-Status-Punkt ---------- */
|
||||||
.live-dot {
|
.live-dot {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
|||||||
+47
@@ -63,6 +63,37 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<!-- ================= FOTO-COLLAGE: DOGFATHER & CASPER ================= -->
|
||||||
|
<section class="section-tight">
|
||||||
|
<div class="container text-center">
|
||||||
|
<span class="eyebrow">🩵 Gesichter hinter dem Universum</span>
|
||||||
|
<h2>Dogfather & Casper</h2>
|
||||||
|
<div class="collage-wrap" id="collage-wrap">
|
||||||
|
<div class="collage-item">
|
||||||
|
<div class="collage-photo"><img class="collage-img" data-fallback="Dogfather" src="assets/img/dogfather-portrait.jpg" alt="Dogfather"></div>
|
||||||
|
<p class="collage-caption">Dogfather 🩵</p>
|
||||||
|
</div>
|
||||||
|
<div class="collage-item">
|
||||||
|
<div class="collage-photo"><img class="collage-img" data-fallback="Casper" src="assets/img/casper-1.jpg" alt="Casper"></div>
|
||||||
|
<p class="collage-caption">Casper 🐾</p>
|
||||||
|
</div>
|
||||||
|
<div class="collage-item">
|
||||||
|
<div class="collage-photo"><img class="collage-img" data-fallback="Dogfather & Casper" src="assets/img/dogfather-casper-1.jpg" alt="Dogfather und Casper zusammen"></div>
|
||||||
|
<p class="collage-caption">Team 🩵🐾</p>
|
||||||
|
</div>
|
||||||
|
<div class="collage-item">
|
||||||
|
<div class="collage-photo"><img class="collage-img" data-fallback="Casper" src="assets/img/casper-2.jpg" alt="Casper"></div>
|
||||||
|
<p class="collage-caption">Husky-Life</p>
|
||||||
|
</div>
|
||||||
|
<div class="collage-item">
|
||||||
|
<div class="collage-photo"><img class="collage-img" data-fallback="Dogfather" src="assets/img/dogfather-portrait-2.jpg" alt="Dogfather"></div>
|
||||||
|
<p class="collage-caption">Behind the Cam</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p class="small muted" style="max-width:50ch;margin:0 auto;">Echte Fotos folgen — sobald sie da sind, erscheinen sie hier automatisch in genau diesem Collagen-Look.</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
<!-- ================= STATS ================= -->
|
<!-- ================= STATS ================= -->
|
||||||
<section class="section-tight">
|
<section class="section-tight">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
@@ -172,6 +203,22 @@
|
|||||||
const API_BASE_URL = "https://dogfather-universe-postfach.dogfather1608.workers.dev";
|
const API_BASE_URL = "https://dogfather-universe-postfach.dogfather1608.workers.dev";
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", () => {
|
document.addEventListener("DOMContentLoaded", () => {
|
||||||
|
// Foto-Collage: solange echte Fotos fehlen, hübschen Platzhalter statt
|
||||||
|
// kaputtem Bild-Icon zeigen. Sobald ein Foto unter dem passenden Pfad
|
||||||
|
// (assets/img/dogfather-portrait.jpg etc.) liegt, taucht es automatisch auf.
|
||||||
|
document.querySelectorAll(".collage-img").forEach((img) => {
|
||||||
|
img.addEventListener(
|
||||||
|
"error",
|
||||||
|
() => {
|
||||||
|
const div = document.createElement("div");
|
||||||
|
div.className = "img-placeholder";
|
||||||
|
div.innerHTML = `${img.dataset.fallback}<br><span class="small">Foto folgt</span>`;
|
||||||
|
img.replaceWith(div);
|
||||||
|
},
|
||||||
|
{ once: true }
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
// Live-Status: grüner Punkt, wenn Dogfather gerade live ist
|
// Live-Status: grüner Punkt, wenn Dogfather gerade live ist
|
||||||
const liveDot = document.getElementById("live-dot");
|
const liveDot = document.getElementById("live-dot");
|
||||||
const liveText = document.getElementById("live-text");
|
const liveText = document.getElementById("live-text");
|
||||||
|
|||||||
Reference in New Issue
Block a user