js实现水平滑动条和竖直滑动条

 最近在做练手项目时候,需要用到滑动条,所以就稍微研究了一下。

首先来看水平滑动条,效果图如下:

 

代码如下:

<html>
	<head>
		<meta charset="UTF-8">
		<title>水平滑动条</title>
		<style>
			* {
				margin: 0;
				padding: 0;
			}

			.scroll {
				margin: 100px;
				width: 500px;
				height: 5px;
				background: #ccc;
				position: relative;
			}

			.bar {
				width: 10px;
				height: 20px;
				background: #369;
				position: absolute;
				top: -7px;
				left: 0;
				cursor: pointer;
			}
			p{
				margin-left: 100px;
			}
		</style>
	</head>
	<body>
		<div class="scroll" id="scroll">
			<div class="bar" id="bar">
			</div>
		</div>
		<p></p>
		<script>
			//获取元素
			var scroll = document.getElementById('scroll');
			var bar = document.getElementById('bar');
			var ptxt = document.getElementsByTagName('p')[0];
			bar.onmousedown = function(event) {
				var event = event || window.event;
				//页面事件的X减去当前相对于最近的祖先定位元素
				var x = event.clientX - this.offsetLeft;
				document.onmousemove = function(event) {
					var event = event || window.event;
					var left = event.clientX - x;
					if (left < 0)
						left = 0;
					else if (left > scroll.offsetWidth - bar.offsetWidth) {
						left = scroll.offsetWidth - bar.offsetWidth;
					}
					//改变滑块的left
					bar.style.left = left + "px";
					ptxt.innerHTML = "当前滑块的移动的百分比:" + parseInt(left / (scroll.offsetWidth - bar.offsetWidth) * 100) + "%";
					//防止选择内容
					window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
				}

			}
			//当鼠标弹起的时候,不做任何操作
			document.onmouseup = function() {
				document.onmousemove = null;
			}
		</script>
	</body>
</html>

竖直滑动条效果图如下: 

代码如下:

<html>
	<head>
		<meta charset="UTF-8">
		<title>竖直滑动条</title>
		<style>
			* {
				margin: 0;
				padding: 0;
			}
			.scroll{
				margin: 100px;
				width: 5px;
				height: 320px;
				background: #ccc;
				position: relative;
			}

			.bar {
				width: 15px;
				height: 5px;
				background: #369;
				position: absolute;
				top: 0px;
				left: -5;
				cursor: pointer;
			}
			p{
				margin-left: 100px;
			}
		</style>
	</head>
	<body>
		<div class="scroll" id="scroll">
			<div class="bar" id="bar">
			</div>
		</div>
		<p></p>
		<script>
			//获取元素
			var scroll = document.getElementById("scroll");
			var bar = document.getElementById("bar");
			var ptxt = document.getElementsByTagName('p')[0];
			//添加事件
			bar.onmousedown = function(event) {
				var event = event || window.event;
				//页面事件的Y减去当前相对于最近的祖先定位元素
				var y = event.clientY - this.offsetTop;
				// 拖动需要写到down里面
				document.onmousemove = function(event) {
					var event = event || window.event;
					//获取移动的距离
					var top = event.clientY - y;
					if (top < 0){
						top = 0;
					}
					else if (top > scroll.offsetHeight - bar.offsetHeight){
						top = scroll.offsetHeight - bar.offsetHeight;
					}
					//改变滑块的top
					bar.style.top = top + "px";
					//按照百分比得到当前滑动的距离
					ptxt.innerHTML = "当前滑块的移动的百分比:" + parseInt(top/(scroll.offsetHeight - bar.offsetHeight) * 100) + "%";
					//防止选择内容
					window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
				}
			}
			//当鼠标弹起的时候,不做任何操作
			document.onmouseup = function() {
				document.onmousemove = null; 
			}
			
		</script>
	</body>
</html>

这里之所以加入移动百分比的展示效果,主要是考虑到后续如果需要对接后台的数据就可以达到动态控制的目的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值