mirror of
https://github.com/LBRYFoundation/lbry-tech.git
synced 2025-07-01 08:02:59 +00:00
153 lines
No EOL
3.5 KiB
Text
153 lines
No EOL
3.5 KiB
Text
---
|
|
import { Image } from "astro-preload/components";
|
|
|
|
interface Props {
|
|
slides: Array<object>;
|
|
}
|
|
|
|
const { slides } = Astro.props;
|
|
---
|
|
|
|
<div class="slideshow-container">
|
|
{slides.map((slide: object, i: number) => (
|
|
<div class="mySlides fade">
|
|
<div class="numbertext">{i+1} / {slides.length}</div>
|
|
<Image url={slide.src || slide.href} width="100%" />
|
|
<a href={slide.href} target="_blank" class="text">
|
|
<p class="title">{slide.title}</p>
|
|
<p class="description">{slide.description}</p>
|
|
</a>
|
|
</div>
|
|
))}
|
|
|
|
<!-- Next and previous buttons -->
|
|
<a class="prev">❮</a>
|
|
<a class="next">❯</a>
|
|
</div>
|
|
<br>
|
|
|
|
<div style="text-align:center">
|
|
{slides.map((slide: object, i: number) => (
|
|
<span class="dot"></span>
|
|
))}
|
|
</div>
|
|
<script>
|
|
import {currentSlide, plusSlides} from '../scripts/carousel.js';
|
|
|
|
document.querySelector('.prev').addEventListener('click', (e)=>{plusSlides(-1)});
|
|
document.querySelector('.next').addEventListener('click', (e)=>{plusSlides(1)});
|
|
|
|
slides.forEach((slide, i)=>{
|
|
document.querySelector(`#dot${i+1}`).addEventListener('click', (e)=>{currentSlide(i+1)});
|
|
})
|
|
|
|
// document.querySelector('#dot2').addEventListener('click', (e)=>{currentSlide(2)});
|
|
// document.querySelector('#dot3').addEventListener('click', (e)=>{currentSlide(3)});
|
|
</script>
|
|
</div>
|
|
<style>
|
|
/* Slideshow container */
|
|
.slideshow-container {
|
|
width: 80%;
|
|
height: 80%;
|
|
max-width: 1280px;
|
|
max-height: 720px;
|
|
position: relative;
|
|
margin: auto;
|
|
border-radius: 16px;
|
|
overflow: hidden;
|
|
}
|
|
|
|
/* Hide the images by default */
|
|
.mySlides {
|
|
display: none;
|
|
}
|
|
|
|
/* Next & previous buttons */
|
|
.prev, .next {
|
|
cursor: pointer;
|
|
position: absolute;
|
|
top: 50%;
|
|
width: auto;
|
|
margin-top: -22px;
|
|
padding: 16px;
|
|
color: white;
|
|
font-weight: bold;
|
|
font-size: 18px;
|
|
transition: 0.6s ease;
|
|
border-radius: 0 3px 3px 0;
|
|
user-select: none;
|
|
}
|
|
|
|
/* Position the "next button" to the right */
|
|
.next {
|
|
right: 0;
|
|
border-radius: 3px 0 0 3px;
|
|
}
|
|
|
|
/* On hover, add a black background color with a little bit see-through */
|
|
.prev:hover, .next:hover {
|
|
background-color: rgba(0,0,0,0.8);
|
|
}
|
|
|
|
/* Caption text */
|
|
.text {
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
align-items: center;
|
|
color: #f2f2f2;
|
|
font-size: 15px;
|
|
padding: 8px 12px;
|
|
position: absolute;
|
|
left: 50%;
|
|
bottom: 16px;
|
|
transform: translateX(-50%);
|
|
/* width: 100%; */
|
|
text-align: center;
|
|
/* margin: 1.5em; */
|
|
border-radius: 16px;
|
|
background-color: var(--secondary-background);
|
|
}
|
|
|
|
.text .title {
|
|
font-size: 1.5rem;
|
|
font-weight: bold;
|
|
}
|
|
|
|
/* Number text (1/3 etc) */
|
|
.numbertext {
|
|
color: #f2f2f2;
|
|
font-size: 12px;
|
|
padding: 8px 12px;
|
|
position: absolute;
|
|
top: 0;
|
|
}
|
|
|
|
/* The dots/bullets/indicators */
|
|
.dot {
|
|
cursor: pointer;
|
|
height: 15px;
|
|
width: 15px;
|
|
margin: 0 2px;
|
|
background-color: #bbb;
|
|
border-radius: 50%;
|
|
display: inline-block;
|
|
transition: background-color 0.6s ease;
|
|
}
|
|
|
|
.active, .dot:hover {
|
|
background-color: #717171;
|
|
}
|
|
|
|
/* Fading animation */
|
|
.fade {
|
|
animation-name: fade;
|
|
animation-duration: 1.5s;
|
|
}
|
|
|
|
@keyframes fade {
|
|
from {opacity: .4}
|
|
to {opacity: 1}
|
|
}
|
|
</style> |