效果图:
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>仿浏览器滚动条</title>
<style type="text/css">
*{margin: 0;padding: 0;}
#demo{width: 300px;height: 500px;border: 1px solid red;margin:100px;position:relative;overflow:hidden;}
p{padding:5px 20px 5px 5px;font-size:26px;position:relative;}
#scrll{width:18px;border-radius:18px;position:absolute;top:0;right:0;background:red;cursor:pointer;}
</style>
</head>
<body>
<div id="demo">
<p id="dp">我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容我是文字内容</p>
<div id="scrll"></div>
</div>
</body>
<script type="text/javascript">
(function(window){
function $(id){
return document.getElementById(id);
};
// 获取对象
var dp = $("dp"),demo = $("demo"),scrll = $("scrll");
// 获取dp的长度
var dpHeight = dp.offsetHeight;
// 获取demo的长度
var demoHeight = demo.offsetHeight;
// 根据比值计算scrll的长度
var scrllHeight = demoHeight * demoHeight / dpHeight ;
// 如果内容长度小于窗口长度,则滚动条不显示
if( dp.offsetHeight < demo.offsetHeight){
scrllHeight = 0;
};
scrll.style.height = scrllHeight + "px";
// 获取滚动条和内容移动距离的比例
var bilu = ( dp.offsetHeight - demo.offsetHeight ) / (demo.offsetHeight - scrll.offsetHeight);
// 滚动条滚动事件
scrll.onmousedown = function(event){
// event兼容性解决
// console.log(demo.offsetTop)
var event = event || window.event;
// 获取鼠标按下的页面坐标
// 滚动条滚动时只有top值改变,所有不需要获取pageX
var pageY = event.pageY || event.clientY + document.documentElement.scrollTop;
// 获取鼠标在scrll内的坐标
var scrllY = pageY - demo.offsetTop - scrll.offsetTop;
// 给document绑定鼠标移动事件
document.onmousemove = function(event){
var event = event || window.event;
// 获取鼠标移动时的坐标
var moveY = event.pageY || event.clientY + document.documentElement.scrollTop;
// 获取滚动条的移动坐标
var trueY = moveY - scrllY - demo.offsetTop ;
// 限制滚动条移动的范围
if( trueY < 0 ){
trueY = 0 ;
};
if( trueY > demo.offsetHeight - scrll.offsetHeight ){
trueY = demo.offsetHeight - scrll.offsetHeight;
};
scrll.style.top = trueY + "px";
//清除选中文字
window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
// 获取文字区域移动的距离
var dpY = trueY * bilu ;
dp.style.top = - dpY + "px";
}
};
// 鼠标抬起清除鼠标移动事件
document.onmouseup = function(){
document.onmousemove = null;
}
})(window)
</script>
</html>
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# 原生js滚动条
# 浏览器滚动条
# JS简单判断滚动条的滚动方向实现方法
# 原生js封装自定义滚动条
# js实现彩色条纹滚动条效果
# js实现简易垂直滚动条
# 基于JavaScript实现自定义滚动条
# JavaScript实现垂直滚动条效果
# js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
# js 简易版滚动条实例(适用于移动端H5开发)
# 我是
# 鼠标
# 滚动条
# 不需要
# 按下
# 绑定
# height
# border
# width
# demo
# padding
# px
# solid
# size
# font
# scrll
# position
# red
# hidden
# overflow
相关文章:
如何零基础开发自助建站系统?完整教程解析
宿州网站制作公司兴策,安徽省低保查询网站?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
制作电商网页,电商供应链怎么做?
如何快速辨别茅台真假?关键步骤解析
详解jQuery停止动画——stop()方法的使用
PHP正则匹配日期和时间(时间戳转换)的实例代码
C#怎么使用委托和事件 C# delegate与event编程方法
移民网站制作流程,怎么看加拿大移民官网?
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
建站之星安装后如何配置SEO及设计样式?
如何在云指建站中生成FTP站点?
建站主机与服务器功能差异如何区分?
定制建站哪家更专业可靠?推荐榜单揭晓
Bpmn 2.0的XML文件怎么画流程图
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
建站之星24小时客服电话如何获取?
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
如何在阿里云购买域名并搭建网站?
阿里云网站制作公司,阿里云快速搭建网站好用吗?
清除minerd进程的简单方法
如何快速搭建自助建站会员专属系统?
已有域名和空间,如何快速搭建网站?
图册素材网站设计制作软件,图册的导出方式有几种?
简历在线制作网站免费,免费下载个人简历的网站是哪些?
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
网站制作话术技巧,网站推广做的好怎么话术?
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
建站之星官网登录失败?如何快速解决?
网站制作知乎推荐,想做自己的网站用什么工具比较好?
建站之星如何快速解决建站难题?
建站主机解析:虚拟主机配置与服务器选择指南
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
如何在七牛云存储上搭建网站并设置自定义域名?
如何快速搭建高效可靠的建站解决方案?
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
制作公司内部网站有哪些,内网如何建网站?
建站之星伪静态规则如何设置?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
,如何利用word制作宣传手册?
网站制作壁纸教程视频,电脑壁纸网站?
宁波免费建站如何选择可靠模板与平台?
如何用好域名打造高点击率的自主建站?
香港服务器WordPress建站指南:SEO优化与高效部署策略
如何在万网ECS上快速搭建专属网站?
智能起名网站制作软件有哪些,制作logo的软件?
沈阳制作网站公司排名,沈阳装饰协会官方网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。