vue - 自定义吸附窗口
业务需求
以共享单车界面为例,地图上分布着大量的共享单车,鼠标悬浮在单车上,弹出一个吸附弹窗,内容显示单车详细信息。
分析
很明显,因为单车的数量可能非常多,我们不可能用显示隐藏的方式实现;
合理的做法是,所有单车公用一个弹窗面板,悬浮的时候刷新面板上的数据。
方案
看着改吧,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>
疯狂的妞妞 :每一天,做什么都好,不要什么都不做!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
2022-10-24 java反射 - 获取函数参数名