javascript 实现模拟滚动条,但不支持鼠标滚轮

模拟滚动条做项目的时候,很多时候会用到,所以就写了一个这么模拟滚动条,但是不支持滚轮事件

<!doctype html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title></title>

</head>

<style>

*{padding:0;margin:0;}

.scroll{width:320px;margin:30px auto;}

#boxWrap{width:300px;border:1px solid #ccc;height:400px;overflow: hidden;float:left;position:relative;}

#boxInner{position:absolute;}

#boxInner p{padding:5px; line-height:24px;text-indent:2em;}

#rollWrap{background:#ddd;height:400px;width:15px;float:right;position: relative;}

#rollInner{height:30px;width:100%;background:orange;position:absolute;cursor:pointer;}

</style>

<body>

<div class="scroll">

<div id="boxWrap">

<div id="boxInner">

<p>“瘾”为何物? “瘾”是一种走火入魔的状态,由灵魂而肉体,以至灵肉无间。会过瘾的人对唯物、唯心之辩的态度是付之一笑。过瘾的那一会儿,你就是个小神仙,无所不能,无我无他,无虚无实。

假如说生命有度,把心与身的存在状态从低到高排列成度数,那么“瘾”就是一种超乎正常的生命度。达到这种生命度安全又不碍别人事的方法挺多,但这些方法的假象是受罪。巨大的甜头就在那一点儿苦头后面。比如我酷爱长跑,要的是那终极的舒适,但那舒适的穿越几乎是以垂死的状态去获取的。

写作之于我,也是一种秘密的过瘾。谁都说呀,歇歇吧,写那么苦图什么?过去我和他们见识一样,也认为自己挺悲壮的,整天背对世界,背对许多人间乐事在那里写。现在我发现自己并不是这么回事,其实是在偷着乐。背对世界,把所有杂念排除,把精神凝聚到白热程度,把所有的敏感都唤起来,使感觉丰满到极致。于是乎一些意外的词汇、句子在纸上出来了,它们组成了人物细节、行为,再往前逼自己一步,再越过一点儿不适,就达到了那种极端的舒适,因为自由了,为所欲为了。要说活着,这儿,你就是个小神仙,无所不能,无我无他,无虚无实。

假如说生命有度,把心与身的存在状态从低到高排列成度数,那么“瘾”就是一种超乎正常的生命度。达到这种生命度安全又不碍别人事的方法挺多,但这些方法的假象是受罪。巨大的甜头就在那一点儿苦头后面。比如我酷爱长跑,要的是那终极的舒适,但那舒适的穿越几乎是以垂死的状态去获取的。

写作之于我,也是一种秘密的过瘾。谁都说呀,歇歇吧,写那么苦图什么?过去我和他们见识一样,也认为自己挺悲壮的,整天背对世界,背对许多人间乐事在那里写。现在我发现自己并不是这么回事,其实是在偷着乐。背对世界,把所有杂念排除,把精神凝聚到白热程度,把所有的敏感都唤起来,使感觉丰满到极致。于是乎一些意外的词汇、句子在纸上出来了,它们组成了人物细节、行为,再往前逼自己一步,再越过一点儿不适,就达到了那种极端的舒适,因为自由了,为所欲为了。要说活着,这时的我是活到了淋漓尽致。我试着不写,可是不行,就像没醒透似的。一连多日不写,就是一连多日半打盹儿地过活,新陈代谢都不对了。出去旅行,同行的有丈夫,有时还有其他朋友。我的写作让他们都很头疼,一些计划要根据我的时间表转。他们抱怨,问我几天不写死不死得了。我说不写就是让我身上有一块痒痒,又不让我挠。哪怕早起一两个小时,我也得把过瘾的时间留出来。对我来说,生命一天不达到那个浓度、烈度,没有</p>

</div>

</div>

<div id="rollWrap">

<div id="rollInner"></div>

</div>

</div>

</body>

</html>

<script>

//获取相关的DOM元素

with(document){

var oBoxWrap = getElementById(‘boxWrap‘);

//内容信息

var oBoxInner = getElementById(‘boxInner‘);

var oRollWrap = getElementById(‘rollWrap‘);

//小滑块

var oRollInner = getElementById(‘rollInner‘);

}

//具体使用那个小滑块来控制滚动的距离,那么拖拽的时候就必须是它在动

oRollInner.onmousedown = function(ev){

//事件兼容

var oEvent = ev || event;

//获取当前 滑块的 距离

var disY = oEvent.clientY - oRollInner.offsetTop;

//IE兼容问题,下面是判断浏览器是否支持 setCapture 方法

if (oRollInner.setCapture) {

oRollInner.onmousemove = Move;

oRollInner.onmouseup = MoveUp;

}else{

document.onmousemove = Move;

document.onmouseup = MoveUp;

}

// 移动的函数

function Move(ev){

var oEvent = ev || event;

//定义距离的变量

var t = oEvent.clientY - disY;

//防止滑块超出距离

if (t < 0 ) {

t = 0;

//假如 t 大于 滚动条宽度的时候等于滚动条宽度值

}else if ( t > oRollWrap.offsetHeight - oRollInner.offsetHeight ){

t =  oRollWrap.offsetHeight - oRollInner.offsetHeight;

}

oRollInner.style.top = t +‘px‘;

// t值 除去 滚动框的高度 减去 滚动条的高度 得到 百分值

var scale = t / ( oRollWrap.offsetHeight - oRollInner.offsetHeight );

//里面的内容滚动 ( 外面DIV高度 - 里面DIV高度 ) * 百分值 得到负数

oBoxInner.style.top =  ( oBoxWrap.offsetHeight - oBoxInner.offsetHeight ) * scale +‘px‘;

//显示百分值

document.title = scale;

}

//抬起的函数

function MoveUp(){

this.onmousemove = null;

this.onmouseup = null;

//IE 下 独有的

if (oRollInner.releaseCapture) {

oRollInner.releaseCapture();

};

}

//IE 下  setCapture(); 阻止默认事件

if (oRollInner.setCapture) {

oRollInner.setCapture();

}

return false;

}

