左右菜单联动

该代码示例展示了如何使用HTML、CSS和JavaScript创建一个具有侧边栏导航和主要内容区域的页面布局。CSS用于设置页面结构,JavaScript处理内容滚动和侧边栏选中状态的更新,实现实时同步效果。
摘要由CSDN通过智能技术生成
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			html,body{ width: 100%; height: 100%;}
			*{margin: 0; padding: 0; box-sizing:border-box;}
			ul,li{list-style: none; list-style-type: none;}
			.content{display: flex; width: 1000px; height: 100%;  margin: 0 auto;}
			.content .nav{ width: 300px; height: 500px; }
			.content .nav ul li {width: 100%; height: 32px; line-height:32px;  text-align:center; background: #cbefff; margin-bottom: 2px; cursor: pointer;}
			.content .con{ width: calc(100% - 300px);height: 500px; overflow: auto; }
			.content .nav ul li.on{background: #FF0000;}
		</style>
	</head>
	<body>
		<div class="content">
			<div class="nav">
				<ul>
					<li class="on">11111</li>
					<li>22222</li>
					<li>33333</li>
					<li>44444</li>
				</ul>
			</div>
			<div class="con">
				<ul>
					<li id="s1">
						<div style="background-color: #FFF000;">
							11111
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
						</div>
					</li>
					<li id="s2">
						<div style="background-color: #FF0000;">
							22222
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
						</div>
					</li>
					<li id="s3">
						<div style="background-color: aquamarine;">
							33333
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
						</div>
					</li>
					<li id="s4">
						<div style="background-color: blueviolet;">
							44444
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
							<p>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</p>
						</div>
					</li>
				</ul>
			</div>
		</div>
		<script src="jquery3.4.1.min.js"></script>
		<script>
			//右侧内容距顶部距离数组
			let list=[];
			for(let i =0;i<$('.con li').length;i++){
				list.push($('.con li').eq(i).offset().top);
			}
			//左侧菜单点击
			$('.nav li').click(function(){
				var index=$(".nav li").index(this);
				$(".con").scrollTop(list[index]);
			});
			//判断当滚动高度大于右侧内容高度时,设置左侧菜单选中
			$(".con").scroll(function(event){
				let scrollHei=$(".con").scrollTop();//实时滚动高度
				let maxhei=$(this)[0].scrollHeight-$(".con").height();//最大滚动高度
				for(var i =0;i<list.length;i++){
					if(scrollHei==maxhei){//滚动到底部默认最后一个菜单选中
						$('.nav li').eq(i).addClass('on').siblings('li').removeClass('on') 
					}else if(scrollHei>=list[i]){
						$('.nav li').eq(i).addClass('on').siblings('li').removeClass('on') 
					}
				}
			});
		</script>
	</body>
</html>

效果图:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值