javascript - 用较小尺寸的相邻图像反应图像轮播
问题描述
我正在尝试在 React 中复制这种设计,用于图像滑块,其中活动图像居中,前一个和下一个在较小的两侧。
到目前为止,我已经通过克隆这个项目来做到这一点。
我正在努力能够:
- 查看侧面的上一个和下一个图像
- 看到三个不同大小的图像是活动居中的并且更大
提前致谢
滑块.css
.container-slider {
max-width: 700px;
height: 500px;
margin: 100px auto 0;
position: relative;
/* overflow: hidden; (if 'hidden' arrows are not visible outside the container) */
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
}
@media screen and (max-width: 700px){
.container-slider {
margin: 100px 10px 0;
}
}
.slide {
width: 100%;
height: 100%;
position: absolute;
opacity: 0;
transition: opacity ease-in-out 0.4s;
}
.slide img {
width: 100%;
height: 100%;
object-fit: cover;
}
.active-anim {
opacity: 1;
}
.btn-slide {
width: 60px;
height: 60px;
border-radius: 50%;
background: #f1f1f1;
border: 1px solid rgba(34, 34, 34, 0.287);
position: absolute;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
}
.btn-slide img {
width: 25px;
height: 25px;
pointer-events: none;
}
.prev {
top: 50%;
left: -30px;
transform: translateY(-60%);
}
.next {
top: 50%;
right: -30px;
transform: translateY(-60%);
}
滑块.js
import React, {useState} from 'react'
import './Slider.css'
import BtnSlider from './BtnSlider'
import dataSlider from './dataSlider'
export default function Slider() {
const [slideIndex, setSlideIndex] = useState(1)
const nextSlide = () => {
if(slideIndex !== dataSlider.length){
setSlideIndex(slideIndex + 1)
}
else if (slideIndex === dataSlider.length){
setSlideIndex(1)
}
}
const prevSlide = () => {
if(slideIndex !== 1){
setSlideIndex(slideIndex - 1)
}
else if (slideIndex === 1){
setSlideIndex(dataSlider.length)
}
}
const moveDot = index => {
setSlideIndex(index)
}
return (
<div className="container-slider">
{dataSlider.map((obj, index) => {
return (
<div
key={obj.id}
className={slideIndex === index + 1 ? "slide active-anim" : "slide"}
>
<img
src={process.env.PUBLIC_URL + `/Imgs/img${index + 1}.jpg`}
/>
</div>
)
})}
<BtnSlider moveSlide={nextSlide} direction={"next"} />
<BtnSlider moveSlide={prevSlide} direction={"prev"}/>
</div>
)
}
datSlider.js
import { v4 as uuidv4 } from "uuid";
const dataSlider = [
{
id: uuidv4(),
title: "Lorem ipsum",
subTitle: "Lorem"
},
{
id: uuidv4(),
title: "Lorem ipsum",
subTitle: "Lorem"
},
{
id: uuidv4(),
title: "Lorem ipsum",
subTitle: "Lorem"
},
{
id: uuidv4(),
title: "Lorem ipsum",
subTitle: "Lorem"
},
{
id: uuidv4(),
title: "Lorem ipsum",
subTitle: "Lorem"
},
];
export default dataSlider;