每天一个JS 小demo之自定义滚动条。主要知识点:事件应用

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
body {
margin: 0;
}
#wrap {
margin: 30px auto;
position: relative;
border: 1px solid #000;
width: 500px;
padding: 0 20px;
height: 400px;
overflow: hidden;
}
#scroll {
position: absolute;
left: 20px;
top: 0;
width: 500px;
}
p {
font: 14px/30px "宋体";
}
#scrollBar {
position: absolute;
right: 0;
top: 0;
width: 12px;
height: 100%;
background: #f1f1f1;
}
#bar {
position: absolute;
top: 0;
left: 0;
width: 12px;
height: 100px;
border-radius: 6px;
background: #000;
cursor: pointer;
}
</style>
</head>
<body>
<div id="wrap">
<div id="scroll">
<h2>关于妙味</h2>
<p>关于妙味妙味课堂是北京妙味趣学信息技术有限公司旗下的IT前端培训品牌,妙味课堂是一支独具特色的IT培训团队,妙味反对传统IT教育枯燥乏味的教学模式,妙味提供一种全新的快乐学习方法!</p>
<p>目前主要针对的是javascript培训,同时还提供了css教程、javascript视频、js特效等,最新推出了外地学员们喜欢的javascript网络课程服务,同时还为处于javascript入门阶段的朋友录制了大量javascript视频,其中涉及了大量javascript基础知识,希望妙味课堂推出的javascript网络培训课程能带给大家更多惊喜。</p>
<h2>妙味讲师:</h2>
<p>妙味课堂的讲师来自中国最具吸引力的IT企业,如人人网、ShopEx等。</p>
<h3>妙味JS课程高级讲师:钟毅</h3>
<p>资深PHP程序员,曾独立开发CMS系统。</p>
<p>对前端开发有极大热情,尤其是在AJAX数据交互方面,</p>
<p>有着复杂而深入的项目实践经验。</p>
<p>钟毅为人性情温和、对教学工作有极大的耐心,</p>
<p>现任妙味课堂JS课程高级讲师。</p>
<h2>关于妙味</h2>
<p>关于妙味妙味课堂是北京妙味趣学信息技术有限公司旗下的IT前端培训品牌,妙味课堂是一支独具特色的IT培训团队,妙味反对传统IT教育枯燥乏味的教学模式,妙味提供一种全新的快乐学习方法!</p>
<p>目前主要针对的是javascript培训,同时还提供了css教程、javascript视频、js特效等,最新推出了外地学员们喜欢的javascript网络课程服务,同时还为处于javascript入门阶段的朋友录制了大量javascript视频,其中涉及了大量javascript基础知识,希望妙味课堂推出的javascript网络培训课程能带给大家更多惊喜。</p>
<h2>妙味讲师:</h2>
<p>妙味课堂的讲师来自中国最具吸引力的IT企业,如人人网、ShopEx等。</p>
<h3>妙味JS课程高级讲师:钟毅</h3>
<p>资深PHP程序员,曾独立开发CMS系统。</p>
<p>对前端开发有极大热情,尤其是在AJAX数据交互方面,</p>
<p>有着复杂而深入的项目实践经验。</p>
<p>钟毅为人性情温和、对教学工作有极大的耐心,</p>
<p>现任妙味课堂JS课程高级讲师。</p>
<h2>妙味讲师:</h2>
<p>妙味课堂的讲师来自中国最具吸引力的IT企业,如人人网、ShopEx等。</p>
<h3>妙味JS课程高级讲师:钟毅</h3>
<p>资深PHP程序员,曾独立开发CMS系统。</p>
<p>对前端开发有极大热情,尤其是在AJAX数据交互方面,</p>
<p>有着复杂而深入的项目实践经验。</p>
<p>钟毅为人性情温和、对教学工作有极大的耐心,</p>
<p>现任妙味课堂JS课程高级讲师。</p>
<h2>妙味讲师:</h2>
<p>妙味课堂的讲师来自中国最具吸引力的IT企业,如人人网、ShopEx等。</p>
<h3>妙味JS课程高级讲师:钟毅</h3>
<p>资深PHP程序员,曾独立开发CMS系统。</p>
<p>对前端开发有极大热情,尤其是在AJAX数据交互方面,</p>
<p>有着复杂而深入的项目实践经验。</p>
<p>钟毅为人性情温和、对教学工作有极大的耐心,</p>
<p>现任妙味课堂JS课程高级讲师。</p>
</div>
<div id="scrollBar">
<div id="bar"></div>
</div>
</div>
<div style="height:500px;background:red"></div>
<script type="text/javascript" src="startmove.js"></script>
<script type="text/javascript">
(function(){
var wrap = document.querySelector(‘#wrap‘);
var scroll = document.querySelector(‘#scroll‘);
var bar = document.querySelector(‘#bar‘);

// 修改滚动条的高度
var scale = wrap.clientHeight/scroll.offsetHeight;
css(bar,"height",wrap.clientHeight*scale);

var maxY = wrap.clientHeight - bar.offsetHeight;
bar.addEventListener(‘mousedown‘, function(e) {
var elY = css(bar,"top");
var startY = e.clientY;
e.preventDefault();
document.addEventListener(‘mousemove‘,move);
document.addEventListener(‘mouseup‘,end);
function move(e){
var nowY = e.clientY;
var y = nowY - startY + elY;
if(y < 0 ){
y = 0;
} else if(y > maxY){
y = maxY;
}

css(bar,"top",y);
css(scroll,"top",-y/scale);
}
function end(){
document.removeEventListener(‘mousemove‘,move);
document.removeEventListener(‘mouseup‘,end);
}
});
mMouseWheel(wrap, function(e){
var y = css(bar,"top");
y -= 10;
if(y < 0 ){
y = 0;
}
css(bar,"top",y);
css(scroll,"top",-y/scale);
},function(e){
var y = css(bar,"top");
y += 10;
if(y > maxY){
y = maxY;
}
css(bar,"top",y);
css(scroll,"top",-y/scale);
});
function mMouseWheel(el, toUp,toDown){
el.addEventListener(‘DOMMouseScroll‘, function(e) {
e.preventDefault();
mouseScroll(e.detail,e);
});
el.addEventListener(‘mousewheel‘, function(e) {
e.preventDefault();
mouseScroll(-e.wheelDelta,e);
});
function mouseScroll(dir,e){
if(dir > 0){
toDown(e);
} else {
toUp(e);
}
}
}
})();
</script>
</body>
</html>

时间: 2024-10-07 07:53:22

每天一个JS 小demo之自定义滚动条。主要知识点:事件应用的相关文章

每天一个JS 小demo之韩雪冬轮播图。主要知识点:html,css布局,对于数组和对象的理解和运用

1 @charset "utf-8"; 2 /* CSS Document */ 3 4 * { padding: 0; margin: 0; } 5 li { list-style: none; } 6 img { border: none; } 7 body { background: #ececec; padding-top: 50px; } 8 9 #automatic { width: 970px; height: 344px; position: relative; mar

每天一个Js小demo之移动端全景图场景实现-全景装修图。主要知识点:css3,旋转角度检测

<!DOCTYPE html><html lang="en"><head><meta name="viewport" content="width=device-width,user-scalable=no" /><meta charset="UTF-8"><title>Document</title><style type="

每天一个JS 小demo之原生数组splice方法书写。主要知识点:锻炼思维逻辑能力,对于数组方法的理解和各种情况的考量

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head> <body><script>/** splice(start, deleteCount, data1, data2, data3...)* */ var arr = ['a', 'b'

每天一个JS 小demo之个人信息添加。主要知识点:DOM操作中的表格操作,节点操作

以下是简易效果: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> table { width: 555px; text-align: center; } table a { text-decora

每天一个JS 小demo之通过键盘方向键操作图片上下左右无缝切换。主要知识点:事件

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title><style type="text/css">.wrap { margin: 150px auto; position: relative; width: 400px; height: 300px; o

每天一个JS 小demo之通过事件委托实现菜单展开及选中特效。主要知识点:事件

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title><style type="text/css">body { margin: 0; background: #f1f1f1;}p { margin: 0;} #dorpDown { position: r

每天一个JS 小demo之日历制作。主要知识点:日期函数和对于函数封装的灵活运用

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> td { text-align: center; } </style></head> <body> <p> <select id="yearS

每天一个JS 小demo之表单排序。主要知识点:DOM中的表单操作,节点操作

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title><script type="text/javascript">window.onload = function(){ var input = document.querySelectorAll('inp

每天一个JS 小demo之邮件删除。主要知识点:事件应用

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title></title><style type="text/css">.wrap { width: 400px; margin: 30px auto;}ul { margin: 0; padding: 0; list-style: none;