docs: add series cover layout mockup for reference
This commit is contained in:
@@ -0,0 +1,279 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Series Cover Layout Options</title>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: system-ui, sans-serif;
|
||||||
|
background: #1a1b26;
|
||||||
|
color: #c0caf5;
|
||||||
|
padding: 40px;
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
h1 { margin-bottom: 10px; }
|
||||||
|
.subtitle { color: #9aa5ce; margin-bottom: 40px; }
|
||||||
|
|
||||||
|
.options {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
gap: 40px;
|
||||||
|
}
|
||||||
|
.option {
|
||||||
|
background: #24283b;
|
||||||
|
border-radius: 12px;
|
||||||
|
padding: 24px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.option h2 { margin: 0 0 8px 0; font-size: 1.1rem; color: #7aa2f7; }
|
||||||
|
.option .desc { color: #9aa5ce; font-size: 0.85rem; margin-bottom: 20px; }
|
||||||
|
|
||||||
|
/* === Common book cover placeholder === */
|
||||||
|
.cover {
|
||||||
|
width: 80px;
|
||||||
|
height: 120px;
|
||||||
|
border-radius: 4px;
|
||||||
|
box-shadow: 0 2px 8px rgba(0,0,0,0.4);
|
||||||
|
background: linear-gradient(135deg, #414868, #1a1b26);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
font-size: 11px;
|
||||||
|
color: #565f89;
|
||||||
|
font-weight: bold;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ============================================================
|
||||||
|
OPTION A: Stacked Cascade (pile of books, top-left offset)
|
||||||
|
============================================================ */
|
||||||
|
.stacked-cascade {
|
||||||
|
position: relative;
|
||||||
|
width: 260px;
|
||||||
|
height: 200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
.stacked-cascade .cover {
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
.stacked-cascade .cover:nth-child(1) { top: 0; left: 0; z-index: 7; }
|
||||||
|
.stacked-cascade .cover:nth-child(2) { top: 8px; left: 8px; z-index: 6; opacity: 0.92; }
|
||||||
|
.stacked-cascade .cover:nth-child(3) { top: 16px; left: 16px; z-index: 5; opacity: 0.85; }
|
||||||
|
.stacked-cascade .cover:nth-child(4) { top: 24px; left: 24px; z-index: 4; opacity: 0.78; }
|
||||||
|
.stacked-cascade .cover:nth-child(5) { top: 32px; left: 32px; z-index: 3; opacity: 0.7; }
|
||||||
|
.stacked-cascade .cover:nth-child(6) { top: 40px; left: 40px; z-index: 2; opacity: 0.65; }
|
||||||
|
.stacked-cascade .cover:nth-child(7) { top: 48px; left: 48px; z-index: 1; opacity: 0.6; }
|
||||||
|
|
||||||
|
.stacked-cascade:hover .cover:nth-child(1) { top: 0; left: 0; }
|
||||||
|
.stacked-cascade:hover .cover:nth-child(2) { top: 6px; left: 12px; }
|
||||||
|
.stacked-cascade:hover .cover:nth-child(3) { top: 14px; left: 24px; }
|
||||||
|
.stacked-cascade:hover .cover:nth-child(4) { top: 22px; left: 36px; }
|
||||||
|
.stacked-cascade:hover .cover:nth-child(5) { top: 30px; left: 50px; }
|
||||||
|
.stacked-cascade:hover .cover:nth-child(6) { top: 40px; left: 64px; }
|
||||||
|
.stacked-cascade:hover .cover:nth-child(7) { top: 50px; left: 78px; }
|
||||||
|
.stacked-cascade .cover { transition: all 0.3s ease; }
|
||||||
|
|
||||||
|
/* ============================================================
|
||||||
|
OPTION B: Grid Mosaic (mini bookshelf grid)
|
||||||
|
============================================================ */
|
||||||
|
.grid-mosaic {
|
||||||
|
width: 200px;
|
||||||
|
height: 200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(3, 1fr);
|
||||||
|
grid-template-rows: repeat(3, 1fr);
|
||||||
|
gap: 4px;
|
||||||
|
padding: 8px;
|
||||||
|
background: #1a1b26;
|
||||||
|
border-radius: 8px;
|
||||||
|
box-shadow: inset 0 2px 4px rgba(0,0,0,0.3);
|
||||||
|
}
|
||||||
|
.grid-mosaic .cover {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border-radius: 3px;
|
||||||
|
font-size: 9px;
|
||||||
|
}
|
||||||
|
.grid-mosaic .cover.spacer {
|
||||||
|
background: transparent;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ============================================================
|
||||||
|
OPTION C: Fanned Bottom (arc from bottom center, upward)
|
||||||
|
============================================================ */
|
||||||
|
.fanned-bottom {
|
||||||
|
position: relative;
|
||||||
|
width: 280px;
|
||||||
|
height: 200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
.fanned-bottom .cover {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
left: 50%;
|
||||||
|
margin-left: -40px; /* half cover width */
|
||||||
|
transform-origin: bottom center;
|
||||||
|
}
|
||||||
|
.fanned-bottom .cover:nth-child(1) { z-index: 7; transform: rotate(0deg); }
|
||||||
|
.fanned-bottom .cover:nth-child(2) { z-index: 6; transform: rotate(-12deg); opacity: 0.92; }
|
||||||
|
.fanned-bottom .cover:nth-child(3) { z-index: 5; transform: rotate(12deg); opacity: 0.92; }
|
||||||
|
.fanned-bottom .cover:nth-child(4) { z-index: 4; transform: rotate(-24deg); opacity: 0.82; }
|
||||||
|
.fanned-bottom .cover:nth-child(5) { z-index: 3; transform: rotate(24deg); opacity: 0.82; }
|
||||||
|
.fanned-bottom .cover:nth-child(6) { z-index: 2; transform: rotate(-36deg); opacity: 0.72; }
|
||||||
|
.fanned-bottom .cover:nth-child(7) { z-index: 1; transform: rotate(36deg); opacity: 0.72; }
|
||||||
|
|
||||||
|
.fanned-bottom:hover .cover:nth-child(1) { transform: rotate(0deg); }
|
||||||
|
.fanned-bottom:hover .cover:nth-child(2) { transform: rotate(-15deg); }
|
||||||
|
.fanned-bottom:hover .cover:nth-child(3) { transform: rotate(15deg); }
|
||||||
|
.fanned-bottom:hover .cover:nth-child(4) { transform: rotate(-30deg); }
|
||||||
|
.fanned-bottom:hover .cover:nth-child(5) { transform: rotate(30deg); }
|
||||||
|
.fanned-bottom:hover .cover:nth-child(6) { transform: rotate(-42deg); }
|
||||||
|
.fanned-bottom:hover .cover:nth-child(7) { transform: rotate(42deg); }
|
||||||
|
.fanned-bottom .cover { transition: all 0.3s ease; }
|
||||||
|
|
||||||
|
/* ============================================================
|
||||||
|
OPTION D: Perspective Shelf (3D standing books)
|
||||||
|
============================================================ */
|
||||||
|
.perspective-shelf {
|
||||||
|
width: 280px;
|
||||||
|
height: 200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
perspective: 600px;
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-end;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 3px;
|
||||||
|
padding-bottom: 20px;
|
||||||
|
}
|
||||||
|
.perspective-shelf .cover {
|
||||||
|
transform: rotateY(-15deg);
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
}
|
||||||
|
.perspective-shelf:hover .cover {
|
||||||
|
transform: rotateY(0deg);
|
||||||
|
}
|
||||||
|
.perspective-shelf .cover:nth-child(odd) {
|
||||||
|
transform: rotateY(-18deg) translateZ(2px);
|
||||||
|
}
|
||||||
|
.perspective-shelf .cover:nth-child(even) {
|
||||||
|
transform: rotateY(-12deg) translateZ(-1px);
|
||||||
|
}
|
||||||
|
.perspective-shelf:hover .cover:nth-child(odd) {
|
||||||
|
transform: rotateY(-5deg) translateZ(4px);
|
||||||
|
}
|
||||||
|
.perspective-shelf:hover .cover:nth-child(even) {
|
||||||
|
transform: rotateY(-5deg) translateZ(2px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* === Demo colors for covers === */
|
||||||
|
.c1 { background: linear-gradient(135deg, #f7768e, #c53b53) !important; color: #fff !important; }
|
||||||
|
.c2 { background: linear-gradient(135deg, #ff9e64, #c97423) !important; color: #fff !important; }
|
||||||
|
.c3 { background: linear-gradient(135deg, #e0af68, #b08830) !important; color: #fff !important; }
|
||||||
|
.c4 { background: linear-gradient(135deg, #9ece6a, #6d9c3a) !important; color: #fff !important; }
|
||||||
|
.c5 { background: linear-gradient(135deg, #73daca, #3fb0a5) !important; color: #fff !important; }
|
||||||
|
.c6 { background: linear-gradient(135deg, #7aa2f7, #4070d4) !important; color: #fff !important; }
|
||||||
|
.c7 { background: linear-gradient(135deg, #bb9af7, #8b6fd4) !important; color: #fff !important; }
|
||||||
|
|
||||||
|
.series-label {
|
||||||
|
margin-top: 16px;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #c0caf5;
|
||||||
|
}
|
||||||
|
.series-meta {
|
||||||
|
font-size: 12px;
|
||||||
|
color: #565f89;
|
||||||
|
margin-top: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hover-hint {
|
||||||
|
font-size: 11px;
|
||||||
|
color: #565f89;
|
||||||
|
margin-top: 12px;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Series Card Cover Layouts</h1>
|
||||||
|
<p class="subtitle">4 options for displaying multi-cover composites on the /series browse page. Hover to see animation.</p>
|
||||||
|
|
||||||
|
<div class="options">
|
||||||
|
<!-- Option A -->
|
||||||
|
<div class="option">
|
||||||
|
<h2>A. Stacked Cascade</h2>
|
||||||
|
<p class="desc">Covers stacked diagonally with small offset, like a pile of books on a table</p>
|
||||||
|
<div class="stacked-cascade">
|
||||||
|
<div class="cover c1">#1</div>
|
||||||
|
<div class="cover c2">#2</div>
|
||||||
|
<div class="cover c3">#3</div>
|
||||||
|
<div class="cover c4">#4</div>
|
||||||
|
<div class="cover c5">#5</div>
|
||||||
|
<div class="cover c6">#6</div>
|
||||||
|
<div class="cover c7">#7</div>
|
||||||
|
</div>
|
||||||
|
<div class="series-label">The Expanse</div>
|
||||||
|
<div class="series-meta">7 of 9 books</div>
|
||||||
|
<div class="hover-hint">hover to spread</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Option B -->
|
||||||
|
<div class="option">
|
||||||
|
<h2>B. Grid Mosaic</h2>
|
||||||
|
<p class="desc">Covers tiled in a 3x3 grid, like a mini bookshelf. Clean and dense.</p>
|
||||||
|
<div class="grid-mosaic">
|
||||||
|
<div class="cover c1">#1</div>
|
||||||
|
<div class="cover c2">#2</div>
|
||||||
|
<div class="cover c3">#3</div>
|
||||||
|
<div class="cover c4">#4</div>
|
||||||
|
<div class="cover c5">#5</div>
|
||||||
|
<div class="cover c6">#6</div>
|
||||||
|
<div class="cover c7">#7</div>
|
||||||
|
<div class="cover spacer"></div>
|
||||||
|
<div class="cover spacer"></div>
|
||||||
|
</div>
|
||||||
|
<div class="series-label">The Expanse</div>
|
||||||
|
<div class="series-meta">7 of 9 books</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Option C -->
|
||||||
|
<div class="option">
|
||||||
|
<h2>C. Fanned Bottom Arc</h2>
|
||||||
|
<p class="desc">Like a hand of cards fanned from the bottom center, spreading upward</p>
|
||||||
|
<div class="fanned-bottom">
|
||||||
|
<div class="cover c1">#1</div>
|
||||||
|
<div class="cover c2">#2</div>
|
||||||
|
<div class="cover c3">#3</div>
|
||||||
|
<div class="cover c4">#4</div>
|
||||||
|
<div class="cover c5">#5</div>
|
||||||
|
<div class="cover c6">#6</div>
|
||||||
|
<div class="cover c7">#7</div>
|
||||||
|
</div>
|
||||||
|
<div class="series-label">The Expanse</div>
|
||||||
|
<div class="series-meta">7 of 9 books</div>
|
||||||
|
<div class="hover-hint">hover to spread wider</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Option D -->
|
||||||
|
<div class="option">
|
||||||
|
<h2>D. Perspective Shelf</h2>
|
||||||
|
<p class="desc">Books standing side-by-side with CSS 3D perspective, like a real shelf viewed at angle</p>
|
||||||
|
<div class="perspective-shelf">
|
||||||
|
<div class="cover c1">#1</div>
|
||||||
|
<div class="cover c2">#2</div>
|
||||||
|
<div class="cover c3">#3</div>
|
||||||
|
<div class="cover c4">#4</div>
|
||||||
|
<div class="cover c5">#5</div>
|
||||||
|
<div class="cover c6">#6</div>
|
||||||
|
<div class="cover c7">#7</div>
|
||||||
|
</div>
|
||||||
|
<div class="series-label">The Expanse</div>
|
||||||
|
<div class="series-meta">7 of 9 books</div>
|
||||||
|
<div class="hover-hint">hover to flatten</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Reference in New Issue
Block a user