Ryan Fonseka
Ryan Fonseka

Reputation: 255

React Owl Carousal responsive not working in smaller screens

My Owl carousel is not responsive on smaller or mobile screens. I want to find a way to solve this problem. Following is the screenshots:

  1. https://i.sstatic.net/aKpth.png
  2. https://i.sstatic.net/In8Mb.png
  3. https://i.sstatic.net/NY8cy.png

And here's the code. Thanks in advance

    export default function HomeMovieSlider() {
  
    return (
  <div>
    <OwlCarousel className='owl-theme'
    loop center margin={1} autoplay ={true} dots={false} items={3} touchDrag={true} lazyLoad={true} 
    
    // responsive={"0:{items:1,},600:{items:3,},1000:{items:5,}"}
    animateOut={'fadeOut'} animateIn={'flipInX'}>
    {MOVIEBANNER.map((movieBannertop) => {
        return (
            <div  >
                {/* <h4>{movieBannerp.movieTitle}</h4> */}
                {/* <img src={movieBannertop.bannerImage}/> */}
                <Card style={{width: "250px"}}> 
                    <Card.Img variant="top" src={movieBannertop.bannerImage} height="380" max-width= "100% !important"/>
                    <Card.Body> 
                      <Card.Title as="h6" ><b>{movieBannertop.movieTitle}</b></Card.Title>
                      <Card.Subtitle className="mb-2 text-muted">{movieBannertop.genres}</Card.Subtitle>
                      <Link to="/MovieDetail"><small className="text-muted">More Details</small></Link>
                    </Card.Body>
                    <Card.Footer className="text-center">
                      
                      <Button variant="danger" style={{backgroundColor: "#ff4444"}}><Link to="/movieBooking" style={{color: "#fff"}}>Book Now</Link></Button>
                    </Card.Footer> 
                  </Card> 
            </div>  
        );
      })}
    </OwlCarousel>
    <div className="col-xl-3 col-lg-3 col-md-3 col-sm-12 col-12"></div>
    <div className="col-xl-6 col-lg-6 col-md-6 col-sm-12 col-12">
    <div className="prs_animate_btn1 prs_upcom_main_wrapper prs_third_slider_btn">
      <ul>
        <li data-animation="animated fadeInUp"><a href="/#/movies" className="button button--tamaya prs_upcom_main_btn" data-text="MORE"><span>MORE</span></a>
        </li>
      </ul>
    </div>
    </div>
    <div className="col-xl-3 col-lg-3 col-md-3 col-sm-12 col-12"></div>
  </div>
    );
  }

Upvotes: 1

Views: 1061

Answers (1)

Majid M.
Majid M.

Reputation: 4964

For making owl-carousel responsive, you should create a object named state with a responsive property and send it to the responsive prop of OwlCarousel.

export default function HomeMovieSlider() {
    const state= {
        responsive:{
            0: {
                items: 1,
            },
            450: {
                items: 2,
            },
            600: {
                items: 3,
            },
            1000: {
                items: 4,
            },
        },
    }
  return (
    <div>
      <OwlCarousel
        className="owl-theme"
        loop
        center
        margin={1}
        autoplay={true}
        dots={false}
        items={3}
        touchDrag={true}
        lazyLoad={true}
         responsive={state.responsive}// add this line
        animateOut={'fadeOut'}
        animateIn={'flipInX'}
      >
        {MOVIEBANNER.map(movieBannertop => {
          return (
            <div>
              {/* <h4>{movieBannerp.movieTitle}</h4> */}
              {/* <img src={movieBannertop.bannerImage}/> */}
              <Card style={{ width: '250px' }}>
                <Card.Img
                  variant="top"
                  src={movieBannertop.bannerImage}
                  height="380"
                  max-width="100% !important"
                />
                <Card.Body>
                  <Card.Title as="h6">
                    <b>{movieBannertop.movieTitle}</b>
                  </Card.Title>
                  <Card.Subtitle className="mb-2 text-muted">
                    {movieBannertop.genres}
                  </Card.Subtitle>
                  <Link to="/MovieDetail">
                    <small className="text-muted">More Details</small>
                  </Link>
                </Card.Body>
                <Card.Footer className="text-center">
                  <Button
                    variant="danger"
                    style={{ backgroundColor: '#ff4444' }}
                  >
                    <Link to="/movieBooking" style={{ color: '#fff' }}>
                      Book Now
                    </Link>
                  </Button>
                </Card.Footer>
              </Card>
            </div>
          );
        })}
      </OwlCarousel>       
  );
}

For other owl-carousels APIs see this link: https://github.com/laurenchen0631/react-owl-carousel

Upvotes: 1

Related Questions