element 表格组件实现右键菜单

在 elment 表格组件上实现右键菜单功能

  • demo 示例:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>右键菜单</title>
	</head>
	<!-- import CSS -->
	<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
	<style>
		.menuDiv {
			display: none;
			position: absolute;

		}

		.menuUl {
			height: auto;
			width: auto;
			font-size: 14px;
			text-align: left;
			border-radius: 4px;
			border: none;
			background-color: #ffffff;
			color: #606266;
			list-style: none;
			border: 1px solid #ebeef5;
			padding: 5px;

		}

		.menuUl li {
			height: 35px;
			line-height: 35px;
			padding: 0 10px;
			cursor: pointer;
			border-bottom: 1px solid rgba(255, 255, 255, 0.47);
		}

		.menuUl li:hover {
			display: block;
			background-color: #ecf5ff;
			color: #7abbff;
		}
	</style>
	<body>
		<div id="app">
			<el-table highlight-current-row :data="tableData" @row-click="clickRow" @row-contextmenu="right"
				style="width: 100%">
				<el-table-column prop="date" label="日期" width="180">
				</el-table-column>
				<el-table-column prop="name" label="姓名" width="180">
				</el-table-column>
				<el-table-column prop="address" label="地址">
				</el-table-column>
			</el-table>


			<div id="menu" class="menuDiv">
				<ul class="menuUl">
					<li v-for="(item, index) in menus" :key="index" @click.stop="infoClick(item)">
						<i :class="item.icon"></i> {{ item.name }}
					</li>
				</ul>
			</div>
		</div>



		<script src="https://unpkg.com/vue@2/dist/vue.js"></script>
		<!-- import JavaScript -->
		<script src="https://unpkg.com/element-ui/lib/index.js"></script>
		<script>
			new Vue({
				el: '#app',
				data: function() {
					return {
						visible: false,
						tableData: [{
							date: '2016-05-02',
							name: '王小虎',
							address: '上海市普陀区金沙江路 1518 弄'
						}, {
							date: '2016-05-04',
							name: '王小虎',
							address: '上海市普陀区金沙江路 1517 弄'
						}],
						menus: [{
								name: "菜单一",
								operType: 1,
								icon: "el-icon-upload2"
							},
							{
								name: "菜单二",
								operType: 2,
								icon: "el-icon-download"
							},
						],
					}
				},
				methods: {
					right(row, column, event) {
						console.log(row);
						console.log(column);
						console.log(event);
						event.preventDefault();
						let menu = document.querySelector("#menu");
						// 根据事件对象中鼠标点击的位置,进行定位
						menu.style.left = event.clientX + "px";
						menu.style.top = event.clientY + "px";
						// 改变自定义菜单的隐藏与显示
						menu.style.display = "block";
						menu.style.zIndex = 1000;

					},
					clickRow(row, column, event) {
						let menu = document.querySelector("#menu");
						menu.style.display = "none";
					},
					// 右击自定义菜单的点击事件
					infoClick(item) {
						console.log(item); 
						// 要做的事情

						let menu = document.querySelector("#menu");
						menu.style.display = "none";
					},
				}
			})
		</script>
	</body>
</html>
Element表格右键菜单是指在使用Element UI框架时,为表格添加自定义的右键菜单功能。右键菜单可以提供一些常用的操作,如编辑、删除、复制等,提升用户体验。以下是实现Element表格右键菜单的步骤: 1. **引入Element UI**: 首先,需要在项目中引入Element UI框架。 2. **创建表格**: 使用Element UI的`<el-table>`组件创建表格,并在需要右键菜单的单元格上添加自定义事件。 3. **添加右键菜单**: 使用HTML和CSS创建一个自定义的右键菜单,并使用JavaScript控制其显示和隐藏。 4. **绑定事件**: 为表格单元格绑定`contextmenu`事件,当用户右键点击单元格时,显示自定义的右键菜单。 以下是一个简单的示例代码: ```html <template> <div> <el-table :data="tableData" @contextmenu.native.prevent="handleContextMenu($event, row, column, $index)" style="width: 100%"> <el-table-column prop="date" label="日期" width="180"></el-table-column> <el-table-column prop="name" label="姓名" width="180"></el-table-column> <el-table-column prop="address" label="地址"></el-table-column> </el-table> <div v-show="showMenu" :style="{ top: menuTop + 'px', left: menuLeft + 'px' }" class="context-menu"> <ul> <li @click="editRow">编辑</li> <li @click="deleteRow">删除</li> <li @click="copyRow">复制</li> </ul> </div> </div> </template> <script> export 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 弄' } ], showMenu: false, menuTop: 0, menuLeft: 0, currentRow: null, currentColumn: null }; }, methods: { handleContextMenu(event, row, column, index) { this.showMenu = true; this.menuTop = event.clientY; this.menuLeft = event.clientX; this.currentRow = row; this.currentColumn = column; }, editRow() { // 编辑行的逻辑 this.showMenu = false; }, deleteRow() { // 删除行的逻辑 this.showMenu = false; }, copyRow() { // 复制行的逻辑 this.showMenu = false; } } }; </script> <style> .context-menu { position: fixed; background: #fff; border: 1px solid #ccc; box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.2); z-index: 1000; } .context-menu ul { list-style: none; margin: 0; padding: 0; } .context-menu li { padding: 5px 10px; cursor: pointer; } .context-menu li:hover { background: #eee; } </style> ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值