`

JS 实现防ScrollBar效果

阅读更多
DIV  滚动条 设置样式不支持所有的浏览器
自制一个滚动条用JS实现滚动的效果
目前支持除IE6以外  支持所有的浏览器(FF、Opera、Google....)

Bar效果源文件
//滚动Bar的ID	滚动DIV的ID	左边Bar	右边Bar
var ScrollBar = function(bar_ID, context_ID, barLeft_ID, barReight_ID,moveBy_PX){
    var _bar_obj;//Bar对象
    var _barLeft_obj//左移对象
    var _barRight_obj;//右移对象
    var _context_obj;//内容对象
    var _isMoveBar = false;//是否为拖动Bar
    var _move_max_number;//Bar移动的最大数值
    var _move_number;//Bar 移动的数据值 
    var _bar_height;//Bar 的基本高度
    var _context_height;//内容的基本高度
    var _bar_base_height;//Bar 基本高度
    var _mouse_curr = 0;//鼠标 点击Bar的位置
    var _bar_curr_top = 0;//鼠标点击Bar 距TOp的距离 
    var _move_bar_maxto;//Bar 移动的最大位置 
    var _bar_px_number;//Bar每个象素代表多少数值
    var _moveByPX=moveBy_PX;//如果是根据象素移动,则移动多少象素
    function _init(){
        //初始化对象
        _bar_obj = $(bar_ID);
        _context_obj = $(context_ID);
        _barLeft_obj = $(barLeft_ID);
        _barRight_obj = $(barReight_ID);
        _context_height = _context_obj.clientHeight;
        _move_number = 0;
        _move_max_number = (_context_obj.scrollHeight / _context_obj.clientHeight) - 1;
        _bar_base_height = _context_obj.clientHeight - _barLeft_obj.clientHeight - _barRight_obj.clientHeight;
        var bar_height_num = _context_obj.clientHeight / _context_obj.scrollHeight;
        //初始化Bar 高度
        _bar_height = ((bar_height_num >= 1 ? 1 : bar_height_num) * _bar_base_height);
        _bar_obj.style.height = _bar_height + "px";
        _move_bar_maxto = _bar_base_height + (_barLeft_obj.clientHeight - _bar_obj.clientHeight);
        _bar_px_number = 1 / _bar_height;
        
        //事件动态注册
        _addEvent(_bar_obj, "mousedown", _barmousedown);
         _addEvent(document, "mouseup", _changeState);
        _addEvent(document, "mousemove", _movebar);
//点击两边的Bar是否 按象素滚动。
if(_moveByPX){
  _addEvent(_barLeft_obj,"click",function(){_barMoveByPx(-_moveByPX)});
          _addEvent(_barRight_obj,"click",function(){_barMoveByPx(_moveByPX)});	
}else{
  _addEvent(_barLeft_obj, "click", function(){_barMoveByNumber(-0.1)});
          _addEvent(_barRight_obj, "click", function(){_barMoveByNumber(0.1)});	
}
    };
function _changeState(){
_isMoveBar = false;
} 
//添加事件 
    function _addEvent(obj, evt, fn){
        if (window.attachEvent) {
            obj.attachEvent("on" + evt, fn)
        }
        else {
            obj.addEventListener(evt, fn, false);
        }
    };
//移动 Context内容 
    function _barMoveByContextTop(){
        _move_number = (_bar_obj.offsetTop - _barLeft_obj.clientHeight) * _bar_px_number;
        _context_obj.scrollTop = _context_height * _move_number;
    };
//根据 比例移动 Bar
    function _barMoveByNumber(num){
        _move_number += num;
        if (_move_number < 0) {
            _move_number = 0;
        }
        if (_move_number > _move_max_number) {
            _move_number = _move_max_number;
        }
        _moveBarTo(_barLeft_obj.clientHeight + (_bar_height * _move_number));
    };
//根据 象素 移动Bar
    function _barMoveByPx(num){
        _moveBarTo(_bar_obj.offsetTop + num);
    };
//根据 ID 取得元素
    function $(id){
        return document.getElementById(id);
    };
//鼠标 移动 (拖动Bar)
    function _movebar(){
        if (_isMoveBar) {
  var event = _mouseCoords(arguments[0] || window.event);
            _moveBarTo(_bar_curr_top + (event.y - _mouse_curr));
        }
    };
//把Bar移动 到某位置 
    function _moveBarTo(m_to){
        if (m_to > _barLeft_obj.clientHeight && m_to < _move_bar_maxto) {
            _bar_obj.style.top = m_to+"px";
        }
_barMoveByContextTop();
    };
  //得到鼠标的坐标
  function _mouseCoords(ev){
   if (ev.pageX || ev.pageY) {
    return {x: ev.pageX,y: ev.pageY};
   }
   return ev;
  }
//鼠标点击
    function _barmousedown(){
 var event = _mouseCoords(arguments[0] || window.event);
        _isMoveBar = true;
        _mouse_curr = event.y;
        _bar_curr_top = _bar_obj.offsetTop;
    };
    _init();
};


//页面调用源文件
//配置信息
        var bar_ID = "bar";//滚动Bar的ID
        var context_ID = "main_value";//滚动DIV的ID
        var barLeft_ID = "bar_left";//左边Bar 
        var barReight_ID = "bar_right"; //右边Bar
        var moveBy_PX;//两边按钮,根据象素移动
        
        function init(){
            ScrollBar(bar_ID, context_ID, barLeft_ID, barReight_ID,moveBy_PX);
        }
		
        window.onload = init


 <div class="Main_cont" id="main_value">
内容。。。。。。
                </div>
               <div class="scrollbar" id="dome">
<img class="track" src="Images/sb.gif" alt="">
<a id="bar" style="background-color:black;" class="arrow-left"></a>	
<img id="bar_left" class="arrow-right" src="Images/sl.gif" alt="">
<img id="bar_right" class="bar" src="Images/sr.gif" alt="">
                </div>

  • 大小: 17 KB
2
0
分享到:
评论
1 楼 namesolong 2010-07-07  
蛮强大的!!

相关推荐

    一个JS实现的滚动条效果

    标题中的“一个JS实现的滚动条效果”指的是使用JavaScript编程语言来创建自定义滚动条的交互体验。在网页设计中,滚动条是用户浏览超出视口内容的重要工具,而默认的浏览器滚动条样式通常比较单一。通过JavaScript,...

    前端项目-jquery.perfect-scrollbar.zip

    主要的JavaScript文件是`src/js/perfect-scrollbar.js`,CSS文件位于`src/css/perfect-scrollbar.css`。在实际项目中,你可能需要将这些文件合并到你的构建流程中,或者通过CDN引入。 在使用过程中,首先确保引入了...

    原生js scrollbars滚动条插件设置浏览器竖直滚动条美化.rar

    原生JS(JavaScript)滚动条插件能够帮助开发者自定义和美化浏览器的默认滚动条,使其符合网站的整体风格。本资源包“原生js scrollbars滚动条插件设置浏览器竖直滚动条美化”提供了一套解决方案,专用于竖直滚动条...

    一款效果很不错的JS滚动条

    标题中的“一款效果很不错的JS滚动条”指的是一个JavaScript实现的滚动条插件或库,它提供了优于浏览器默认滚动条的视觉效果和交互体验。在网页设计中,滚动条是必不可少的元素,尤其是在内容丰富的页面上,它帮助...

    强大的javascript特效

    45. 3D旋转:利用CSS3和JavaScript实现3D空间内的旋转效果。 46. 图片占位符:在真实图片加载前显示占位符,避免空白区域,如placehold.it服务。 47. 触摸事件:针对移动设备,处理触摸手势,如Hammer.js。 48. ...

    New js 滚动条

    因此,"New js 滚动条"通常是利用JavaScript库或者自定义代码来实现更加个性化和动态的滚动效果。 一、JavaScript滚动条的优势 1. 可定制性:JavaScript允许开发者自定义滚动条的样式,颜色,宽度,甚至动画效果,...

    js三级滚动条

    在JavaScript中,"js三级滚动条"通常是指在网页中实现多级嵌套的滚动条效果,例如在导航菜单、树形结构或者长列表中。这样的功能可以增强用户体验,使得大量数据的展示更加有序和易操作。下面我们将深入探讨如何在...

    自定义滚动条jscroll.js修改改进后可动态重载滚动条

    首先,`jscroll.js`是一个JavaScript库,它允许开发者自定义浏览器的默认滚动条样式,提供更美观、符合设计感的滚动效果。原始的`jscroll.js`可能并不直接支持动态重载,即在页面内容改变后更新滚动条的行为。为了...

    我收藏的js滚动条代码

    JavaScript(简称JS)是一种轻量级的解释型编程语言,广泛应用于网页和互联网应用开发,它的强大之处在于能够对网页的动态效果进行控制,其中包括滚动条的定制。滚动条是用户界面中的一个重要元素,用于查看网页或...

    多风格图形滚动条的JS实现

    本文将深入探讨如何利用JavaScript(JS)实现多风格的图形滚动条,以提升网页的视觉效果。 首先,我们要理解JavaScript在网页中的角色。JavaScript是一种客户端脚本语言,它可以在用户的浏览器上运行,用于交互式地...

    JQuery 滚动条

    在网页设计中,jQuery是一个非常流行的JavaScript库,它极大地简化了JavaScript的使用,尤其是对于DOM操作、事件处理和动画效果。"JQuery 滚动条"这一主题主要涉及如何利用jQuery来控制和美化网页中的滚动条。在这个...

    jquery自定义滚动条.rar

    本资源“jquery自定义滚动条.rar”是关于如何利用jQuery实现自定义滚动条效果的一个实例,主要适用于前端开发人员,特别是那些希望在网页中提供独特用户体验的开发者。 首先,滚动条是网页界面中的一个重要组成部分...

    scrollbar:这只是一个旧的 jquery 插件

    这个老版的jQuery插件可能提供了这样的功能,允许开发者通过CSS和JavaScript自定义滚动条的颜色、大小、形状以及动画效果。 在JavaScript领域,这个插件利用了jQuery的强大功能,可能包含以下核心知识点: 1. **...

    jquery 自定义滚动条

    为此,开发者们经常利用JavaScript库如jQuery来实现自定义滚动条,以提升界面的美观性和交互性。本主题我们将深入探讨如何使用jQuery实现自定义滚动条。 首先,jQuery是一个广泛使用的JavaScript库,它简化了DOM...

    js鼠标放置背景滚动变化特效特效代码

    JavaScript(简称JS)是一种轻量级的编程语言,常用于网页...总的来说,"js鼠标放置背景滚动变化特效"是一种提升网页交互性的技术,通过JavaScript和CSS的配合,可以实现丰富的视觉效果,为用户提供更有趣的浏览体验。

    js仿土豆视频滚动菜单

    要实现滚动效果,通常需要使用 JavaScript 或 jQuery。在这个例子中,可能需要监听用户的鼠标滚动事件,然后根据滚动方向调整 `#img` 的 `left` 属性,模拟出滚动的效果。同时,还需要处理边界条件,防止过度滚动。...

    监听滚动切换

    这主要通过CSS的伪元素`::-webkit-scrollbar`和`::-webkit-scrollbar-thumb`来实现,但要注意浏览器兼容性问题。 10. **滚动容器**: - 不止整个页面可以监听滚动,也可以针对特定的DOM元素监听。例如,设置一个...

    PC端滚动条插件

    "PC端滚动条插件"正是为了满足这种需求而诞生的工具,它采用原生JavaScript实现,提供了高度的灵活性和可定制性,让用户能够根据自己的设计风格调整滚动条的样式,同时保持其基本的滚动功能。 滚动条插件的核心功能...

    6thDay:项目第6天端滚动条代码

    "6thDay:项目第6天端滚动条代码"这个标题表明我们正在讨论一个关于JavaScript实现的滚动条功能的项目,这可能是为了优化用户体验,特别是在移动设备或现代网页设计中,自定义滚动条已经成为一种常见的需求。...

Global site tag (gtag.js) - Google Analytics