js控制横向滚动条跟鼠标滚轮绑定

26 篇文章 0 订阅
17 篇文章 2 订阅

 

<template>
	<div id="div">
		<!-- 左边元素 -->
		<div id="div1">
			字母和数字键的键码值(keyCode)
			按键 键码 按键 键码 按键 键码 按键 键码
			A 65 J 74 S 83 1 49
			B 66 K 75 T 84 2 50
			C 67 L 76 U 85 3 51
			D 68 M 77 V 86 4 52
			E 69 N 78 W 87 5 53
			F 70 O 79 X 88 6 54
			G 71 P 80 Y 89 7 55
			H 72 Q 81 Z 90 8 56
			I 73 R 82 0 48 9 57
		</div>
		<!-- 中间黄色拖动元素 -->
		<div id="div2" @mousedown="mousedown"></div>
		<!-- 右边元素 -->
		<div id="div3">
			<!-- tab页 -->
			<el-tabs class="tabRight" v-model="activeName" type="card" @tab-click="handleClick">
				<el-tab-pane v-for="(value,key,index) in tabData" :label="key" :name="key">
					{{value.key}}:{{value.value}}
				</el-tab-pane>
			</el-tabs>
		</div>
	</div>
</template>

<script>
	export default {
		data() {
			return {
				activeName: '',
				tabData: {},
			};
		},
		mounted() {
			// 获取后台tab页数据可从后台查询
			this.getTabList();
			// tab页横向滚动条绑定滚轮
			let tabContainer = document.querySelector(".tabRight .el-tabs__nav-scroll")
			tabContainer.addEventListener("wheel",(e) =>{
				e.preventDefault();
				tabContainer.scrollLeft += e.deltaY
			})
		},
		methods: {
			getTabList() {
				// 获取后台tab页数据可从后台查询
				this.tabData = {
					"用户管理": {
						"key": "用户管理",
						"value": "用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理用户管理"
					},
					"配置管理": {
						"key": "配置管理",
						"value": "配置管理"
					},
					"角色管理": {
						"key": "角色管理",
						"value": "角色管理"
					},
					"定时任务补偿": {
						"key": "定时任务补偿",
						"value": "定时任务补偿"
					},
					"定时任务补偿1": {
						"key": "定时任务补偿",
						"value": "定时任务补偿"
					},
					"定时任务补偿2": {
						"key": "定时任务补偿",
						"value": "定时任务补偿"
					},
					"定时任务补偿3": {
						"key": "定时任务补偿",
						"value": "定时任务补偿"
					},
					"定时任务补偿4": {
						"key": "定时任务补偿",
						"value": "定时任务补偿"
					},
				}
				// 获取到数据后默认选择第一个
				for (var tab in this.tabData) {
					this.activeName = tab;
					break;
				}
			},
			handleClick(tab, event) {
				console.log(tab, event);
			},
			// 中间拖动黄色的调整两边大小
			mousedown(e) {
				// 父级框的宽度
				let divWidth = document.getElementById("div").clientWidth;
				//添加鼠标移动事件
				document.onmousemove = function(e) {
					// 防止链接打开 URL
					e.preventDefault();
					// e.clientX是鼠标指针相对于浏览器页面(或客户区)的水平坐标
					// 可以理解为鼠标距离屏幕左侧的距离
					// 当鼠标距离左面大于300和鼠标位置小于父级总长度-220
					//就是控制左面和右边两个的最小宽度
					if (e.clientX > 300 && e.clientX < (divWidth - 220)) {
						//设置左面的大小
						document.getElementById("div1").style.width = (e.clientX + "px");
						//设置右边的大小
						document.getElementById("div3").style.width = ((divWidth - e.clientX - 10) + "px");
					}
				}
				document.onmouseup = function(e) {
					document.onmousemove = null;
					document.onmouseup = null;
				}
			}
		}
	}
</script>
<!-- scoped="scoped" -->
<style>
	
	/* tab页显示滚动条隐藏箭头 */
	.tabRight .el-tabs__nav-scroll{
		overflow: auto;
	}
	.tabRight .el-tabs__nav-prev{
		display: none;
	}
	.tabRight .el-icon-arrow-left{
		display: none;
	}
	
	#div {
		height: 600px;
		background-color: #55aaff;
	}
	#div>div {
		float: left;
	}
	#div1 {
		height: 500px;
		width: 80%;
		background-color: #00ff00;
	}
	#div2 {
		height: 500px;
		width: 10px;
		background-color: #ffff00;
		cursor: w-resize;
	}
	#div3 {
		height: 500px;
		width: calc(20% - 10px);
		background-color: #aa00ff;
	}
</style>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值