Как сделать округленные слайды в swiper.js

#javascript #css #reactjs #swiper

#javascript #css #reactjs #swiper.js

Вопрос:

 import React, { useState, Fragment } from "react";
import { Swiper, SwiperSlide } from "swiper/react";
import SwiperCore, {
  Navigation,
  Pagination,
  EffectFade,
  EffectCoverflow,
  EffectCube,
} from "swiper";
import "swiper/swiper-bundle.css";
import "./App.css";

SwiperCore.use([
  EffectCoverflow,
  EffectCube,
  EffectFade,
  Navigation,
  Pagination,
]);

const slides = [];
for (let i = 0; i < 5; i  = 1) {
  slides.push(
    <SwiperSlide key={`slide-${i}`}>
      <img
        src={`https://picsum.photos/id/${i   1}/500/300`}
        style={{ listStyle: "none" }}
        alt={`Slide ${i}`}
      />
    </SwiperSlide>
  );
}

function App() {
  return (
    <Fragment>
      <Swiper
        initialSlide="2"
        effect="coverflow"
        navigation
        grabCursor={true}
        centeredSlides={true}
        slidesPerView="3"
        coverflowEffect={{
          rotate: 50,
          stretch: 0,
          depth: 300,
          modifier: 3,
        }}
      >
        {slides}
      </Swiper>
    </Fragment>
  );
}

export default App;
  

Код CSS

 body {
  background: #fff;
  font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
  font-size: 14px;
  color: #000;
  margin: 0;
  padding: 0;
}

.swiper-container {
  width: 100%;
  padding-top: 50px;
  padding-bottom: 50px;
}

img {
  width: 100%;
}

.swiper-slide {
  border-radius: 50% !important;
}

  

Я хочу сделать все слайды похожими на закругленный круг. Я не могу сделать это в swiperjs. Кто-нибудь может мне помочь в этом. Вот ссылка на то, что я делал до сих пор.

Я попытался сделать это с помощью border-radius и применил его ко многим классам, а также использовал !important, но не смог этого добиться.

https://nifty-rosalind-68dc39.netlify.app/

Комментарии:

1. для img набора тегов .стиль border-radius: 50%;

2. Вам нужно установить img,swiper-slide-shadow-left,swiper-slide-shadow-right значение border-radius:50%

3. Я сделал это, но не смог получить идеальный круг. Это похоже на овальную форму

4. Я обновил ссылку

Ответ №1:

Я думаю, вы должны добавить div внутреннюю .swiper-slide часть и присвоить ей равную ширину и высоту, тогда вы сможете использовать border-radius: 100% . в этом случае вы должны использовать автоматические слайды для каждого просмотра в опции swiper.

 <div class="swiper-slide">
 <div class="round-item">
  <img src="..." alt="..." />
 </div>
</div>
  
 .swiper-slide .round-item {
 width: 200px;
 height: 200px;
 border-radius: 100%;

 overflow: hidden;
}

.swiper-slide .round-item img {
 width: 100%;
 height: 100%;
 object-fit: cover;
}
  

Комментарии:

1. Я сделал это, но не сработало. Я обновил ссылку для того же.

2. Я прочитал ваш код в inspect element, и теперь получается .round-item круг, а изображения внутри него — нет. Я обновлю свой ответ, чтобы показать вам, как нужно изменить img css

3. И мне нужно изменить ширину для больших и очень больших устройств из-за фиксированного размера ширины

4. Проблем не будет, пока .round-item ширина не станет меньше ширины окна просмотра, вы можете уменьшить .round-item ширину до 300 пикселей, когда окно просмотра меньше 568 пикселей, а для большего размера swiper автоматически покажет элементы @ronakpatel

5. отлично сработало для меня, спасибо! но мне нужен был только радиус границы: 15 пикселей; чтобы получить красивые закругленные углы 🙂