<div class="carousel">
<ul class="carousel__slides">
<li class="carousel__slide">スライド1</li>
<li class="carousel__slide">スライド2</li>
<li class="carousel__slide">スライド3</li>
<li class="carousel__slide">スライド4</li>
</ul>
</div>
* {
margin: 0;
padding: 0;
}
.carousel {
width: 100%;
position: relative;
}
.carousel__slides {
display: flex;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
scroll-behavior: smooth;
scroll-snap-type: x mandatory;
/* scroll-snap-type: x proximity; */
scrollbar-width: none;
&::scroll-button(left) {
content: "⬅" / "Scroll Left";
left: 10px;
}
&::scroll-button(right) {
content: "⮕" / "Scroll Right";
right: 10px;
}
&::scroll-button(*) {
position: absolute;
top: 45%;
}
scroll-marker-group: after;
&::scroll-marker-group {
display: flex;
justify-content: center;
margin-top: 10px;
gap: 10px;
}
}
.carousel__slide {
list-style: none;
display: grid;
place-content: center;
flex: 0 0 100%;
height: 200px;
/* start | center | end */
scroll-snap-align: center;
/* always | normal */
scroll-snap-stop: always;
&:nth-child(1) {
background: #eee;
}
&:nth-child(2) {
background: #ddd;
}
&:nth-child(3) {
background: #ccc;
}
&:nth-child(4) {
background: #bbb;
}
&::scroll-marker {
content: "";
border: 1px solid #444;
width: 10px;
height: 10px;
border-radius: 50%;
}
&::scroll-marker:target-current {
background-color: #444;
}
}
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.