基于Vue3实现一个简单的方位动画

 更新时间:2024年02月29日 08:20:53   作者:无责任此方_修行中  
这篇文章主要为大家详细介绍了如何基于Vue3实现一个简单的方位动画,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

这是最近遇到的一个有点意思的需求,需要根据后端返回的数据,在一块地图的具体的方位上显示对应位置标识(位置图钉)。不用十分精确,只要能表现出大致的方位即可。

类似下面的效果,有点像游戏里的地图标识。

设计思路

由于不用十分精确,就用最简单的 div + css 来实现位置标识的显示和动画。之后再通过配合背景图片来保证最基础的效果。

方位总共 9 个,东南西北中加上四个角,通过 Grid 布局让其形成 3 * 3 的格子。位置标识只需要根据方位数据出现在对应的 div 中即可。

最后将这些方位用一个 div 包裹起来,只要设置外层 div 的背景即可实现。

代码实现和 Demo 演示

梳理清思路后,代码实现就比较简单了。这里用 Vue3 在 CodeSandbox 由于这里无法渲染,放上链接和部分代码。也可以在我的博客上看到 Demo。

Demo 地址

部分关键代码:

<template>
  <!-- 九宫格部分 -->
  <div class="display">
    <div class="direction-container">
      <div v-for="direction in directions" :key="direction.value" class="item">
        <div v-if="selectedDirection === direction.value" class="pin"></div>
      </div>
    </div>
  </div>

  <!-- 下拉框 -->
</template>

<script setup>
import { ref } from "vue";

const directions = [
  { name: "north-west", value: "nw" },
  { name: "north", value: "n" },
  { name: "north-east", value: "ne" },
  { name: "west", value: "w" },
  { name: "center", value: "c" },
  { name: "east", value: "e" },
  { name: "south-west", value: "sw" },
  { name: "south", value: "s" },
  { name: "south-east", value: "se" },
];

const selectedDirection = ref(directions[0].value);
</script>

<style scoped>
/* 抖动动画 */
@keyframes shake {
  0% {
    transform: translateY(0);
  }
  100% {
    transform: translateY(10px);
  }
}

.direction-container {
  ...
  /* 3*3 grid 布局 */
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  ...
}

.item {
  ...
}

.pin {
  /*坐标动画和位置*/
  ...
  animation: shake 0.5s ease infinite alternate;
}
</style>

拓展

在这个实现下,要获得不错的效果主要依赖背景图片是否合适,图片大小、边缘留白等都会影响最终的效果。如果是针对不规则的地形组合,可能用 SVG 或 Canvas 来实现更好,但相对的代码复杂度也会上升。

除了方位标识,类似的实现也可以拓展到其他场景,比如车厢内的座位标识,停车场的车位标识等。

到此这篇关于基于Vue3实现一个简单的方位动画的文章就介绍到这了,更多相关Vue3方位动画内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue计算属性及使用详解

    vue计算属性及使用详解

    计算属性就是模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。这篇文章主要介绍了vue计算属性详解,需要的朋友可以参考下
    2018-04-04
  • 详解基于Vue-cli搭建的项目如何和后台交互

    详解基于Vue-cli搭建的项目如何和后台交互

    这篇文章主要介绍了详解基于Vue-cli搭建的项目如何和后台交互,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Vant2移动端Vue组件库问题记录

    Vant2移动端Vue组件库问题记录

    Vant是一套轻量、可靠的移动端组件库,通过Vant可以快速搭建出风格统一的页面,提升开发效率,下面这篇文章主要给大家介绍了关于Vant2移动端Vue组件库问题的相关资料,需要的朋友可以参考下
    2023-01-01
  • Vue Element前端应用开发之表格列表展示

    Vue Element前端应用开发之表格列表展示

    在我们一般开发的系统界面里面,列表页面是一个非常重要的综合展示界面,包括有条件查询、列表展示和分页处理,以及对每项列表内容可能进行的转义处理,本篇随笔介绍基于Vue +Element基础上实现表格列表页面的查询,列表展示和字段转义处理。
    2021-05-05
  • element中el-select的使用及说明

    element中el-select的使用及说明

    这篇文章主要介绍了element中el-select的使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • Vue的编码技巧与规范使用详解

    Vue的编码技巧与规范使用详解

    这篇文章主要介绍了Vue的编码技巧与规范使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • 微信小程序使用uni-app一键获取用户信息

    微信小程序使用uni-app一键获取用户信息

    这篇文章主要介绍了微信小程序使用uni-app一键获取用户信息,需要的朋友可以参考下
    2023-01-01
  • Vue.js中v-bind指令的用法介绍

    Vue.js中v-bind指令的用法介绍

    这篇文章介绍了Vue.js中v-bind指令的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • Vue3中如何检测数组的变化方式

    Vue3中如何检测数组的变化方式

    这篇文章主要介绍了Vue3中如何检测数组的变化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • vue slot 在子组件中显示父组件传递的模板

    vue slot 在子组件中显示父组件传递的模板

    这篇文章主要介绍了vue slot 在子组件中显示父组件传递的模板,需要的朋友可以参考下
    2018-03-03

最新评论