第48天:垂直滚动条

简介: 垂直滚动条 1 DOCTYPE html> 2 3 4 5 6 7 .box { 8 width: 300px; 9 height: 500px; 10 ...

垂直滚动条

  1 <!DOCTYPE html>
  2 <html>
  3 <head lang="en">
  4     <meta charset="UTF-8">
  5     <title></title>
  6     <style>
  7         .box {
  8             width: 300px;
  9             height: 500px;
 10             border: 1px solid red;
 11             margin:100px;
 12             position: relative;
 13         }
 14         .content {
 15             height: auto;
 16             padding: 5px 18px 5px 5px;
 17             position: absolute;
 18             top: 0;
 19             left: 0;
 20         }
 21         .scroll {
 22             width: 18px;
 23             height: 100%;
 24             position: absolute;
 25             top: 0;
 26             right: 0;
 27             background-color: #eee;
 28         }
 29         .bar {
 30             width: 100%;
 31             height: 100px;
 32             background-color: red;
 33             cursor: pointer;
 34             border-radius: 10px;
 35             position: absolute;
 36             top: 0;
 37             left: 0;
 38         }
 39     </style>
 40 </head>
 41 <body>
 42 <div class="box" id="box">
 43     <div class="content">
 44      文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分
 45      文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分
 46      文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分
 47      文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分
 48      文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分
 49      文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内     文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分
 50      文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分
 51      文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分文字内容部分
 52 
 53     </div>
 54     <div class="scroll">
 55         <div class="bar"></div>
 56     </div>
 57 </div>
 58 </body>
 59 </html>
 60 <script>
 61     var box = document.getElementById("box");  // 最大的盒子
 62     var content = box.children[0];  // 内容盒子
 63     var scroll = box.children[1];  // 右边盒子
 64     var bar = scroll.children[0];
 65    // 1. 首先先要计算红色滚动条的高度    内容越多,滚动条越短    反之  反之
 66    // 滚动条的长度计算公式:  容器的高度 / 内容的高度 * 容器的高度
 67    // box 是 内容盒子一半  那么红色盒子也要是box盒子的一半
 68     var barHeight = box.offsetHeight / content.offsetHeight * box.offsetHeight;
 69     bar.style.height = barHeight + "px";
 70    // 下面开始 拖动 红色盒子
 71     startScroll(bar,content);  // 第一次参数 拖动的   第二个参数 内容的盒子
 72    function startScroll(obj,target) {
 73        obj.onmousedown = function(event) {
 74            // alert(11);
 75            var event = event || window.event;
 76            var t = event.clientY - this.offsetTop ; // 红色盒子距离 父亲 盒子顶部距离
 77            var that = this;  // 把 bar 对象给 that 对象
 78            document.onmousemove = function(event) {
 79                var event = event || window.event;
 80                var barTop = event.clientY - t ;  // 红色移动的距离
 81                //内容盒子要移动距离
 82                // (内容盒子高度 -  大盒子高度) /  (大盒子高度 - 红色盒子的高度)   * 红色盒子移动的数值
 83                var contentTop = (target.offsetHeight - target.parentNode.offsetHeight) / (target.parentNode.offsetHeight - that.offsetHeight) *  barTop;
 84                // 内容盒子移动的距离
 85                if(barTop < 0)
 86                {
 87                    barTop = 0;
 88                }
 89                else if(barTop > target.parentNode.offsetHeight - that.offsetHeight)
 90                // 大于  大盒子的高度  -  红色盒子的高度
 91                {
 92                    barTop = target.parentNode.offsetHeight - that.offsetHeight ;
 93                }
 94                else
 95                {
 96                    target.style.top = -contentTop + "px";  // 往上走是负值
 97                }
 98                that.style.top = barTop + "px";
 99                window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();   // 防止拖动滑块的时候, 选中文字
100            }
101        }
102            document.onmouseup = function() {
103              document.onmousemove = null;
104        }
105    }
106 </script>

运行效果:

附加:

 

相关文章
|
存储 算法 程序员
【数据结构】C语言实现顺序表万字详解(附完整运行代码)
【数据结构】C语言实现顺序表万字详解(附完整运行代码)
316 0
|
Java 调度
确保 Java 中三个线程 T1、T2、T3 的顺序
【8月更文挑战第22天】
513 4
|
机器学习/深度学习 Java
Java方法的嵌套与递归调用
Java方法的嵌套与递归调用
386 0
|
存储 C++
C++底层原理
C++底层原理
427 0
|
API 开发工具 Android开发
安卓与iOS开发环境对比分析
移动操作系统的两大巨头,安卓和iOS,各自拥有独特的开发环境和工具。本文将深入探讨两者的开发环境差异,从编程语言、开发工具、用户界面设计、API支持以及生态系统五个维度进行比较分析。通过数据支撑和案例研究,揭示各自的优势和局限性,为开发者选择适合自己项目需求的平台提供参考依据。
179 1
|
存储 移动开发 JavaScript
html5手机Web单页应用实践--起点移动阅读
html5手机Web单页应用实践--起点移动阅读
|
程序员 编译器 C语言
C语言库函数
C语言库函数
126 0
【数据结构】线性表之单链表(讲解实现——带动图理解)(1)
单链表 单链表的优点 1.头部和中间插入或删除数据效率高,无需挪动。 2.按照需求申请释放空间,无需担心空间不够用。 单链表的缺点 1.不可以进行下标随机访问。 2.复杂度是O(n) 3.反向遍历困难 单链表是线性表的一种,单链表是链式存储的线性表,不同于单链表,链表在内存空间中不连续,而是由结构体内的next指针下一条数据进行链接🧐
|
弹性计算 缓存 网络协议
阿里云通用算力型u1服务器性能怎么样?CPU处理器网络性能详解
阿里云服务器ECS中云服务器u1通用算力型ECS实例提供均衡的计算、内存和网络资源,CPU内存比1:1、1:2或1:4,处理器采用Intel Xeon(Skylake) Platinum 8163或Intel Xeon(Cascade Lake) Platinum 8269CY
494 0
阿里云通用算力型u1服务器性能怎么样?CPU处理器网络性能详解
|
机器学习/深度学习 人工智能 编解码
麒麟芯片的黑科技:同样的App,在华为手机上就多几种AI能力
各家厂商都有自己的 AI 芯片,但华为率先做到了从芯片到应用,再到云服务的高度协同。
516 1
麒麟芯片的黑科技:同样的App,在华为手机上就多几种AI能力