iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >vue旋转木马组件demo怎么实现
  • 884
分享到

vue旋转木马组件demo怎么实现

2023-07-05 12:07:20 884人浏览 安东尼
摘要

本文小编为大家详细介绍“Vue旋转木马组件demo怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue旋转木马组件demo怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。实现步骤1.确定组件类型确

本文小编为大家详细介绍“Vue旋转木马组件demo怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue旋转木马组件demo怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

实现步骤

1.确定组件类型

确定组件类型,如上图设计,标准的旋转木马组件

2.选择实现方式

1 使用swpier等现有的组件,进行CSS样式覆盖

  • 优点:利用现有的组件进行样式覆盖,开发速度快

  • 缺点:需覆盖样式较多,编写混乱,css基础不足,导致徒劳无功 1.2 自己编写一个旋转木马公用组件(选用

  • 优点:锻炼下自己插拔编程思想,方便后期复用,送人玫瑰,手留余香

3.功能需求分析

本次我们主要讲述自己实现组件,分析后,需要满足以下功能点:

  • 1 构建空间,满足3D外观要求,并配有旋转动画、激活后的抖动(抖动暂未实现,有需要的可以自己追加css动画接口)

  • 2 可拖拽组件中子元素,拖拽结束后,激活选中的子元素

  • 3 任意点击子元素,激活点击的子元素

4.话不多说,上代码

复制下方的代码,粘贴到vue文件中,即可使用。

<template>  <div class="wapper">    <main id="main">      <div class="Trojan"           :style="{            'transfORM':'rotateX('+TrojanOptions.rotateX+'deg) rotateY('+(-TrojanOptions.activeChildSort*singleAngle)+'deg)'            }">        <div v-for="(item,index) in TrojanOptions.data"             :key="index"             class="TrojanChild"             :class="TrojanOptions.activeChildSort===item.sort?'activeChild TrojanChild':'TrojanChild'"             :style=" {              '--index': index+1,                 'transform':'rotateY('+(singleAngle*index)+'deg) translateZ(320px)'            } "             @mousedown="handleDrapDown($event,item)"> <img :src="item.src">          {{item.sort}}        </div>      </div>    </main>  </div></template><script> export default {  name: 'demo',  components: {},  data () {    return {      // 旋转木马配置      TrojanOptions: {        //默认激活的子元素坐标        activeChildSort: 0,        //是否允许进行拖拽        isDrop: false,        //旋转角度        rotate: 0,        // 向内倾斜角度        rotateX: -12,        // 旋转木马子元素        data: [          {            sort: 0,            src: require("@/assets/loGo.png"),          },          {            sort: 1,            src: require("@/assets/logo.png"),          },          {            sort: 2,            src: require("@/assets/logo.png"),          },          {            sort: 3,            src: require("@/assets/logo.png"),          },          {            sort: 4,            src: require("@/assets/logo.png"),          },          {            sort: 5,            src: require("@/assets/logo.png"),          },        ],      },    }  },  watch: {  },  created () {  },  computed: {    //单个元素占用的角度    singleAngle () {      return parseInt(360 / this.TrojanOptions.data.length)    },  },  mounted () {  },  destroyed () {  },  methods: {    //复位    resetPosition () {      if (this.TrojanOptions.activeChildSort >= this.TrojanOptions.data.length) {        this.TrojanOptions.activeChildSort = 0      }      if (this.TrojanOptions.activeChildSort < 0) {        this.TrojanOptions.activeChildSort = this.TrojanOptions.data.length-1      }    },    //旋转方法    startTurn (addflag, item) {      let Trojan = document.querySelector(".Trojan");      if (addflag === 0) {        this.TrojanOptions.activeChildSort -= 1        this.resetPosition()      }      else if (addflag === 1) {        this.TrojanOptions.activeChildSort += 1        this.resetPosition()      }      else {        this.TrojanOptions.activeChildSort = item.sort      }      Trojan.style.cssText = ` transform: rotateX(` + this.TrojanOptions.rotateX + `deg) rotateY(${this.TrojanOptions.rotate}deg); `;    },    //旋转的触发方法    //也是入口    handleDrapDown (de, item) {      const th = this      let stratPoint = de.clientX || de.touches[0].clientX      let endPoint = de.clientX || de.touches[0].clientX      this.TrojanOptions.isDrop = true;      // 此处可以扩展鼠标的移动,旋转延续跟着移动的动画效果      document.onmousemove = (e) => {        if (!this.TrojanOptions.isDrop) return false;        e.preventDefault();      }      document.onmouseup = (e) => {        if (!this.TrojanOptions.isDrop) return;        endPoint = e.clientX || e.touches[0].clientX;        this.TrojanOptions.isDrop = false;        if (stratPoint < endPoint) {          th.startTurn(0, item)        }        else if (stratPoint > endPoint) {          th.startTurn(1, item)        }        else {          th.startTurn(3, item)        }      }    }  }}</script><style lang="scss">.wapper {  height: 100vh;  display: flex;  justify-content: center;  align-items: center;  background-color: #000;}main {  user-select: none;  position: relative;  width: 220px;  height: 130px;  // 官方解释:指定了观察者与z=0平面的距离,使具有三维位置变换的元素产生透视效果  // 具体可以操作该值进行效果观测  perspective: 800px;}.Trojan {  position: relative;  width: 100%;  height: 100%;  transform-style: preserve-3d;  transition: all 1s;}.TrojanChild {  position: absolute;  width: 100%;  height: 100%;  border: 1px solid yellow;  color: #fff;  &.activeChild {    border: 1px solid red !important;  }  & img {    width: 100%;    height: 100%;  }  :hover {    cursor: grab;  }  :active {    cursor: grabbing;  }}</style>

读到这里,这篇“vue旋转木马组件demo怎么实现”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: vue旋转木马组件demo怎么实现

本文链接: https://www.lsjlt.com/news/351656.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue旋转木马组件demo怎么实现
    本文小编为大家详细介绍“vue旋转木马组件demo怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue旋转木马组件demo怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。实现步骤1.确定组件类型确...
    99+
    2023-07-05
  • 拿来即用的vue旋转木马组件demo
    目录实现步骤1.确定组件类型2.选择实现方式3.功能需求分析4.话不多说,上代码实现步骤 1.确定组件类型 确定组件类型,如上图设计,标准的旋转木马组件 2.选择实现方式 1.1 ...
    99+
    2023-03-15
    vue旋转木马组件 vue组件
  • Vue组件实现旋转木马动画
    本文实例为大家分享了Vue组件实现旋转木马动画的具体代码,供大家参考,具体内容如下 源码如下 <template> <div id="wrapper">...
    99+
    2022-11-12
  • vue实现旋转木马动画
    本文实例为大家分享了vue实现旋转木马动画的具体代码,供大家参考,具体内容如下 图片数量可为任意值都能正常处理 [1-无限个]: <!DOCTYPE html> &l...
    99+
    2022-11-12
  • 怎么用javascript实现旋转木马
    本篇内容主要讲解“怎么用javascript实现旋转木马”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用javascript实现旋转木马”吧! ...
    99+
    2022-10-19
  • HTLM怎么实现动态旋转木马效果
    这篇文章主要介绍“HTLM怎么实现动态旋转木马效果”,在日常操作中,相信很多人在HTLM怎么实现动态旋转木马效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”HTLM怎么实现...
    99+
    2022-10-19
  • 微信小程序怎么实现旋转木马效果
    这篇文章主要介绍“微信小程序怎么实现旋转木马效果 ”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序怎么实现旋转木马效果 ”文章能帮助大家解决问题。文章涉及技术点微信小程序原生Swiper控件...
    99+
    2023-06-26
  • C++怎么实现旋转数组
    本篇内容主要讲解“C++怎么实现旋转数组”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++怎么实现旋转数组”吧!Rotate Array 旋转数组Given an array, rotate ...
    99+
    2023-06-20
  • php怎么实现二维数组旋转
    本文操作环境:Windows7系统,PHP7.4版,Dell G3电脑。php怎么实现二维数组旋转?PHP二维数组矩形转置实例<php //二维数组转置 //定义一个二维数组 $arr =array(array...
    99+
    2014-09-26
    php
  • C++怎么实现在旋转有序数组中搜索
    这篇文章主要介绍了C++怎么实现在旋转有序数组中搜索的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++怎么实现在旋转有序数组中搜索文章都会有所收获,下面我们一起来看看吧。Search in Rotated S...
    99+
    2023-06-19
  • LeetCode题解之怎么实现旋转数组的数字
    这篇文章主要介绍“LeetCode题解之怎么实现旋转数组的数字”,在日常操作中,相信很多人在LeetCode题解之怎么实现旋转数组的数字问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
    99+
    2022-10-19
  • vue怎么实现快进后退的跑马灯组件
    这篇文章主要介绍了vue怎么实现快进后退的跑马灯组件的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue怎么实现快进后退的跑马灯组件文章都会有所收获,下面我们一起来看看吧。用vue编写一个可以快进后退的跑马灯组...
    99+
    2023-06-29
  • vue怎么实现组件内联
    本文小编为大家详细介绍“vue怎么实现组件内联”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue怎么实现组件内联”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。首先,让我们来了解Vue组件内联的基础知识。Vue...
    99+
    2023-07-05
  • vue怎么实现table-plus组件
    今天小编给大家分享一下vue怎么实现table-plus组件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。目的配置型表格多级...
    99+
    2023-06-30
  • Vue组件封装怎么实现
    这篇文章主要介绍“Vue组件封装怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue组件封装怎么实现”文章能帮助大家解决问题。一、组件封装的优势复用性:组件封装可以将常用的功能或视图模块抽象...
    99+
    2023-07-05
  • vue中怎么实现组件传值
    这篇文章给大家分享的是有关vue中怎么实现组件传值的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。vue是什么Vue是一套用于构建用户界面的渐进式JavaScript框架,Vue与其它大型框架的区别是,使用Vue可...
    99+
    2023-06-14
  • 怎么用vue实现分页组件
    这篇文章主要介绍了怎么用vue实现分页组件的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用vue实现分页组件文章都会有所收获,下面我们一起来看看吧。首先使用基础 Vue 构造器,创建一个“子类”,Vue.e...
    99+
    2023-07-04
  • vue组件间怎么实现事件传递
    vue组件间怎么实现事件传递,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。由于新工作需要用vue,所以最近接触最多的也是vue,因为之前一...
    99+
    2022-10-19
  • vue中怎么实现子组件向父组件传值
    这篇文章给大家介绍vue中怎么实现子组件向父组件传值,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。父组件这么写<component-a v-on:child-say=&...
    99+
    2022-10-19
  • Vue中怎么实现父组件向子组件传值
    这期内容当中小编将会给大家带来有关Vue中怎么实现父组件向子组件传值,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1:在src/components/child/文件夹下...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作