vue2/3项目中使用Vue Carousel 3D实现 Carousel 3D 轮播

这篇具有很好参考价值的文章主要介绍了vue2/3项目中使用Vue Carousel 3D实现 Carousel 3D 轮播。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目需求大概是这个样子,这种并不能通过围成一周再旋转父级实现,因此图方便选择了组件

vue2/3项目中使用Vue Carousel 3D实现 Carousel 3D 轮播

轮播

 

 vue2,可以直接使用 Playground - Vue Carousel 3D - 3D Carousel for Vue.js

 进行改造成自己需要的样子。文档为英文,中文可参考这位

Vue 3D轮播插件vue-carousel-3d_memory_zzz的博客-CSDN博客

vue2/3项目中使用Vue Carousel 3D实现 Carousel 3D 轮播

以上API过少,可以使用 ref 绑定,通过onSlideChange打印出所有挂载的属性和函数

vue2/3项目中使用Vue Carousel 3D实现 Carousel 3D 轮播

 vue2/3项目中使用Vue Carousel 3D实现 Carousel 3D 轮播

 vue2/3项目中使用Vue Carousel 3D实现 Carousel 3D 轮播

 其中,goNext() 和 goPrev()为左右移位,goFar(index)和 goSlide(index)可以跳到对应的位置,只是表现形式不同(个人浅显理解)。以上就是vue2使用Vue Carousel 3D的大概方法,在此简单概述。

安装并在main.js引入后的完整代码

<template>
  <div >
  <carousel-3d ref="carousel" :perspective="30" :inverseScaling="500" :space="400" :loop="false" @before-slide-change="onSlideChange">
    <slide v-for="(item,index) in Lists" :key="index" :index='index'>
      <div class="carouselTitle">{{item.title}}</div>
      <div class="carouselContent">{{item.text}}</div>
    </slide>
  
  </carousel-3d>
  <div class="enums" >
  <div class="enums-list" @click="goSlideIndex(index)" height="20px" v-for="(item,index) in Lists" :key="index">
    {{ item.title }}
  </div>
  </div>
</div>
</template>
<script>
import { Carousel3d, Slide } from "vue-carousel-3d";
// import Carousel3d from 'vue-carousel-3d';
export default {
  components: {
    Carousel3d,
    Slide,
  },
  data(){
    return{
      Lists:[
      {
          title: '1',
          text:"xxxxxx ",   
        },
        {
          title: '2',
          text:"xxxxxx ", 
        },
        {
          title: '3',
          text:"xxxxxx ",
        },
        {
          title: '4',
          text:"xxxxxx ",       
        },
        {
          title: '5',
          text:"xxxxxx ",         
        },
        {
          title: '6',
          text:"xxxxxx ",  
        },
        {
          title: '7',
          text:"xxxxxx ", 
        },
        {
          title: '8',
          text:"xxxxxx ", 
        },
      ]
    }
  },
  methods:{
    onSlideChange(temp){
      console.log(this.$refs.carousel,'xxx');
      this.carouselIndex = temp;
     
    },
    goSlideIndex(index){
      // this.$refs.carousel.goNext(index)
      if(index>this.Lists.length-1 || 0>this.Lists.length-1){
        return;
      }
      // this.$refs.carousel.goSlide(index);
      this.$refs.carousel.goFar(index);
      
    },
  }
};
</script>
<style lang="less" scoped>
/deep/.left-1 {
  color: red;
  transform: rotateY(-40deg) translateX(-400px) translateZ(100px) !important;
}
/deep/.left-2 {
  color: red;
  transform: rotateY(-40deg) translateX(-800px) translateZ(100px) !important;
}
/deep/.right-1 {
  color: red;
  transform: rotateY(40deg) translateX(400px) translateZ(100px) !important;
}
/deep/.right-2 {
  color: red;
  transform: rotateY(40deg) translateX(800px) translateZ(100px) !important;
}
.enums{
  width: 300px;
  height: 30px;
  margin: 120px auto;
  display: flex;
  justify-content: center;
  // border: 1px solid black;
}
.enums-list{
  width: 30px;
  height: 100%;
  line-height: 30px;
  border: 1px solid gray;
  text-align: center;
}
</style>

以下重点说一下vue3中的使用。

费了不少力气然后查到有Vue3 Carousel 3D 这个东西。

https://www.npmjs.com/package/vue3-carousel-3d

于是在自己的私人项目里测试了下,

npm install vue3-carousel-3d
# or
yarn add vue3-carousel-3d

