配置 Reactstrap 旋转木马图像以响应的最佳方式

Best way to configure Reactstrap carousel images to be responsive

我已经做了很多查找,但关于 reactstrap 轮播图像响应能力的文档出奇地少。

我的 ReactStrap 旋转木马响应式调整大小,但图像没有。

我有researched/tried的选项:

  1. CSS 通过轮播组件本身的 className?这是我认为可能是最好的,但我还没有找到可以正确调整图像大小的背景大小、高度和最大宽度的组合。

  2. 源文件?我不确定如何实现这个或任何其他内联属性,因为轮播是一个组件

  3. 也许轮播组件本身的某个地方?

  4. 或者我有更好的修改图片的方法吗?

  5. 或者@media 是来自 css 的答案吗?

`

const items = [
  {
    src: 'img1.png',
    altText: '',
    caption: ''
  },
  {
    src: 'img2.png',
    altText: '',
    caption: 'Freedom Isn\'t Free'
  },
  {
    src: 'img3.png',
    altText: '',
    caption: ''
  }
];

class HomeCarousel extends Component {
  constructor(props) {
    super(props);
    this.state = { activeIndex: 0 };
    this.next = this.next.bind(this);
    this.previous = this.previous.bind(this);
    this.goToIndex = this.goToIndex.bind(this);
    this.onExiting = this.onExiting.bind(this);
    this.onExited = this.onExited.bind(this);
  }

  onExiting() {
    this.animating = true;
  }

  onExited() {
    this.animating = false;
  }

  next() {
    if (this.animating) return;
    const nextIndex = this.state.activeIndex === items.length - 1 ? 0 : this.state.activeIndex + 1;
    this.setState({ activeIndex: nextIndex });
  }

  previous() {
    if (this.animating) return;
    const nextIndex = this.state.activeIndex === 0 ? items.length - 1 : this.state.activeIndex - 1;
    this.setState({ activeIndex: nextIndex });
  }

  goToIndex(newIndex) {
    if (this.animating) return;
    this.setState({ activeIndex: newIndex });
  }

  render() {
    const { activeIndex } = this.state;

    const slides = items.map((item) => {
      return (
        <CarouselItem
          className="carouselImg"
          onExiting={this.onExiting}
          onExited={this.onExited}
          key={item.src}
        >
          <img src={item.src} alt={item.altText} />
          <CarouselCaption captionText={item.caption} captionHeader={item.caption} />
        </CarouselItem>
      );
    });

    return (
      <Carousel
        activeIndex={activeIndex}
        next={this.next}
        previous={this.previous}
      >
        <CarouselIndicators items={items} activeIndex={activeIndex} onClickHandler={this.goToIndex} />
        {slides}
        <CarouselControl direction="prev" directionText="Previous" onClickHandler={this.previous} />
        <CarouselControl direction="next" directionText="Next" onClickHandler={this.next} />
      </Carousel>
    );
  }
}


export default HomeCarousel;

`

.carousel-item > img { 
  width: 100%; 
}

...将解决您的问题。
而且它与 Reactstrap 无关。这可能就是你没有找到太多的原因。仅与 TwBs 轮播有关。我个人看不出为什么该规则不是 TwBs 轮播 CSS 的一部分的任何原因,因为每个人都希望 <img> 的宽度与其父项相同 100%

如果您想将其限制为特定轮播,mod相应地修改选择器。


另一个经常请求的 TwBs 轮播 mod 是:

.carousel-control-prev,.carousel-control-next {
  cursor:pointer;
}

美好的一天,你好,

我已经在我的 reactjs 应用程序中用 Carousel 组件尝试过这个 reactstrap。 我通过添加 bootstrap 4 类s "d-block w-100".

解决了这个问题

我在我的 reactstrap Carousel 组件和这个元素中创建了这个

来自这个:

<img src={item.src} alt={item.altText} />

我改为:

<img className="d-block w-100" src={item.src} alt={item.altText} />

我刚刚从 bootstrap 4 文档中复制了这些 类 (d-block w-100) https://getbootstrap.com/docs/4.0/components/carousel/

这是我的示例,我将 Reactstrap Carousel 与来自我的 WordPress Rest API 数据的动态数据一起使用。 https://github.com/jun20/React-JS-and-WP-Rest-API/tree/home-carousel-final

鉴于 bootstrap 使用 flexbox,您可以通过将此添加到您的 css:

来使 reactstrap 轮播图像响应
.carousel-item, .carousel-item.active {
    align-items:center;
}

这似乎可以防止图像高度被拉伸。对我有用!

基于本页的 reactstrap Carousel 示例 1 https://reactstrap.github.io/components/carousel/

以下是我如何让它在我的用例中响应:

        <CarouselItem
          onExiting={() => setAnimating(true)}
          onExited={() => setAnimating(false)}
          key={item.src}
        >
          <img src={item.src} alt={item.altText} style={{ width: "100%"}}/>
          <CarouselCaption captionText={item.caption} captionHeader={item.caption} />
        </CarouselItem>

因此,将 style={{ width: "100%"}} 传递给 img 标签,使我的超大图像完美适合屏幕,可能对来这里的其他人有用。