js 写一个滚动条

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>自己练习写一个滚动条</title>    <style>        *{            margin:0;            padding: 0;        }        .scroll{            margin:200px;            width:500px;            height:5px;            background: #ccc;            position: relative;        }        .bar{            width:10px;            height:20px;            background: #369369;            position: absolute;            top:-7px;            left:0;            cursor: pointer;        }        .mask{            position: absolute;            left:0;            top:0;            background: #369369;            width:0px;            height:5px;        }    </style></head><body>    <div class="scroll" id="scroll">        <div class="bar" id="bar"></div>        <div class="mask" id="mask"></div>    </div>    <p></p>    <script>        window.onload = function(){            var scroll = document.getElementById(‘scroll‘);            var bar = document.getElementById(‘bar‘);            var mask = document.getElementById(‘mask‘);            var ptxt = document.getElementsByTagName(‘p‘)[0];            bar.onmousedown = function (event){                // Event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。                // 事件通常与函数结合使用,函数不会在事件发生前被执行!                var event = event || window.event;                //相对于浏览器的x轴距离,,,      相对于父元素的左内边距的距离                // 获取到点击轴的距离屏幕的距离                var leftVal = event.clientX - this.offsetLeft;                console.log(leftVal);                var that = this;                //拖动                document.onmousemove = function(event){                    var event = event || window.event;                    // 获取移动的x轴距离,可能是正值,负值,                    var barleft = event.clientX-leftVal;                    //console.log(barleft);                    console.log(scroll.offsetWidth);                    console.log(bar.offsetWidth)                    if(barleft<0){                        barleft = 0;                        //offsetWidth:元素在水平方向上占据的大小,无单位                    }else if(barleft > scroll.offsetWidth - bar.offsetWidth){                        barleft = scroll.offsetWidth - bar.offsetWidth;

}                    mask.style.width = barleft+‘px‘;                    that.style.left = barleft+‘px‘;                    ptxt.innerHTML = ‘已经走啦‘ + parseInt(barleft/(scroll.offsetWidth-bar.offsetWidth)*100)+‘%‘;                    //获取光标的当前位置,这个是兼容写法,后面的是ie8及以下的,

window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();                }            };            document.onmouseup = function(){                document.onmousemove = null; //弹起鼠标不做任何操作            }        }    </script></body></html>



原文地址:https://www.cnblogs.com/lieaiwen/p/9547774.html

时间: 2024-11-10 11:51:42

js 写一个滚动条的相关文章

分享:计算机图形学期末作业!!利用WebGL的第三方库three.js写一个简单的网页版“我的世界小游戏”

这几天一直在忙着期末考试,所以一直没有更新我的博客,今天刚把我的期末作业完成了,心情澎湃,所以晚上不管怎么样,我也要写一篇博客纪念一下我上课都没有听,还是通过强大的度娘完成了我的作业的经历.(当然作业不是百度来的,我只是百度了一些示例代码的意思,怎么用!算了,越解释万一越黑呢!哈哈O(∩_∩)O哈哈~) ----------------------------------------------------------------分界线------------------------------

前端用js写一个函数实现KB、MB、GB、TB单位转换

需求:用js写一个函数实现KB.MB.GB.TB单位转换 实现思路: 当函数参数值小于等于1000时,参数除以1000,即可得到最小单位kb,赋值给变量_integer:当_integer值大于1000时,kb值除以1000,即可得到mb,赋值给变量_integer:以此类推. 将单位保存在数组中, 将转换后的值与单位进行拼接即可得到转换后的单位. 代码展示: <!DOCTYPE html> <html lang="en"> <head> <m

HTML+JS 写一个 个人博客

HTML+JS 写一个 个人博客(初学版) HTML+JS 写一个 个人博客(初学版) 自己琢磨了两三天,算是把HTML入门了吧,然后就想着用这点知识写一个个人主页,然后一下午的时间写完了. 先不看代码,说说思路: 第一步:就是构思,一个网页的展示怎么才好看?!!站在一个老男人的角度,那远远是不能的,,, 1.标题 2.菜单栏(加个超链接) 3.展示页面(图片轮播) 第二步:小标题展示页面. 第三步:代码实现.(说了一堆废话)  代码 Jscript实现图片轮播.(很简单,一看就懂) <scri

js写一个通讯录

模拟通讯录列表功能 我们手机上面的通讯录列表里面都有根据右侧的字母跳滚动到该字母的第一个名单地方. 于是我把这个功能拆分成两个功能区思考: 第一个是如何把这些名字的的汉字首字母提取出来,并且把相同字母的汉字归类,最后显示成列表. 第二是右侧字母导航,它需要一直固定在右侧,并且我按一个字母,屏幕最中间会弹出一个字母方框,代表我选中了这个字母. 我首先去实现第一个问题,如何提取名字中第一个汉字的首字母? 我去尝试过许多种方法,其中尝试过使用localeCompare(),我也成功的排序了,但是我发现

[NodeJS]使用Node.js写一个简单的在线聊天室

声明:教程来自<Node即学即用>.源代码案例均出自此书.博文仅为个人学习笔记. 第一步:创建一个聊天server. 首先,我们先来写一个Server: var net = require('net') var chatServer = net.createServer() chatServer.on('connection',function(client){ client.write('connection~~~\n') client.end() }) chatServer.listen(

用js写一个鼠标坐标实例

HTML代码 写一个div来作为鼠标区域 div中写一个span显示坐标信息 <body> <div id=""> <span></span> </div> </body> 给div和span增加样式并定位 <style type="text/css"> div{ position: relative;/* 定位信息 */ background-color: #398439; /*

Vue.js写一个SPA登录页面的过程

技术栈 vue.js 主框架 vuex 状态管理 vue-router 路由管理 一般过程 在一般的登录过程中,一种前端方案是: 检查状态:进入页面时或者路由变化时检查是否有登录状态(保存在cookie或者本地存储的值): 如果有登录态则查询登录信息(uid,头像等...)并保存起来:如果没有则跳转到登录页: 在登录页面(或者登录框),校检用户输入信息是否合法: 校检通过后发送登录请求:校检不成功则反馈给用户: 登录成功则从后端数据中取出session信息保存登录状态(可能需要跳转);登录不成功

怎么用js写一个类似于百度输入框的搜索插件

PS:这次做的这个小插件只是在前端实现,并没有经过数据库.需要用到的的框架:1.bootstrap.css的样式 2.Vue.js 最终效果如下: JS部分: $(window).click(function () { content_data.is_selected = 'N';});var content_data = { blog_classify: '',//分类搜索框 classify_data: [//所有分类 {name: "宠物技能培养"}, {name: "

用JS写一个计算器

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