自定义滚动条
来源:互联网 发布:淘宝怎么搜有图评价 编辑:程序博客网 时间:2024/05/23 16:05
这个和拖拽元素的原理一样,只是把拖拽范围限制在一个制定的父级内,就变成了滚动条。然后再获取出滑动系数,就可以通过滚动条控制其它元素的变化了.
例子:
HTML代码:
<label for="">横滚动条:<input type="text" id="text1" /></label><label for="">竖滚动条:<input type="text" id="text2" /></label> <div id="div1"> <div id="div2"></div> </div> <div id="div3"> <div id="div4"></div> </div>
CSS代码:
*{margin:0;padding:0;} #div1{width:500px;height: 30px;position: relative;margin:10px auto;background: #eeeeee;} #div2{width:30px;height: 30px;position: absolute;left: 0;top:0;background: red;} #div2:hover{background: orangered;} #div3{width:30px;height: 500px;position: relative;left:290px;top:-39px;background: #eeeeee;} #div4{width:30px;height: 30px;position: absolute;left: 0;top:0;background: red;} #div4:hover{background: orangered;}
JS代码:
window.onload = function () { var oDiv1 = document.getElementById('div1'); var oDiv2 = document.getElementById('div2'); var oDiv3 = document.getElementById('div3'); var oDiv4 = document.getElementById('div4'); var oText1 = document.getElementById('text1'); var oText2 = document.getElementById('text2'); oDiv2.onmousedown = function (ev) { scroll(this,oDiv1,ev, function (scale) { oText1.value = scale; }); return false; }; oDiv4.onmousedown = function (ev) { scroll(this,oDiv3,ev, function (scale) { oText2.value = scale; }); return false; } }; //滚动条函数,最后一个fun函数是为了获取滚动条的滑动系数 function scroll(objSlid,objParent,ev,fun)//这个ev是obj的鼠标事件 { var pos = getPos(ev); var disX = pos.x - objSlid.offsetLeft; var disY = pos.y - objSlid.offsetTop; document.onmousemove = function (ev) //这个ev是document的鼠标事件 { var pos = getPos(ev); //获取鼠标位置 var l = pos.x - disX; //(l,t)是元素左上角的坐标 var t = pos.y - disY; //不让元素移出父级 if(l<0) l = 0; else if(l > objParent.offsetWidth - objSlid.offsetWidth) l = objParent.offsetWidth - objSlid.offsetWidth; if(t<0) t = 0; else if(t > objParent.offsetHeight - objSlid.offsetHeight) t = objParent.offsetHeight - objSlid.offsetHeight; //移动元素 objSlid.style.left = l + 'px'; objSlid.style.top = t + 'px'; var scale = 0; if(objSlid.offsetHeight == objParent.offsetHeight) //横滚动条 scale = (1/(objParent.offsetWidth - objSlid.offsetWidth))*l; else //竖滚动条 scale = (1/(objParent.offsetHeight - objSlid.offsetHeight))*t; if(fun) fun(scale); //把滑动系数传进去 }; document.onmouseup = function () { document.onmousemove = null; //停止移动 document.onmouseup = null; //不需要的函数赋值为null if(objSlid.releaseCapture) //解锁 objSlid.releaseCapture(); }; if(objSlid.setCapture) //让所有的事件响应都锁定到obj上 objSlid.setCapture(); } //获取位置 function getPos(ev) { var oEvent = ev||event; //兼容事件 //如果有滑动条的话,要加上滑了的位置,因为oEvent.clientX是可视区的坐标. var scrollTop = document.documentElement.scrollTop||document.body.scrollTop; var scrollLeft = document.documentElement.scrollLeft||document.body.scrollLeft; return {x:oEvent.clientX + scrollLeft,y:oEvent.clientY + scrollTop};//返回一个JSON数组 }
0 0
- 自定义BODY滚动条
- 自定义滚动条
- 自定义datagridview滚动条
- 自定义滚动条
- JPanel自定义滚动条
- 自定义网页滚动条
- 自定义滚动条
- 自定义滚动条插件
- 自定义滚动条
- 自定义滚动条
- css3 自定义滚动条
- 滚动条的自定义
- 拖拽+自定义滚动条
- 自定义滚动条样式
- 自定义滚动条
- 自定义View 滚动条
- 自定义滚动条
- 自定义滚动条样式
- 构造方法__construct()与析构方法__destruct()
- C++实现12时制时钟
- Android 进程间通信
- hiho-102周 搜索五·数独
- 6-2CSS样式的优势
- 自定义滚动条
- Linux 系统中的硬链接与软链接
- startActivityForResult用法详解
- 重温5 UI开发
- JAVA中实现线程相互调用或回调
- LOOP,LEAVE 语句
- Mybatis批量插入oracle
- Spring AOP切面实现:示例
- CodeForces 679B(Bear and Tower of Cubes)