feat: initial landing page wireframe
This commit is contained in:
parent
9707e7ee62
commit
ce749915ed
66
index.html
66
index.html
@ -1,11 +1,67 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Document</title>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Social Cooking Wireframe</title>
|
||||
<link rel="stylesheet" href="stylesheet.css" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="page-wrapper">
|
||||
<header class="header" aria-label="Hauptnavigation">
|
||||
<div class="header__brand" aria-label="Logo Platzhalter">LOGO</div>
|
||||
<nav class="nav" aria-label="Seitennavigation">
|
||||
<a class="nav__link" href="#" role="link">Event finden</a>
|
||||
</nav>
|
||||
<button class="btn btn--outline header__login" aria-label="Login" type="button">Login</button>
|
||||
</header>
|
||||
|
||||
<main class="main-content">
|
||||
<section class="hero" aria-labelledby="hero-title">
|
||||
<div class="hero__left">
|
||||
<h1 class="hero__title" id="hero-title">Zu Tisch mit Fremden – bereit für die nächste kulinarische Begegnung?</h1>
|
||||
<p class="hero__description">Dein Ort um neue Leute kennen zu lernen! Erstelle eigene Events und lade Gäste zu dir nach Hause ein, oder suche nach passenden Events in deiner Umgebung.</p>
|
||||
<button class="btn btn--primary" aria-label="Anmelden" type="button">Anmelden</button>
|
||||
</div>
|
||||
|
||||
<div class="hero__right">
|
||||
<div class="image-card" aria-label="Hero Bild Platzhalter">
|
||||
<div class="image-card__placeholder" aria-hidden="true"></div>
|
||||
<div class="social-badge" aria-label="Social Badge mit Teilnehmern">
|
||||
<span class="social-badge__dot"></span>
|
||||
<span class="social-badge__dot"></span>
|
||||
<span class="social-badge__dot"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="gallery" aria-label="Galerie mit Platzhaltern">
|
||||
<div class="gallery__controls">
|
||||
<button class="arrow arrow--prev" type="button" aria-label="Vorheriges Bild"><</button>
|
||||
<button class="arrow arrow--next" type="button" aria-label="Nächstes Bild">></button>
|
||||
</div>
|
||||
|
||||
<div class="gallery__track">
|
||||
<article class="gallery__item" data-index="0" aria-label="Galerie Element 1">
|
||||
<div class="placeholder"></div>
|
||||
</article>
|
||||
<article class="gallery__item" data-index="1" aria-label="Galerie Element 2">
|
||||
<div class="placeholder"></div>
|
||||
</article>
|
||||
<article class="gallery__item" data-index="2" aria-label="Galerie Element 3">
|
||||
<div class="placeholder"></div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="gallery__info">
|
||||
<div class="profile-badge" aria-label="Profil Badge"></div>
|
||||
<div class="gallery__handle" aria-label="Instagram Handle">@social_cooking</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<script src="javascript.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@ -0,0 +1,36 @@
|
||||
const prevBtn = document.querySelector('.arrow--prev');
|
||||
const nextBtn = document.querySelector('.arrow--next');
|
||||
const items = Array.from(document.querySelectorAll('.gallery__item'));
|
||||
let activeIndex = 0;
|
||||
|
||||
function updateGallery() {
|
||||
items.forEach((item, i) => {
|
||||
item.style.opacity = i === activeIndex ? '1' : '0.35';
|
||||
item.style.transform = i === activeIndex ? 'scale(1)' : 'scale(0.95)';
|
||||
});
|
||||
}
|
||||
|
||||
function showNext() {
|
||||
activeIndex = (activeIndex + 1) % items.length;
|
||||
updateGallery();
|
||||
}
|
||||
|
||||
function showPrev() {
|
||||
activeIndex = (activeIndex - 1 + items.length) % items.length;
|
||||
updateGallery();
|
||||
}
|
||||
|
||||
nextBtn.addEventListener('click', showNext);
|
||||
prevBtn.addEventListener('click', showPrev);
|
||||
|
||||
// keyboard support
|
||||
document.addEventListener('keydown', (event) => {
|
||||
if (event.key === 'ArrowRight') {
|
||||
showNext();
|
||||
}
|
||||
if (event.key === 'ArrowLeft') {
|
||||
showPrev();
|
||||
}
|
||||
});
|
||||
|
||||
updateGallery();
|
||||
243
stylesheet.css
243
stylesheet.css
@ -0,0 +1,243 @@
|
||||
/* Wireframe Stile (schwarz/weiß) */
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
:root {
|
||||
--black: #000000;
|
||||
--white: #ffffff;
|
||||
--max-width: 1440px;
|
||||
}
|
||||
|
||||
html, body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background: var(--white);
|
||||
color: var(--black);
|
||||
font-family: Inter, Arial, sans-serif;
|
||||
min-height: 100%;
|
||||
}
|
||||
|
||||
.page-wrapper {
|
||||
max-width: var(--max-width);
|
||||
margin: 0 auto;
|
||||
padding: 24px;
|
||||
background: var(--white);
|
||||
min-height: 1343px;
|
||||
border: 2px solid var(--black);
|
||||
}
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
border: 1px solid var(--black);
|
||||
padding: 16px 24px;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.header__brand {
|
||||
font-weight: bold;
|
||||
font-size: 1.2rem;
|
||||
border: 1px solid var(--black);
|
||||
padding: 8px 12px;
|
||||
background: var(--white);
|
||||
}
|
||||
|
||||
.nav__link {
|
||||
color: var(--black);
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
border: 1px solid var(--black);
|
||||
padding: 8px 12px;
|
||||
background: var(--white);
|
||||
}
|
||||
|
||||
.btn {
|
||||
border: 2px solid var(--black);
|
||||
background: var(--white);
|
||||
color: var(--black);
|
||||
padding: 10px 18px;
|
||||
font-weight: 700;
|
||||
cursor: pointer;
|
||||
transition: background-color 0.2s ease;
|
||||
}
|
||||
|
||||
.btn--primary {
|
||||
background: var(--white);
|
||||
}
|
||||
|
||||
.btn--outline {
|
||||
background: var(--white);
|
||||
}
|
||||
|
||||
.btn:focus-visible,
|
||||
.nav__link:focus-visible,
|
||||
.arrow:focus-visible {
|
||||
outline: 3px solid var(--black);
|
||||
outline-offset: 3px;
|
||||
}
|
||||
|
||||
.main-content {
|
||||
display: grid;
|
||||
grid-template-rows: auto auto;
|
||||
gap: 32px;
|
||||
}
|
||||
|
||||
.hero {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: 24px;
|
||||
align-items: center;
|
||||
padding: 24px;
|
||||
border: 1px solid var(--black);
|
||||
}
|
||||
|
||||
.hero__title {
|
||||
font-size: 2rem;
|
||||
line-height: 1.25;
|
||||
margin: 0 0 16px;
|
||||
}
|
||||
|
||||
.hero__description {
|
||||
margin: 0 0 20px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.hero__left {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.hero__right {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.image-card {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
max-width: 620px;
|
||||
height: 400px;
|
||||
border: 1px solid var(--black);
|
||||
}
|
||||
|
||||
.image-card__placeholder {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: var(--white);
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.image-card__placeholder::before,
|
||||
.image-card__placeholder::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
border: 1px solid var(--black);
|
||||
}
|
||||
|
||||
.image-card__placeholder::before {
|
||||
background-image: linear-gradient(135deg, transparent 49%, var(--black) 49%, var(--black) 51%, transparent 51%);
|
||||
}
|
||||
|
||||
.image-card__placeholder::after {
|
||||
background-image: linear-gradient(225deg, transparent 49%, var(--black) 49%, var(--black) 51%, transparent 51%);
|
||||
}
|
||||
|
||||
.social-badge {
|
||||
position: absolute;
|
||||
bottom: 16px;
|
||||
right: 16px;
|
||||
display: flex;
|
||||
gap: 6px;
|
||||
padding: 8px;
|
||||
border: 1px solid var(--black);
|
||||
background: var(--white);
|
||||
}
|
||||
|
||||
.social-badge__dot {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background: var(--black);
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.gallery {
|
||||
border: 1px solid var(--black);
|
||||
padding: 24px;
|
||||
}
|
||||
|
||||
.gallery__controls {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.arrow {
|
||||
border: 2px solid var(--black);
|
||||
background: var(--white);
|
||||
color: var(--black);
|
||||
padding: 8px 16px;
|
||||
font-size: 1.2rem;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.gallery__track {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.gallery__item {
|
||||
border: 1px solid var(--black);
|
||||
min-height: 240px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding: 8px;
|
||||
position: relative;
|
||||
background: var(--white);
|
||||
}
|
||||
|
||||
.placeholder {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: relative;
|
||||
border: 1px solid var(--black);
|
||||
}
|
||||
|
||||
.placeholder::before,
|
||||
.placeholder::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-image: linear-gradient(135deg, transparent 49%, var(--black) 49%, var(--black) 51%, transparent 51%);
|
||||
}
|
||||
|
||||
.placeholder::after {
|
||||
background-image: linear-gradient(225deg, transparent 49%, var(--black) 49%, var(--black) 51%, transparent 51%);
|
||||
}
|
||||
|
||||
.gallery__info {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-top: 20px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.profile-badge {
|
||||
width: 72px;
|
||||
height: 72px;
|
||||
border: 1px solid var(--black);
|
||||
border-radius: 50%;
|
||||
background: var(--white);
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.gallery__handle {
|
||||
font-weight: 700;
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user