212 lines
6.0 KiB
HTML
212 lines
6.0 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<meta name="description"
|
||
content="Snappy Carousel Demo – Snappy is a lightweight carousel. Mostly CSS-only, with some Javascript for navigation and drag support." />
|
||
<title>Snappy</title>
|
||
|
||
<link rel="stylesheet" href="dist/snappy.css">
|
||
<style>
|
||
html,
|
||
body {
|
||
/* Transitional from https://modernfontstacks.com/ */
|
||
font-family: Charter, 'Bitstream Charter', 'Sitka Text', Cambria, serif;
|
||
font-weight: normal;
|
||
font-size: 1.25rem;
|
||
background-color: #f8f9fa;
|
||
color: #343a40;
|
||
|
||
@media (prefers-color-scheme: dark) {
|
||
background-color: #212529;
|
||
color: #f8f9fa;
|
||
}
|
||
}
|
||
|
||
body {
|
||
padding: 2rem;
|
||
max-width: 960px;
|
||
margin: auto;
|
||
margin-bottom: 1000px;
|
||
}
|
||
|
||
h1 {
|
||
font-size: 3rem;
|
||
margin-bottom: 1em;
|
||
}
|
||
|
||
/* Custom snappy styling */
|
||
/* Colors from Open color (https://yeun.github.io/open-color) */
|
||
.snappy-carousel {
|
||
margin-bottom: 2rem;
|
||
|
||
.scroll-container {
|
||
max-height: 420px;
|
||
gap: 0.5rem;
|
||
}
|
||
|
||
.slide {
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
aspect-ratio: 3/2;
|
||
height: 350px;
|
||
max-width: 75%;
|
||
border-radius: 1rem;
|
||
border: 1px solid #ced4da;
|
||
|
||
background-color: #ffd8a8;
|
||
color: #343a40;
|
||
transition: box-shadow 0.8s cubic-bezier(0.25, 1, 0.5, 1);
|
||
|
||
@media (prefers-color-scheme: dark) {
|
||
background-color: #495057;
|
||
color: #f8f9fa;
|
||
border-color: #868e96;
|
||
}
|
||
}
|
||
|
||
&[data-scroll-direction="y"] .slide {
|
||
max-width: initial;
|
||
height: 150px;
|
||
}
|
||
|
||
.slide:nth-child(even) {
|
||
background-color: #e5dbff;
|
||
|
||
@media (prefers-color-scheme: dark) {
|
||
background-color: #343a40;
|
||
color: #f8f9fa;
|
||
}
|
||
}
|
||
|
||
.slide.is-active {
|
||
box-shadow: inset 0 0 0 4px #339af0;
|
||
}
|
||
|
||
.prev,
|
||
.next {
|
||
width: 1.5rem;
|
||
height: 1.5rem;
|
||
font-size: 1rem;
|
||
border: none;
|
||
background-color: #f1f3f5;
|
||
color: #339af0;
|
||
|
||
&:hover,
|
||
&:active {
|
||
background-color: #dee2e6;
|
||
}
|
||
|
||
@media (prefers-color-scheme: dark) {
|
||
background-color: #495057;
|
||
|
||
&:hover,
|
||
&:active {
|
||
background-color: #868e96;
|
||
color: #1971c2;
|
||
}
|
||
}
|
||
}
|
||
|
||
.prev:disabled,
|
||
.next:disabled {
|
||
opacity: 0.5;
|
||
}
|
||
|
||
.pagination {
|
||
display: inline-flex;
|
||
margin-top: 1rem;
|
||
}
|
||
|
||
.pagination .dot {
|
||
border-radius: 1lh;
|
||
background-color: #dee2e6 !important;
|
||
margin: 0 0.25rem;
|
||
|
||
transition-property: width, background;
|
||
transition-duration: .8s;
|
||
transition-timing-function: cubic-bezier(0.25, 1, 0.5, 1);
|
||
|
||
cursor: pointer;
|
||
}
|
||
|
||
.pagination .dot:hover {
|
||
background-color: #adb5bd !important;
|
||
}
|
||
|
||
.pagination .dot.is-active {
|
||
background-color: #1971c2 !important;
|
||
width: 2rem !important;
|
||
}
|
||
}
|
||
</style>
|
||
</head>
|
||
|
||
<body>
|
||
<header>
|
||
<h1>Snappy</h1>
|
||
</header>
|
||
|
||
<main>
|
||
|
||
<!--
|
||
Options
|
||
-------
|
||
|
||
See https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Scroll_snap
|
||
|
||
data-scroll-direction="x"
|
||
data-scroll-direction="y"
|
||
|
||
data-snap-stop="always"
|
||
data-snap-stop="normal"
|
||
|
||
data-snap-align="center"
|
||
data-snap-align="start"
|
||
data-snap-align="end"
|
||
-->
|
||
<section class="snappy-carousel" aria-labelledby="horizontal-carousel-heading">
|
||
<h2 id="horizontal-carousel-heading" class="visuallyhidden">Horizontal</h2>
|
||
<ul class="scroll-container">
|
||
<li class="slide">1</li>
|
||
<li class="slide">2</li>
|
||
<li class="slide">3</li>
|
||
<li class="slide">4</li>
|
||
<li class="slide">5</li>
|
||
<li class="slide">6</li>
|
||
<li class="slide">7</li>
|
||
<li class="slide">8</li>
|
||
</ul>
|
||
|
||
<button class="prev">❮</button>
|
||
<button class="next">❯</button>
|
||
<ul class="pagination"></ul>
|
||
</section>
|
||
|
||
<section class="snappy-carousel" data-scroll-direction="y" aria-labelledby="horizontal-carousel-heading">
|
||
<h2 id="horizontal-carousel-heading" class="visuallyhidden">Vertical</h2>
|
||
<ul class="scroll-container">
|
||
<li class="slide">1</li>
|
||
<li class="slide">2</li>
|
||
<li class="slide">3</li>
|
||
<li class="slide">4</li>
|
||
<li class="slide">5</li>
|
||
<li class="slide">6</li>
|
||
<li class="slide">7</li>
|
||
<li class="slide">8</li>
|
||
</ul>
|
||
|
||
<button class="prev">❮</button>
|
||
<button class="next">❯</button>
|
||
<ul class="pagination"></ul>
|
||
</section>
|
||
</main>
|
||
|
||
<!-- Javascript is only needed for pagination and buttons -->
|
||
<script src="dist/snappy.js" defer></script>
|
||
</body>
|
||
|
||
</html> |