vue3自定义实现悬浮固定按钮组件

您所在的位置:网站首页 华为nova2s怎么设置悬浮按钮功能图标 vue3自定义实现悬浮固定按钮组件

vue3自定义实现悬浮固定按钮组件

2024-07-06 12:25| 来源: 网络整理| 查看: 265

目录 一、需求描述二、代码解读三、结果展示

一、需求描述 需要5个固定的悬浮圆,居于页面的右侧。鼠标悬浮在圆上面会显示对应的文字提示其中包含返回顶部悬浮圆,当页面滑至底部时出现,点击页面滑到顶部。点击按钮会给出弹窗 二、代码解读 提交 本平台所有代码均有自己一人开发,如有问题,请扫码联系! import { ref, onMounted, onBeforeUnmount } from 'vue'; import {Tooltip} from 'ant-design-vue'; import SvgIcon from "@/components/SvgIcon.vue"; // props 定义 const props = defineProps(['images']); // 关于弹窗逻辑 const aboutVisible = ref(false); const showAboutPopup = () => { aboutVisible.value = true; }; const feedbackVisible = ref(false); const form = ref(); const showFeedbackPopup = () => { feedbackVisible.value = true; }; const handleSubmit = () => { form.value.validate().then(() => { console.log('提交反馈'); feedbackVisible.value = false; }); }; const showTop = ref(false); const scrollToTop = () => { // 滚动到顶部的逻辑 const scrollToTopDuration = 300; const scrollStep = -window.scrollY / (scrollToTopDuration / 15); const scrollInterval = setInterval(() => { if (window.scrollY !== 0) { window.scrollBy(0, scrollStep); } else { clearInterval(scrollInterval); } }, 15); }; const navigateToGitHub = () => { // 跳转到GitHub的逻辑 window.location.href = 'https://github.com'; }; const navigateToGitee = () => { // 跳转到Gitee的逻辑 window.location.href = 'https://gitee.com'; }; const handleScroll = () => { // 根据滚动位置判断是否显示返回顶部按钮 showTop.value = window.scrollY > window.innerHeight; }; onMounted(() => { // 监听滚动事件,根据滚动位置来显示/隐藏返回顶部按钮 window.addEventListener('scroll', handleScroll); }); onBeforeUnmount(() => { // 移除滚动事件监听 window.removeEventListener('scroll', handleScroll); }); /* 关于弹窗样式 */ .image-container { display: flex; justify-content: space-between; margin-top: 20px; } .image-container img { width: 150px; /* 调整图片宽度 */ height: auto; /* 保持宽高比 */ } .circle-container { position: fixed; bottom: 80px; right: 50px; display: flex; flex-direction: column; z-index: 999; } .circle { width: 30px; height: 30px; background-color: #ffffff; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin-bottom: 10px; cursor: pointer; transition: background-color 0.3s; } .circle a-icon { color: #fff; font-size: 20px; } .custom-modal-footer { display: flex; justify-content: flex-end; }

部分:

:定义了一个包含所有圆形按钮的容器,这些按钮在页面右下角垂直排列。每个按钮都被包裹在 组件内:这是为了在用户悬停在按钮上时显示一个提示文本。v-show="showTop":通过Vue的指令 v-show 根据 showTop 变量的值来控制返回顶部按钮的显示与隐藏。弹窗部分:使用了 a-modal 组件,分别用于显示用户反馈和关于信息。

部分:

import 语句:引入了Vue 3的 ref、onMounted、onBeforeUnmount,以及Ant Design Vue库的 Tooltip 组件和自定义的 SvgIcon 组件。const props = defineProps(['images']);:通过 defineProps 获取父组件传递的 images 属性。关于弹窗逻辑:aboutVisible 控制关于弹窗的显示与隐藏,showAboutPopup 方法用于显示关于弹窗。反馈弹窗逻辑:feedbackVisible 控制反馈弹窗的显示与隐藏,showFeedbackPopup 方法用于显示反馈弹窗,handleSubmit 方法处理用户提交的反馈。返回顶部逻辑:showTop 控制返回顶部按钮的显示与隐藏,scrollToTop 方法用于平滑滚动到页面顶部。跳转逻辑:navigateToGitHub 和 navigateToGitee 方法用于在新窗口中打开 GitHub 和 Gitee 的链接。滚动事件监听:handleScroll 方法用于监听页面滚动事件,根据滚动位置来控制返回顶部按钮的显示与隐藏。生命周期钩子:onMounted 注册了滚动事件监听器,onBeforeUnmount 移除了滚动事件监听器。

部分:

关于弹窗样式:通过定义 .image-container 类和其内部的 img 样式,控制关于弹窗中图片的展示方式。圆形按钮样式:定义了 .circle 类和其内部 a-icon 样式,包括按钮的大小、背景颜色、圆角等。弹窗底部样式:通过定义 .custom-modal-footer 类,将弹窗中的提交按钮放置在底部右侧。

整个组件结合了Vue 3的响应式数据、生命周期钩子以及Ant Design Vue库提供的组件,实现了一组具有交互性和美观性的圆形按钮,以及与之关联的弹窗功能。

三、结果展示

在这里插入图片描述 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3