Skip to content

3D 旋转木马

为实现一个异形 3D 轮播图(旋转木马),找到个cloud9carousel的JQuery实现可以达到想要的效果,但是目前项目使用Vue,引入JQuery不知道会不会对其它模块造成影响,因此参考cloud9carousel写了个carousalable并且简化了使用,目前已发布至npm

演示

安装依赖

bash
npm install carouselable

用法

js
initCarousel({
  xRadius: 350,
  yRadius: 35,
  farScale: 0.7,
  speed: 4,
  itemClass: "carousel-item",
  handle: document.getElementById("carousel"),
});

API 说明

initCarousel 函数接受一个包含各种配置选项的对象作为参数:

farScale (可选): 控制轮播项在远处时的缩放比例。默认值为 0.5

speed (可选): 控制轮播图旋转的速度。默认值为 4

itemClass (可选): 指定轮播项的类名。默认为 .carousel-item

handle (可选): 指定轮播图渲染到的 DOM 元素。默认为#carousel

xOrigin (可选): 控制轮播图的 x 轴旋转中心。默认为轮播图容器的宽度的一半。

yOrigin (可选): 控制轮播图的 y 轴旋转中心。默认为轮播图容器的高度的一定百分比。

xRadius (可选): 控制轮播图沿 x 轴的半径。默认为轮播图容器宽度的一半。

yRadius (可选): 控制轮播图沿 y 轴的半径。默认为轮播图容器高度的一定百分比。

示例代码

示例代码
vue
<template>
  <div class="container">
    <div id="carousel">
      <div class="carousel-item">
        <img src="./imgs/158CBC5441D07D719838E7C2CCFF6A47.jpg" />
      </div>
      <div class="carousel-item">
        <img src="./imgs/C66C934923468677DC0BD7C6920BF0E8.jpg" />
      </div>
      <div class="carousel-item">
        <img src="./imgs/158CBC5441D07D719838E7C2CCFF6A47.jpg" />
      </div>
    </div>
  </div>
</template>

<script setup lang="ts">
import { onMounted } from "vue";
import { initCarousel } from "carouselable";
onMounted(() => {
  const carousel = document.getElementById("carousel");
  if (carousel) {
    initCarousel({
      itemClass: "carousel-item",
      handle: carousel,
      xRadius: 350,
      yRadius: 55,
      farScale: 0.7,
      speed: 4,
    });
  }
});
</script>

<style scoped>
.container {
  width: 800px;
  height: 400px;
  display: flex;
  justify-content: center;
  align-items: center;
}

#carousel {
  width: 800px;
  height: 400px;
}

.carousel-item {
  border-radius: 14px;
  width: 400px;
  height: 260px;
  overflow: hidden;

  img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
  }
}
</style>

最后

cloud9carousel: specious: cloud9carousel

演示图片: Bilibili UP主: 小染