【发布时间】:2022-11-16 14:16:32
【问题描述】:
我尝试创建一个轮播。我在一个 div 中水平排列了几张图片,其中 0 flex 收缩,所以当我单击一个按钮时,所有图片都应该向左移动。但是,现在我只能看到第一张图片,我想知道我是否搞砸了 css,所以每张图片都有一个正确的不可见部分覆盖了其余图片。 `
const Slider = () => {
const bannerPics = [banner1, banner2, banner3];
const [translateX, setTranslateX] = useState(0);
const currentWidthRef = useRef();
const renderPics = bannerPics.map((p, i) => {
//must have a key in order for animation to work(remount the component)
return (
<li key={i} className={styles.slide}>
<img className={styles.img} src={p} alt="" />
</li>
);
});
const sliderHandler = () => {
setTranslateX(currentWidthRef.current.clientWidth);
};
return (
<div>
<div
ref={currentWidthRef}
className={styles.banner}
style={{ transform: `translate3d(${-translateX}px, 0, 0)` }}
>
{renderPics}
</div>
<button onClick={sliderHandler}>MOVE</button>
</div>
);
};
export default Slider;
CSS:
.banner {
display: flex;
height: 300px;
width: 100%;
overflow: hidden;
flex-wrap: nowrap;
}
.slide {
height: 100%;
width: 100%;
flex-shrink: 0;
}
img {
width: 100%;
height: 100%;
object-fit: cover;
object-position: center;
}
`
【问题讨论】:
标签: javascript css reactjs carousel