vue 鼠标移入不同div悬浮显示不同的表格el-table内容,鼠标移出悬浮内容消失

一、封装悬浮显示的内容

表格:elment-UI

ShowBox.vue

<template>
	<div class="table-box">
		<div class="table-title">{{title}}</div>
		<el-table :data="tableData" stripe style="width: 100%;">
			<el-table-column prop="date" label="日期">
			</el-table-column>
			<el-table-column prop="name" label="姓名">
			</el-table-column>
			<el-table-column prop="address" label="地址">
			</el-table-column>
		</el-table>
	</div>

</template>

<script>
	export default {
		props: {
			title: {
				type: String,
				default: '无',
			}
		},
		data() {
			return {
				tableData: [{
					date: '2016-05-02',
					name: '王小虎',
					address: '上海市普陀区金沙江路 1518 弄'
				}, {
					date: '2016-05-04',
					name: '王小虎',
					address: '上海市普陀区金沙江路 1517 弄'
				}, {
					date: '2016-05-01',
					name: '王小虎',
					address: '上海市普陀区金沙江路 1519 弄'
				}, {
					date: '2016-05-03',
					name: '王小虎',
					address: '上海市普陀区金沙江路 1516 弄'
				}]
			}
		}
	}
</script>

<style>
	.table-box {
		width: 400px;
		/* height: 200px; */
		border: 1px solid #000;
	}

	.table-title {
		font-size: 23px;
		text-align: left;
		font-weight: 600;
	}
</style>

二、鼠标移入、移出操作(重点)

根据鼠标移入的x、y坐标确定悬浮内容的位置。

完整代码如下:

<template>
	<div class="container">
		<div v-for="(item, index) in items" :key="index" @mouseenter="mouseOver($event,item)" @mouseleave="mouseLeave"
			class="item-box">{{ item }}
		</div>
		<ShowBox id="atable" v-if="showTable" :title="title"></ShowBox>
	</div>
</template>

<script>
	import ShowBox from "./ShowBox.vue";
	export default {
		components: {
			ShowBox
		},
		data() {
			return {
				items: [
					"1-1-1",
					"1-1-2",
					"1-1-3",
					"1-1-4",
					"1-2-1",
				],
				showTable: false, // 初始化表格为关闭状态
				title: '',
			};
		},
		mounted() {
			// this.activation()
		},
		methods: {

			//鼠标移入,显示相对于的表格数据
			mouseOver(e, item) {
				this.showTable = true;
				console.log("鼠标移入" + e + item)
				this.title = item
				const x = e.clientX;
				const y = e.clientY;
				console.log("x:" + x + "y:" + y)
				this.$nextTick(function() {
					var divElement = document.getElementById("atable")
					console.log("divElement:" + divElement)
					divElement.style.position = "absolute"
					divElement.style.left = x + "px"
					divElement.style.top = y + "px"
					divElement.style.backgroundColor = "coral"
				})
			},
			//鼠标移出li,隐藏表格数据
			mouseLeave() {
				this.showTable = false
				console.log("鼠标移出")
			},
		},
	};
</script>

<style>
	.container {
		/* display: flex; */
		/* 设置容器为flex布局 */
		/* justify-content: space-between; */
		/* 水平居中显示子项 */
	}

	.item-box {
		width: 100px;
		/* 设置每个div的宽度 */
		height: 30px;
		/* 设置每个div的高度 */
		background-color: forestgreen;
		/* 设置每个div的背景色 */
		margin-top: 7px;
		margin-left: 3px;
		/* 设置每个div之间的外边距 */
		color: #fff;
		display: flex;
		justify-content: center;
		align-items: center;
		font-size: 22px;
		font-weight: 500;
		border-style: ridge;
		border-width: 2px;
		border-color: #0085AA;
	}
</style>

效果:

如果想要改变表格内容,在ShowBox.vue里面添加传值参数,如下

props: {
			title: {
				type: String,
				default: '无',
			},
			tableData: {
				type: Array,
				default: null,
			}
		},

调用界面添加如下

<ShowBox id="atable" v-if="showTable" :title="title" :tableData="tableData"></ShowBox>
data() {
			return {
				tableData:[],
			};
		},

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3上使用Leaflet的Marker标记,实现悬浮展示内容,离开不显示,可以通过以下步骤实现: 1. 在Vue3项目中安装leaflet和leaflet.markercluster插件: ```bash npm install leaflet leaflet-markercluster ``` 2. 在Vue3项目中导入leaflet和leaflet.markercluster插件: ```javascript import L from 'leaflet'; import 'leaflet-markercluster'; ``` 3. 在Vue3组件中定义Marker标记的悬浮展示内容和离开不显示内容: ```javascript data() { return { popupContent: '', marker: null, }; }, mounted() { // 创建地图 const map = L.map('map').setView([51.505, -0.09], 13); // 创建Marker const markerIcon = L.divIcon({className: 'marker-icon'}); this.marker = L.marker([51.5, -0.09], {icon: markerIcon}).addTo(map); // 创建Popup const popup = L.popup({ closeButton: false, className: 'custom-popup', }).setContent(() => this.popupContent); // 鼠标悬停Marker时,展示Popup this.marker.on('mouseover', () => { this.popupContent = 'Hello World!'; this.marker.bindPopup(popup).openPopup(); }); // 鼠标离开Marker时,隐藏Popup this.marker.on('mouseout', () => { this.marker.closePopup(); this.popupContent = ''; }); } ``` 在上述代码中,我们定义了一个`popupContent`变量,用于存储Marker标记的悬浮展示内容。我们创建了一个Marker,并在`mouseover`事件中展示Popup,并在`mouseout`事件中隐藏Popup。在展示Popup时,我们通过`setContent`方法设置Popup的内容为`popupContent`变量的值。 通过上述步骤,我们就可以在Vue3上使用Leaflet的Marker标记,实现悬浮展示内容,离开不显示的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值