📜  仅 carousel css - CSS (1)

📅  最后修改于: 2023-12-03 15:21:50.948000             🧑  作者: Mango

仅 Carousel CSS - CSS

Carousel是一个用于制作图片轮播的前端组件。有很多用于制作Carousel的库,但是本次介绍的是仅使用CSS实现的Carousel。

基本结构

要制作一个基本的Carousel,我们需要先定义HTML结构和CSS样式。

<div class="carousel">
  <div class="slides">
    <div class="slide"><img src="slide1.jpg"></div>
    <div class="slide"><img src="slide2.jpg"></div>
    <div class="slide"><img src="slide3.jpg"></div>
  </div>
</div>
.carousel {
  width: 100%;
  height: 300px;
  overflow: hidden;
}

.slides {
  display: flex;
  height: 100%;
  transition: transform 0.3s ease;
}

.slide {
  width: 100%;
  flex-shrink: 0;
}

这里我们使用了Flexbox布局来排列三张图片。slides元素是一个Flex容器,slide元素是Flex的子元素。注意每个slide元素都要设置宽度,以免它们随着Carousel的容器一起缩放。

实现轮播

现在我们需要为Carousel添加轮播效果。这可以通过CSS的Transform属性来实现。

.carousel {
  width: 100%;
  height: 300px;
  overflow: hidden;
}

.slides {
  display: flex;
  height: 100%;
  transition: transform 0.3s ease;
}

.slide {
  width: 100%;
  flex-shrink: 0;
}

.carousel:hover .slides {
  transition: transform 0.3s ease-in-out;
}

.carousel:hover .slides {
  animation: carousel 10s infinite;
}

@keyframes carousel {
  0% {
    transform: translateX(0%);
  }
  20% {
    transform: translateX(0%);
  }
  30% {
    transform: translateX(-100%);
  }
  50% {
    transform: translateX(-100%);
  }
  60% {
    transform: translateX(-200%);
  }
  80% {
    transform: translateX(-200%);
  }
  100% {
    transform: translateX(-300%);
  }
}

这里我们使用了CSS动画来实现轮播。当Carousel被hover时,我们为slides元素添加了一个名为carousel的动画,并设置它无限循环。在动画中,我们使用Transform属性将slides元素向左移动,以显示下一张图片。

结束语

这是一个简单的、使用CSS实现的Carousel。它只用了一些基本的CSS属性和动画,但是已经足够实现一个良好的轮播效果。当然,你可以使用更多的CSS属性和JavaScript来实现更高级的效果。