vue3封装一个带动画的关闭按钮示例详解

 更新时间:2023年09月28日 09:06:10   作者:jsoncode  
这篇文章主要为大家介绍了vue3封装一个带动画的关闭按钮示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

预览效果

实现源码

<template>
  <MenuBtn
      :open="openMenu"
      :size="24"
  />
</template>
<template>
  <div :class="`menu ${open?'open':''}`" :style="`width:${size}px;height:${size}px`">
    <span
        :style="`
          transition-duration:${duration}ms;
          transform:${open?`translateY(${(size-2)/2}px) rotate(-45deg)`:`translateY(${size/6}px)`};
        `"
    />
    <span
        :style="`
          transition-duration:${duration}ms;
          ${open?`opacity: 0;transform: rotate(-45deg)`:''}
        `"
    />
    <span
        :style="`
          transition-duration:${duration}ms;
          transform:${open?`translateY(${-(size-2)/2}px) rotate(45deg)`:`translateY(-${size/6}px)`};
        `"
    />
  </div>
</template>
<script setup>
// 这里用了vue3的专用写法。vue2写法,自行实现。
const {open, size, duration} = defineProps({
  open: {
    type: Boolean,
    default: false,
    required: true,
  },
  size: {
    type: Number,
    default: 24,
    required: false
  },
  duration: {
    type: Number,
    default: 300,
    required: false
  }
});
</script>
<style scoped lang="scss">
.menu {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-direction: column;
  span {
    height: 2px;
    border-radius: 2px;
    display: flex;
    width: 100%;
    background-color: #333;
  }
}
</style>

源码说明

带有变量的样式,都写在行内了,因为这样适合用在任意场景下。

// nuxt3 
npx nuxi init <project-name>
// nuxt2
yarn create nuxt-app <project-name>
// vue-cli
vue create <project-name>
// vite
npm init vite-app <project-name>

其他场景

vite可以直接在style标签中使用js变量

npm init vite-app <project-name>
<template>
  <h1>{color}</h1>
</template>
<script>
export default {
  data () {
    return {
      color: 'red'
    }
  }
}
</script>
<style vars="{ color }" scoped>
h1 {
  color: var(--color);
}
</style>

以上就是vue3封装一个带动画的关闭按钮示例详解的详细内容,更多关于vue3封装动画关闭按钮的资料请关注脚本之家其它相关文章!

相关文章

  • Vue实现路由过渡动效的4种方法

    Vue实现路由过渡动效的4种方法

    Vue 路由过渡是对 Vue 程序一种快速简便的增加个性化效果的的方法,这篇文章主要介绍了Vue实现路由过渡动效的4种方法,感兴趣的可以了解一下
    2021-05-05
  • Vue3使用ResizeObserver监听元素的尺寸宽度变化

    Vue3使用ResizeObserver监听元素的尺寸宽度变化

    要监听 div 宽度的变化,可以使用 ResizeObserver 接口,ResizeObserver 允许你观察一个或多个元素的尺寸变化,并在发生变化时执行回调函数,所以本文给大家介绍了Vue3如何使用ResizeObserver监听元素的尺寸宽度变化,需要的朋友可以参考下
    2024-08-08
  • Vue实现页面返回停留原位置的多种方案

    Vue实现页面返回停留原位置的多种方案

    文章主要讨论了在 Vue 开发中实现页面返回停留原位置的多种方案,包括 Vuex、keep-alive、v-show、客户端跳转等,并分别阐述了它们的优缺点和适用情况,强调开发前应周全考虑前端业务和用户体验,根据实际业务选择合适方案,需要的朋友可以参考下
    2025-03-03
  • Vue input输入框回车以后自动刷新页面(直播程序)

    Vue input输入框回车以后自动刷新页面(直播程序)

    这篇文章主要介绍了直播程序,Vue input输入框回车以后自动刷新页面,适用场景是在输入框输入字符并按下回车键搜索时,刷新页面,需要的朋友参考下实现代码
    2023-01-01
  • vue实现元素拖动并互换位置的实现代码

    vue实现元素拖动并互换位置的实现代码

    在使用Vue的场景下,需要实现对元素进行拖动交换位置,接下来通过本文给大家介绍vue实现元素拖动并互换位置的实现代码,需要的朋友可以参考下
    2023-09-09
  • Vue Router动态路由实现实现更灵活的页面交互

    Vue Router动态路由实现实现更灵活的页面交互

    Vue Router是Vue.js官方的路由管理器,用于构建SPA(单页应用程序),本文将深入探讨Vue Router的动态路由功能,希望可以帮助大家更好地理解和应用Vue.js框架
    2024-02-02
  • vue 路由视图 router-view嵌套跳转的实现

    vue 路由视图 router-view嵌套跳转的实现

    这篇文章主要介绍了vue 路由视图 router-view嵌套跳转,主要实现的内容有制作一个登录页面,跳转到首页,首页包含菜单栏、顶部导航栏、主体,标准的后台网页格式,菜单点击显示不同的页面,感兴趣的小伙伴请参考下面文章内容
    2021-09-09
  • 解决vue的变量在settimeout内部效果失效的问题

    解决vue的变量在settimeout内部效果失效的问题

    今天小编就为大家分享一篇解决vue的变量在settimeout内部效果失效的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • vue-loader中引入模板预处理器的实现

    vue-loader中引入模板预处理器的实现

    这篇文章主要介绍了vue-loader中引入模板预处理器的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法

    Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法

    这篇文章主要介绍了Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12

最新评论