官网推荐是这样的

vue2/3项目中使用Vue Carousel 3D实现 Carousel 3D 轮播

 我稍微改动了下 ,在main.ts 中 放入这三行代码,

import Carousel3d from 'vue3-carousel-3d';

import "vue3-carousel-3d/dist/index.css"

app.use(Carousel3d)

然后在轮播页我注释掉了这些

vue2/3项目中使用Vue Carousel 3D实现 Carousel 3D 轮播

然后vue3基本可以实现了。有部分人vite的项目可能会遇到这样的报错

vue2/3项目中使用Vue Carousel 3D实现 Carousel 3D 轮播

 可以通过

在 vite.confg.js 文件中添加如下配置

resolve: {
      dedupe: [
        'vue'
      ],
}

重新启动项目后就可以了,注意有的没出现也有可能没给宽高。

vue3内完整代码如下:

<template>
  <div>
    <div style="width: 1200px; height: 200px; margin-top: 130px">
      <carousel-3d
        ref="carousel"
        @before-slide-change="onSlideChange"
        :autoplayTimeout="3000"
        :perspective="35"
        :display="5"
        :animationSpeed="1000"
        :width="300"
        :height="270"
        controlsVisible
        :controlsHeight="60"
      >
        <slide v-for="(item, i) in lists" :index="i" :key="i">
          <div class="carouselTitle">{{ item.title }}</div>
        </slide>
      </carousel-3d>
    </div>
    <div class="enums">
      <div
        class="enums-list"
        @click="goSlideIndex(index)"
        height="20px"
        v-for="(item, index) in lists"
        :key="index"
      >
        {{ item.title }}
      </div>
    </div>
  </div>
</template>

<script>
  // import { Carousel3d, Slide } from 'vue-carousel-3d'
  export default {
    //     components: {
    //     Carousel3d,
    //     Slide
    //   },
    data() {
      return {
        lists: [
          {
            title: '1',
          },
          {
            title: '2',
          },
          {
            title: '3',
          },
          {
            title: '4',
          },
          {
            title: '5',
          },
          {
            title: '6',
          },
        ],
      };
    },
    methods: {
      onSlideChange(temp) {
        console.log(this.$refs.carousel, 'xxx');
        this.carouselIndex = temp;
      },
      goSlideIndex(index) {
        // this.$refs.carousel.goNext(index)
        if (index > this.lists.length - 1 || 0 > this.lists.length - 1) {
          return;
        }
        // this.$refs.carousel.goSlide(index);
        this.$refs.carousel.goFar(index);
        // console.log(this.$refs.carousel.goFar(index),'dadad');
      },
    },
  };
</script>

<style lang="less" scoped>
  :deep(.left-1) {
    color: red;
    transform: rotateY(-40deg) translateX(-400px) translateZ(100px) !important;
  }
  :deep(.left-2) {
    color: red;
    transform: rotateY(-40deg) translateX(-800px) translateZ(100px) !important;
  }
  :deep(.right-1) {
    color: red;
    transform: rotateY(40deg) translateX(400px) translateZ(100px) !important;
  }
  :deep(.right-2) {
    color: red;
    transform: rotateY(40deg) translateX(800px) translateZ(100px) !important;
  }
  .el-carousel__item h3 {
    color: #475669;
    font-size: 14px;
    opacity: 0.75;
    line-height: 200px;
    margin: 0;
  }

  .el-carousel__item:nth-child(2n) {
    background-color: #99a9bf;
  }

  .el-carousel__item:nth-child(2n + 1) {
    background-color: #d3dce6;
  }
  .enums {
    width: 300px;
    height: 30px;
    margin: 120px auto;
    display: flex;
    justify-content: center;
    // border: 1px solid black;
  }
  .enums-list {
    width: 30px;
    height: 100%;
    line-height: 30px;
    border: 1px solid gray;
    text-align: center;
  }
</style>

 以上为测试代码,比较简陋,供大家参考一下文章来源地址https://www.toymoban.com/news/detail-474401.html

