JSFiddle - React, Tailwind, and code Playground
HTML
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.css">
<link rel="stylesheet" href="//cdn.jsdelivr.net/gh/kenwheeler/slick@1.8.1/slick/slick-theme.css">
<script src="https://code.jquery.com/jquery-3.7.1.js"></script>
<script src="//cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.min.js"></script>
<!-- <link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.css" />
<link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/gh/kenwheeler/slick@1.8.1/slick/slick-theme.css" /> -->
<h1 style="text-align: center; color: #fff; height: 0; position: relative; z-index: 1;">JavaScript 系列四:第6課
──kenwheeler/slick套件</h1>
<div class="gallery">
<div class="pics">
<div><img src="https://picsum.photos/1200/900?random=11" alt=""></div>
<div><img src="https://picsum.photos/1200/900?random=12" alt=""></div>
<div><img src="https://picsum.photos/1200/900?random=13" alt=""></div>
<div><img src="https://picsum.photos/1200/900?random=14" alt=""></div>
<div><img src="https://picsum.photos/1200/900?random=15" alt=""></div>
</div>
<button class="gallery-btn prev-btn"></button>
<button class="gallery-btn next-btn"></button>
</div>
<!-- <script src="https://code.jquery.com/jquery-3.7.1.js" integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4=" crossorigin="anonymous"></script>
<script type="text/javascript" src="//cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.min.js"></script> -->
CSS
* {
padding: 0;
margin: 0;
}
body {
background-color: #ccc;
}
.gallery {
width: 100%;
height: 100vh;
position: relative;
}
.gallery div {
width: 100%;
height: 100%;
}
.gallery .pics img {
display: block;
width: 100%;
object-fit: cover;
object-position: center center;
}
.gallery-btn {
display: block;
width: 50px;
height: 50px;
line-height: 50px;
border-radius: 50%;
background-color: rgba(200, 200, 200, 0.3);
border: none;
font-size: 30px;
position: absolute;
top: 50%;
transform: translateY(-50%);
cursor: pointer;
overflow: hidden;
transition: 0.3s;
}
.gallery-btn.prev-btn {
left: 20px;
}
.gallery-btn.next-btn {
right: 20px;
}
.gallery-btn.prev-btn::after,
.gallery-btn.next-btn::after {
content: "";
width: 10px;
height: 10px;
border: 5px solid rgba(100, 100, 100, 0.7);
background-color: transparent;
position: absolute;
top: 50%;
transition: 0.5s;
}
.gallery-btn.prev-btn::after {
border-top: none;
border-right: none;
left: 50%;
transform: translateX(-35%) translateY(-50%) rotate(45deg);
}
.gallery-btn.next-btn::after {
border-bottom: none;
border-left: none;
right: 50%;
transform: translateX(35%) translateY(-50%) rotate(45deg);
}
.gallery-btn:hover {
background-color: rgba(200, 200, 200, 0.7);
}
.gallery-btn:hover.prev-btn::after,
.gallery-btn:hover.next-btn::after {
border-color: rgba(70, 70, 70, 1);
}
.gallery .slick-dots {
margin: 0;
bottom: 25px;
}
JavaScript
$(".pics").slick({
autoplay: true,
speed: 500,
dots: true,
prevArrow: $(".prev-btn"),
nextArrow: $(".next-btn")
});