自制一个滚动条

参考文章:【https://blog.csdn.net/u014205965/article/details/45972803

 1 <html>
 2     <head>
 3         <title>自定义滚动条</title>
 4         <style>
 5             #parent{
 6                 width: 400px;
 7                 height: 30px;
 8                 background: lightgrey;
 9                 position: relative;
10             }
11 
12             #child{
13                 width: 30px;
14                 height: 30px;
15                 background: greenyellow;
16                 position: absolute;
17             }
18             #box {
19                 width: 0;
20                 height: 0;
21                 background: blueviolet;
22             }
23         </style>
24     </head>
25     <body>
26         <div id="parent">
27             <div id="child"></div>
28         </div>
29         <div id="box"></div>
30         <script>
31 
32             window.onload=function() {
33                 var oParent = document.getElementById('parent');
34                 var oChild = document.getElementById('child');
35                 var disX = 0;
36                 oChild.onmousedown = function (ev) {
37                     var ev = ev || window.event;
38                     disX = ev.clientX - oChild.offsetLeft;
39                     document.onmousemove = function (ev) {
40                         var ev = ev || window.event;
41                         var oBox = document.getElementById('box');
42                         // 限制小Div拖动范围
43                         var L = ev.clientX - disX;
44 
45                         if (L<0) {
46                             //因为小div是相对大div定位的,所以当拖到大div的最左边的时候,小div的left就为0了
47                             L = 0;
48                         }
49 
50                         if (L > oParent.offsetWidth - oChild.offsetWidth) {
51                             L = oParent.offsetWidth - oChild.offsetWidth;
52                         }
53 
54                         // 定义一个滚动的比例,因为L的大小是由上面的判断语句决定的,所以scale需要定义在判断语句下面,定义在上面会出问题
55                         var scale = L/(oParent.offsetWidth - oChild.offsetWidth);
56                         oChild.style.left = L + 'px';
57                         oBox.style.width = scale * 300 + 'px';
58                         oBox.style.height = scale * 300 + 'px';
59                         
60                     }
61                     document.onmouseup = function () {
62                         document.onmousemove = null;
63                         document.onmouseup = null;  
64                     }
65                     return false;
66                 }
67             }
68         </script>
69     </body>
70 </html>

 

posted @ 2020-01-22 01:48  Bruce_Cheung  阅读(183)  评论(0编辑  收藏  举报