到了这里,关于vue2/3项目中使用Vue Carousel 3D实现 Carousel 3D 轮播的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 教程6 Vue3+Element Plus el-carousel制作轮播图(后面有修改样式的方法)

    (1)引入Element开发环境 (2)自动引入Element (3)在配置文件中进行配置,本人使用的是Vit构建工具 如果使用Vite作为构建工具,配置文件为vite.config.js,配置方法如下: (4)Element Plus全局引入 main.ts中增加下面的代码: (1)运行效果 (2)Rotation.vue参考代码 (3)卡片式轮

    2024年02月06日
    浏览(36)
  • vue2+vue-3d-loader 实现3D模型展示

    1.安装 vue-3d-loader npm i vue-3d-loader@1.x.x -S  注意vue2只能用1.几的版本 npm i vue-3d-loader会安装最新版本会导致不显示 2.main.js文件配置,此为全局注册 import vue3dLoader from \\\"vue-3d-loader\\\"; Vue.use(vue3dLoader) 3.具体使用 template   vue3dLoader     backgroundColor=\\\"rgb(216,217,219)\\\"     :height=\\\"600\\\"    

    2024年02月02日
    浏览(34)
  • vue2与vue3项目中,分别使用element组件的message消息提示只出现一次的实现

    比如出现以上现象,想要让上一次提示没有结束,下一次提示不会出现就可以用以下方法解决 解决后的现象一:上一次提示框显示后,提示框出现的提示时间没有结束,再次点击,提示框不会有反应,在该提示的时间内一只显示,下一次提示不会出现,直到该提示的时间过了

    2024年02月02日
    浏览(30)
  • vue项目中使用vant轮播图组件(桌面端)

    vue使用vant轮播图组件(桌面端) 2.1 Visual Studio Code 1.75.0 2.2 chrome浏览器 2.3 node v18.14.0 3.1 安装环境 3.2 添加代码 3.3 结果展示 4.1 安装环境 先安装包 然后桌面端适配 4.2 添加代码 注册组件 相比于官方给的代码,有两个方面需要注意,一个是适配桌面端,还有一个就是我以为vant组

    2024年02月04日
    浏览(34)
  • vue 项目使用three.js 实现3D看房效果

    0.前言 该教程能帮助直接写出vue项目的3D看房效果!!! 先上效果图 1.安装依赖 2.vue代码 这里文件名为three.vue 代码非原创,出处 vue3+threejs实现全景看房 (异步加载 BOLLROOM 部件为对原代码的修改) 注意这里的hdr 文件必须要放在assets文件夹中,且要通过import模块的形式导入!

    2024年02月13日
    浏览(35)
  • vue2+three.js实现类似VR、3D全景效果

    效果图: 俩图标是我自己加的前进后退按钮,也是百度了好久,再加上GPT的帮助,才给搞出来。因为需求急,都不看官方文档,百度到一个能跑的demo之后改吧改吧,就先用着了。 下面是代码: 这里 代码有很多用不到的地方和需要优化的地方,我是来不及改了,就先这样吧

    2024年02月15日
    浏览(37)
  • 使用vue-cli创建vue2项目以及项目配置

    1、安装vue-cli cmd:npm install -g @vue/cli@4.5.19 验证是否安装成功:vue -v   出现版本号说明安装成功 2、创建项目 vue create 项目名称 根据自己的需求选择特性,如下所示: 手动选择: 选择自己需要的特性:例如: 选择vue版本 选择路由模式 (输入y和n都可以,y代表history模式没有

    2024年02月06日
    浏览(39)
  • vue2+three.js+blender(实现3d 模型引入并可点击效果)

    2023.9.13今天我学习了如何把3d建模里面的模型引入到vue中,并可以实现拖动,点击的效果: 首先安装: npm install three 相关代码如下:  如果没有图片可以去 Three.js--》建模软件如何加载外部3D模型?_threejs加载3d模型_亦世凡华、的博客-CSDN博客

    2024年02月03日
    浏览(40)
  • 【Jquery插件】Owl Carousel轮播插件介绍与使用

    Owl Carousel:Basic Demo | Owl Carousel | 2.3.4 (owlcarousel2.github.io) 「Owl Carousel」插件常用的参数配置如下: 参数名称 参数类型 默认值 说明 items number 3 设置同时显示的轮播项数 loop boolean false 是否开启循环播放 autoplay boolean false 是否自动播放 autoplayTimeout number 5000 自动播放等待时间,

    2024年02月06日
    浏览(26)
  • vue2手机项目如何使用蓝牙功能

    要在Vue2手机项目中使用蓝牙功能,你需要先了解基本的蓝牙知识和API。以下是一些基本的步骤: 确认你的手机设备支持蓝牙功能。 在Vue2项目中安装蓝牙插件或库,例如vue-bluetooth或vue-bluetooth-manager。你可以通过npm安装它们。 在Vue2项目中创建一个蓝牙服务,并建立一个连接。

    2024年02月22日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包