</script>

javascript 实现模拟滚动条,但不支持鼠标滚轮

时间: 2024-08-05 19:36:01

javascript 实现模拟滚动条,但不支持鼠标滚轮的相关文章

jQuery 3D圆盘旋转焦点图 支持鼠标滚轮

之前我们分享过很多炫酷实用的jQuery焦点图插件了,今天介绍的这款jQuery焦点图非常特别,所有图片围成一个圆圈,组成一个立体视觉的圆盘,并且可以旋转选择圆盘中的图片.另外,这款jQuery 3D圆盘旋转焦点图插件还支持鼠标滚轮,可以让你更方便地浏览图片. 在线演示源码下载 接下来分析一下实现这款jQuery 3D焦点图的具体过程和源代码,代码主要由HTML.CSS以及jQuery组成,由于JS的参与,相对比较复杂. HTML代码: <ul id="carousel">

支持鼠标滚轮图片自适应的焦点图代码等

支持鼠标滚轮图片自适应的焦点图代码 支持鼠标滚轮图片自适应的焦点图代码,纯JS构建,可用键盘左右键切换图片,倒序回滚,另外鼠标停止响应后可自动播放功能,兼容主流浏览器,懒人图库推荐下载! 使用方法: 1.在head区域引入样式表文件lrtk.css 2.在head区域引入lrtk.js 3.在你的网页中加入<!-- 代码 开始 --><!-- 代码 结束 -->注释区域代码即可 4.修改间隔时间和自动播放倒计时时间,请打开lrtk.js根据注释提示修改 5.去掉首页文字提示后,请注

如何让DbGrid支持鼠标滚轮滚动

如何让DbGrid支持鼠标滚轮滚动 在主窗体上加一个ApplicationEvents控件(控件在Additional面板中), 在它的OnMessage事件中加入下述代码,一切搞定-! procedure TFrm_main_usermanager.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); var hWnd: THandle; aName: array [0..255] of char; begin //

父子窗体滚动条支持鼠标滚轮移动

1 //作者: 415799952 追寻 2 // 513187410 疯狂→delphi 3 // 1746539685 dnyy 4 5 6 //1.设置哪个方向移动 7 procedure TForm1.BitBtn2Click(Sender: TObject); 8 begin 9 if bitbtn2.Caption='纵向滚动' then 10 begin 11 bitbtn2.Caption:='横向滚动'; 12 bitbtn2.Tag:=0; 13 end 14 else 15

js模拟滚动条(不依赖jquery)

转载请注明: TheViper http://www.cnblogs.com/TheViper 当页面中有很多滚动条,它们相互嵌套,很不好看,这时就会模拟滚动条,并给这个滚动条好看的样式,使得页面美观. 模拟滚动条很多时候是去用jquery插件,然后写几行代码就搞定了.不过随着mvvm的快速发展,很多时候都懒得用jquery了,这就是本文的动机,本屌力求用简单的不依赖jquery只依赖mvvm(avalon) api的代码,完成一个简易的滚动条. 要求: 1.鼠标滚轮可以让滚动条工作,界面滚动

如何让VB6代码编辑器垂直滚动条随鼠标滚轮滚动

VB6毕竟是很老的产品了,它的代码编辑器垂直滚动条并不能随鼠标的滚轮而滚动,这个问题会让我们在编写代码的时候觉得很不方便,不过还是有一种方法可以解决这个问题的.    先下载一个微软发布的"VB6IDEMouseWheelAddin.dll"文件(此文件已经上传到百度网盘,网址:http://pan.baidu.com/s/1c06KY7e,或者也可以自己百度一下该文件名下载),然后按照以下的方法进行(注意:此处介绍的是一种通用的方法,适合是32位和64位的系统上使用): 一.  将下

JS鼠标滚轮事件

所有的现代浏览器都支持鼠标滚轮,并且在用户滚动滚轮时触发时间.浏览器通常使用鼠标滚轮滚动或缩放文档,但可以通过取消mousewheel事件来阻止这些默认操作.有一些互用性问题影响滚轮事件,但是编写跨平台的代码依旧可以行.除了Firefox之外的所有浏览器都支持“mousewheel”事件,但Firefox使用“DOMMouseScroll”,而3级DOM事件规范草案建议使用事件名“wheel”替代“mousewheel”. document.body.onmousewheel = functio

javascript动画系列第五篇——模拟滚动条

× 目录 [1]原理介绍 [2]数字加减 [3]元素尺寸[4]内容滚动 前面的话 当元素内容溢出元素尺寸范围时,会出现滚动条.但由于滚动条在各浏览器下表现不同,兼容性不好.所以,模拟滚动条也是很常见的应用.本文将详细介绍滚动条模拟 原理介绍 滚动条模拟实际上和元素模拟拖拽类似.仅仅通过范围限定,使元素只可以在单一方向上拖拽 <div id="box" style="height: 200px;width: 16px;background-color:#F5F5F5;bo

模拟滚动条

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>模拟滚动条</title> <style type="text/css"> body, div { margin:0; padding:0; } .scrollbar { width:300px; height:300px; border:2px solid #