Jq-滚动条插件写法(二)

简介:

接着上次的未完的部分。

接下是对滚轮的支持。

滚轮大概可以分为这么两类:

1. Firefox

Firefox 需要添加 'DOMMouseScroll' 事件支持,并取值是 使用detail 为正负30。 

2. IE,Opera,Safari,Chrome

而这四类,则直接在 window.onmousewheel = document.onmousewheel = $(dom).onmousewheel = fn

取值是: 正负120, 

虽然这两个取值是不一样的,但含义是一样的,正为向上,负为向下。

所以: 

复制代码
mousewheel:  function(fun){
     return  this.each( function(){
         var that =  this;
            that.delta = 0;  // 滚动方向
        
         if($.browser.msie || $.browser.safari){  // IE Safari 
            that.onmousewheel =  function(){
                that.delta = event.wheelDelta;  //  IE,Opera,Safari,Chrome 使用wheelDelta 只取 +-120
                event.returnValue =  false;
                fun && fun.call(that);  //     
            }
        }  else {  // Firefox
            that.addEventListener('DOMMouseScroll',  function(e){
                that.delta = e.detail > 0 ? -1 : 1;  //  Firefox 使用 detail 只取 +-3
                e.preventDefault();
                fun && fun.call(that);
            },  false);
        }
    });
    
}
复制代码

然后根据,上面总结的特性,添加代码:

复制代码
$(that).mousewheel( function(){
     if( this.delta > 0){  // 如果大于零,则向上,反之向下。
        currentTop -= 15;
    }  else {
        currentTop += 15;
    }
    setScrollTop();
});
复制代码

然后,添加对上下按钮的支持:

View Code

基本代码块就这么多,然后是添加风格修改,

由于css属性选择器覆盖的特性,父类可以覆盖子类的权重。所以提供其它两种风格:

复制代码
/*  简单  */
.jkscroll-wrap .jkscroll-simple
{ width: 12px; background: #f2f2f2; border-left: 1px solid #dadada;}
.jkscroll-wrap .jkscroll-simple .jkscroll-bar-top,.jkscroll-wrap .jkscroll-simple .jkscroll-bar-bot
{ display: none;}
.jkscroll-wrap .jkscroll-simple .jkscroll-bar-mid
{ top: 0; right: -2px; background: #c0c0c0; border: none 0;}
.jkscroll-wrap .jkscroll-simple .hover
{ background: #909090;}
/*  blue  */
.jkscroll-wrap .jkscroll-gray
{ background: url(http://app.soche8.com/show/jscoll/s_bg.gif) repeat-y right 0 #edf7fa;}
.jkscroll-wrap .jkscroll-gray .jkscroll-bar-top,.jkscroll-wrap .jkscroll-gray .jkscroll-bar-bot
{ background: url(http://app.soche8.com/show/jscoll/s_bg.gif);}
.jkscroll-wrap .jkscroll-gray .jkscroll-bar-mid
{ background: url(http://app.soche8.com/show/jscoll/s_bg.gif) repeat-y -45px 0; border: 1px solid #BCBCBC;}
复制代码

由此,在调用时直接可以对样式进行操作,添加 .jkscroll-simple, .jkscroll-gray 两个样式,即可更换风格。

复制代码
var defaults = {
    pattern: 'blue', //默认风格
};
var opts = $.extend(defaults, options);

// 风格设定
if(opts.pattern == 'jkscroll-simple'){
    jkBar.addClass('jkscroll-simple');
    jkBarBtnWidth = 0;
else  if(opts.pattern == 'jkscroll-gray'){
    jkBar.addClass('jkscroll-gray');
}
复制代码

在调用时,提供三种风格的支持: 

$('.jkscroll-wrap').jikeyScrollerBar({
    pattern: 'jkscroll-simple'  // 简版
     // pattern: 'jkscroll-gray' //灰色
     // pattern: 'jkscroll-blue' //蓝色
});

由于想更自动化一点,外部的包装层也使用jquery提供的方向进行动态的添加:

var jkScrollWrap =  this.wrapInner('<div class="jkscroll-cont"></div>'),
    jkScrollCont = jkScrollWrap.append('<div class="jkscroll-bar"><div class="jkscroll-bar-top"></div><div class="jkscroll-bar-mid"></div><div class="jkscroll-bar-bot"></div></div>');

这样的话,只要对内容高度进行限定,外边的滚动条,从DOM结构到js控制都是通过插件来实现,这样增加了插件的灵活性。

那最终的代码如下: 




本文转自豪情博客园博客,原文链接:XXXXXXXX,如需转载请自行联系原作者
目录
相关文章
|
JavaScript 前端开发 索引
js的includes函数
js的includes函数
266 1
|
7天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
6天前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
本文讲解 Prompt 基本概念与 10 个优化技巧,结合学术分析 AI 应用的需求分析、设计方案,介绍 Spring AI 中 ChatClient 及 Advisors 的使用。
315 130
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
|
18天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1330 8
|
5天前
|
监控 JavaScript Java
基于大模型技术的反欺诈知识问答系统
随着互联网与金融科技发展,网络欺诈频发,构建高效反欺诈平台成为迫切需求。本文基于Java、Vue.js、Spring Boot与MySQL技术,设计实现集欺诈识别、宣传教育、用户互动于一体的反欺诈系统,提升公众防范意识,助力企业合规与用户权益保护。
|
17天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1409 87
|
6天前
|
人工智能 Java API
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
本文介绍AI大模型的核心概念、分类及开发者学习路径,重点讲解如何选择与接入大模型。项目基于Spring Boot,使用阿里云灵积模型(Qwen-Plus),对比SDK、HTTP、Spring AI和LangChain4j四种接入方式,助力开发者高效构建AI应用。
312 122
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
|
5天前
|
JavaScript Java 大数据
基于JavaWeb的销售管理系统设计系统
本系统基于Java、MySQL、Spring Boot与Vue.js技术,构建高效、可扩展的销售管理平台,实现客户、订单、数据可视化等全流程自动化管理,提升企业运营效率与决策能力。