首页 > 其他分享 >vue - 自定义吸附窗口

vue - 自定义吸附窗口

时间:2024-10-24 15:10:28浏览次数:9  
标签:vue 自定义 refs 吸附 showPopper popper 单车 click

业务需求

以共享单车界面为例,地图上分布着大量的共享单车,鼠标悬浮在单车上,弹出一个吸附弹窗,内容显示单车详细信息。

分析

很明显,因为单车的数量可能非常多,我们不可能用显示隐藏的方式实现;

合理的做法是,所有单车公用一个弹窗面板,悬浮的时候刷新面板上的数据。

方案

看着改吧,element-ui里头现成的组件

<template>
  <!-- 定位元素 -->
  <div class="my-picker">
    <!-- vue-popper组件 -->
    <Popper ref="popper" v-model="showPopper">
    </Popper>
    <el-button @click="click">click</el-button>
    <el-button @click="click">click</el-button>
    <el-button @click="click">click</el-button>
    <el-button @click="click">click</el-button>
    <el-button @click="click">click</el-button>
    <el-button @click="click">click</el-button>
    <!-- 弹出组件 -->
    <div ref="fly-piece" v-show="showPopper" class="my-picker__popper">你看,我弹出来了</div>
  </div>
</template>

<script>
// 引入vue-popper组件
import Popper from 'element-ui/src/utils/vue-popper';

Popper.render = (h) => h(null);

export default {
    components: {
        Popper
    },
    data() {
        return {
            // 双向绑定,控制弹出层是否弹出
            showPopper: false
        }
    },
    methods: {
        click: function (evt) {
			// 切换吸附 dom 元素
            this.$refs.popper.referenceElm = evt.target;
            this.$refs.popper.createPopper();
            this.showPopper = !this.showPopper;
            console.log(this.showPopper);
        }
    },
    mounted() {
        // 弹出层
        this.$refs.popper.popperElm = this.$refs['fly-piece'];
        // 定位层
        this.$refs.popper.referenceElm = this.$el;
    }
}
</script>

标签:vue,自定义,refs,吸附,showPopper,popper,单车,click
From: https://www.cnblogs.com/chenss15060100790/p/18499650

相关文章

  • 基于SpringBoot和Vue的地方美食分享与推荐网站的设计与实现(源码+定制+开发)地方美食推
    博主介绍:  ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W+粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台的优质作者。通过长期分享和实战指导,我致力于帮助更多学生......
  • 基于springboot+vue的Hadoop的高校教学资源平台的设计与实现(源码+lw+部署文档+讲解等
    课题摘要基于SpringBoot+Vue的Hadoop高校教学资源平台是一个功能强大的教学资源管理系统,结合了先进的技术架构和丰富的功能模块,为高校教学提供了高效、便捷的资源共享和管理平台。以下是该平台的设计与实现方案,包括源码、LW(LiveWire)、部署文档和讲解等内容。一、......
  • MyBatis 如何映射 Enum(使用 EnumTypeHandler、自定义 TypeHandler)
    文章目录1.MyBatis中的Enum映射概述2.使用EnumTypeHandler2.1代码示例:将Enum映射为字符串2.2代码示例:将Enum映射为整数2.3如何配置EnumTypeHandler3.自定义TypeHandler3.1为什么需要自定义TypeHandler3.2自定义TypeHandler的实现3.3如何注册自定......
  • 基于Hadoop的热门游戏推荐系统的设计springboot+vue的项目(源码+lw+部署文档+讲解等)
    课题摘要基于SpringBoot+Vue的Hadoop热门游戏推荐系统可以为游戏玩家提供个性化的游戏推荐服务。以下是该系统的设计与实现方案:一、系统功能用户管理用户注册与登录:支持多种注册方式,如手机号码、邮箱等。用户登录后可以管理个人信息。用户偏好设置:用户可以设置......
  • 基于springboot+vue的Hadoop的奶茶数据平台系统(源码+lw+部署文档+讲解等)
    课题摘要基于SpringBoot+Vue的Hadoop奶茶数据平台系统可以为奶茶行业提供全面的数据管理和分析解决方案。以下是该系统的设计与实现方案:一、系统功能数据采集与存储从各种数据源(如门店销售系统、社交媒体、市场调研等)采集奶茶相关数据。使用Hadoop分布式文件......
  • 基于springboot+vue的Hadoop的环境质量数据修复系统设计与实现(源码+lw+部署文档+讲解
    课题摘要基于SpringBoot+Vue的Hadoop环境质量数据修复系统是一个用于处理和修复环境质量数据的强大工具。以下是该系统的设计与实现方案,包括源码、LW(LiveWire)、部署文档和讲解等内容。一、系统概述环境质量数据对于环境保护和决策制定至关重要。然而,由于各种原因......
  • VUEJS实例中DATA属性的三种写法及区别是什么
    Vue.js是一种流行的JavaScript前端框架,用于构建交互式的用户界面。VUEJS实例中DATA属性的三种写法及区别是:1、独立性;2、推荐性;3、ES6语法。其中,独立性是指,使用函数返回一个对象的写法确保了每个组件实例都拥有独立的数据,不会相互影响。而直接使用对象声明DATA属性的写法会导致数......
  • js 富文本转义及反转义(包含vue版本的)
    //js//富文本反转义htmlfunctionescape2Html(str){  vararrEntities={'lt':'<','gt':'>','nbsp':'','amp':'&','quot':'"'};returnst......
  • vue项目搭建-vite版本
    https://blog.csdn.net/panghuangang/article/details/138756363 npmcreatevite@latest和npminitvite@latest命令是等效的,npmcreate是npminit的别名,它们的作用都是使用create-vue创建一个基于Vite的项目。npmcreatevite@latest这个命令实际上是先安装create-vite这个......
  • 基于SpringBoot + Vue的G县乡村生活垃圾治理问题中运输地图的设计与实现
    文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言......