#css #reactjs #react-multi-carousel
#css #reactjs #react-мультикарусель
Вопрос:
Я пытаюсь использовать библиотеку react-multi-carousel для создания адаптивной карусели с элементами фиксированного размера. Я также хочу исправить интервал между элементами. Однако в react-multi-carousel расстояние между элементами зависит от количества отображаемых элементов (указанного в «responsive»). Есть ли способ сделать карусель отзывчивой, чтобы пробел между элементами был вводом, а не количеством элементов? то есть я хочу показывать элементы фиксированного размера с промежутком в 32 пикселя между ними на 1024 устройствах (16 пикселей на меньшем устройстве), и мне все равно, сколько элементов отображается.
import Carousel from "react-multi-carousel";
import "react-multi-carousel/lib/styles.css";
const responsive = {
superLargeDesktop: {
// the naming can be any, depends on you.
breakpoint: { max: 4000, min: 3000 },
items: 5
},
desktop: {
breakpoint: { max: 3000, min: 1024 },
items: 3
},
tablet: {
breakpoint: { max: 1024, min: 464 },
items: 2
},
mobile: {
breakpoint: { max: 464, min: 0 },
items: 1
}
};
<Carousel responsive={responsive}>
<div>Item 1</div>
<div>Item 2</div>
<div>Item 3</div>
<div>Item 4</div>
</Carousel>;
Проблема с таким подходом заключается в том, что пространство между двумя элементами становится очень большим и выглядит странно. Я бы предпочел исправить пробел и настроить элементы на основе этого. Одним из обходных путей, о котором я думал, было вычисление количества элементов на основе ширины экрана при изменении размера окна. т.е
breakpoint: { max: 4000, min: 3000 },
items: window.innerWidth/WidthOfItemPlusMargin
Для этого я должен прослушивать события изменения размера окна. Есть ли способ лучше?
Комментарии:
1. Предоставьте некоторый код.
2. @flvps только что сделал
3. Привет, приятель! Вы пытались использовать <Carousel ItemClass=»carousel-item-padding-0-px»> … </Carousel> ?
Ответ №1:
Создайте класс для вашего элемента
.carouselItem{
padding-right: 40px
}
Добавьте 2 реквизита в карусель
- Используйте
itemClass
для использования вашего класса - Добавьте
partialVisible={false}
, чтобы карусель исправляла себя всякий раз, когда ваши элементы удаляются из поля зрения
<Carousel itemClass={styles.carouselItem} partialVisible={false}>
<div>Item 1</div>
<div>Item 2</div>
<div>Item 3</div>
<div>Item 4</div>
</Carousel>