【发布时间】:2022-02-07 00:37:33
【问题描述】:
我正在使用React Slick centerMode 作为我的图片轮播,并尝试一次显示 3 张图片。另外,我想仅在居中(当前索引)时显示图像的标题。问题是它会同时显示所有标题。如何隐藏左右图片的标题,只显示中间图片的标题?
我的代码:
function ImageSlider({ imageList }) {
const [currentSlide, setCurrentSlide] = useState(0);
const [indexSlide, setIndexSlide] = useState(0);
function ShowTitle(title) {
// If the index is on focused
if (currentSlide === indexSlide) {
return <p>{title}</p>;
}
// Otherwise return empty
return <p></p>;
}
function handleAfterChange(index) {
setIndexSlide(index);
const centerSlide = document.querySelector(
"div.slick-slide.slick-active.slick-center.slick-current"
);
setCurrentSlide(parseInt(centerSlide.getAttribute("data-index")));
}
return (
<Slider
className="center"
centerMode={true}
infinite={true}
autoplay={true}
autoplaySpeed={2000}
slidesToShow={3}
slidesToScroll={1}
afterChange={handleAfterChange}
>
{imageList.map((image) => (
<div key={image.id} id={image.id}>
<img
alt="image"
width={270}
height={120}
src={image.url}
/>
// I want this to show when it's centered, and hidden when it's not centred
<ShowTitle title={image.title} key={image.id} />
</div>
))}
</Slider>
);
}
索引号 2(共 5 个)居中时的轮播 html:
<div class="slick-list" style="padding:0px 60px">
<div class="slick-track" style="width: 3640px; opacity: 1; transform: translate3d(-1040px, 0px, 0px); transition: -webkit-transform 500ms ease 0s;">
<div data-index="-4" tabindex="-1" class="slick-slide slick-cloned" aria-hidden="true" style="width: 260px;">...</div>
<div data-index="-3" tabindex="-1" class="slick-slide slick-center slick-cloned" aria-hidden="true" style="width: 260px;">...</div>
<div data-index="-2" tabindex="-1" class="slick-slide slick-cloned" aria-hidden="true" style="width: 260px;">...</div>
<div data-index="-1" tabindex="-1" class="slick-slide slick-cloned" aria-hidden="true" style="width: 260px;">...</div>
<div data-index="0" class="slick-slide" tabindex="-1" aria-hidden="true" style="outline: none; width: 260px;">...</div>
<div data-index="1" class="slick-slide slick-active" tabindex="-1" aria-hidden="true" style="outline: none; width: 260px;">...</div>
<div data-index="2" class="slick-slide slick-active slick-center slick-current" tabindex="-1" aria-hidden="true" style="outline: none; width: 260px;">...</div>
<div data-index="3" class="slick-slide slick-active" tabindex="-1" aria-hidden="true" style="outline: none; width: 260px;">...</div>
<div data-index="4" class="slick-slide" tabindex="-1" aria-hidden="true" style="outline: none; width: 260px;">...</div>
<div data-index="5" tabindex="-1" class="slick-slide slick-cloned" aria-hidden="true" style="width: 260px;">...</div>
<div data-index="6" tabindex="-1" class="slick-slide slick-cloned" aria-hidden="true" style="width: 260px;">...</div>
<div data-index="7" tabindex="-1" class="slick-slide slick-center slick-cloned" aria-hidden="true" style="width: 260px;">...</div>
<div data-index="8" tabindex="-1" class="slick-slide slick-cloned" aria-hidden="true" style="width: 260px;">...</div>
<div data-index="9" tabindex="-1" class="slick-slide slick-cloned" aria-hidden="true" style="width: 260px;">...</div>
</div>
</div>
【问题讨论】:
标签: css reactjs carousel react-slick