首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用jQuery在拖动时滚动页面

使用jQuery在拖动时滚动页面
EN

Stack Overflow用户
提问于 2013-11-02 14:59:49
回答 6查看 75K关注 0票数 34

我试过使用kinetic.js和下面的代码,但是当我在IE11中尝试时,每次滚动时它都会跳到顶部:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$("html").kinetic();

我想让页面在平板电脑和IE10和11上可滚动,这样用户就可以像在移动设备上那样向上推送页面向下滚动。

我如何才能在纯JS或jQuery中做到这一点,而不是跳到顶部呢?

EN

回答 6

Stack Overflow用户

发布于 2014-03-13 09:46:54

我只是想补充一下。使用Rory的代码,我进行了水平滚动。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var clicked = false, base = 0;

$('#someDiv').on({
    mousemove: function(e) {
        clicked && function(xAxis) {
            var _this = $(this);
            if(base > xAxis) {
                base = xAxis;
                _this.css('margin-left', '-=1px');
            }
            if(base < xAxis) {
                base = xAxis;
                _this.css('margin-left', '+=1px');
            }
        }.call($(this), e.pageX);
    },
    mousedown: function(e) {
        clicked = true;
        base = e.pageX;
    },
    mouseup: function(e) {
        clicked = false;
        base = 0;
    }
});
票数 10
EN

Stack Overflow用户

发布于 2015-12-01 21:27:14

此代码将在水平和垂直鼠标拖动滚动上工作。这相当简单。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var curYPos = 0,
    curXPos = 0,
    curDown = false;

window.addEventListener('mousemove', function(e){ 
  if(curDown === true){
    window.scrollTo(document.body.scrollLeft + (curXPos - e.pageX), document.body.scrollTop + (curYPos - e.pageY));
  }
});

window.addEventListener('mousedown', function(e){ curDown = true; curYPos = e.pageY; curXPos = e.pageX; });
window.addEventListener('mouseup', function(e){ curDown = false; }); 
票数 9
EN

Stack Overflow用户

发布于 2017-02-11 08:40:06

基于Rory McCrossan的想法,用AngularJS2实现。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import {Directive, ElementRef, OnDestroy, Input} from "@angular/core";

declare var jQuery: any;

@Directive({
    selector: '[appDragScroll]'
})
export class DragScrollDirective implements OnDestroy {

    @Input() scrollVertical: boolean = true;
    @Input() scrollHorizontal: boolean = true;

    private dragging = false;
    private originalMousePositionX: number;
    private originalMousePositionY: number;
    private originalScrollLeft: number;
    private originalScrollTop: number;

    constructor(private nodeRef: ElementRef) {
        let self = this;

        jQuery(document).on({
            "mousemove": function (e) {
                self.dragging && self.updateScrollPos(e);
            },
            "mousedown": function (e) {
                self.originalMousePositionX = e.pageX;
                self.originalMousePositionY = e.pageY;
                self.originalScrollLeft = jQuery(self.nodeRef.nativeElement).scrollLeft();
                self.originalScrollTop = jQuery(self.nodeRef.nativeElement).scrollTop();
                self.dragging = true;
            },
            "mouseup": function (e) {
                jQuery('html').css('cursor', 'auto');
                self.dragging = false;
            }
        });

    }

    ngOnDestroy(): void {
        jQuery(document).off("mousemove");
        jQuery(document).off("mousedown");
        jQuery(document).off("mouseup");
    }

    private updateScrollPos(e) {
        jQuery('html').css('cursor', this.getCursor());

        let $el = jQuery(this.nodeRef.nativeElement);
        if (this.scrollHorizontal) {
            $el.scrollLeft(this.originalScrollLeft + (this.originalMousePositionX - e.pageX));
        }
        if (this.scrollVertical) {
            $el.scrollTop(this.originalScrollTop + (this.originalMousePositionY - e.pageY));
        }
    }

    private getCursor() {
        if (this.scrollVertical && this.scrollHorizontal) return 'move';
        if (this.scrollVertical) return 'row-resize';
        if (this.scrollHorizontal) return 'col-resize';
    }

}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19743228

复制
相关文章
jQuery遮罩(Mask)及弹窗时禁止页面滚动实现
保险起见可以把 html 和 body 的高度都设置 100% ,如下,用添加 class 的方法实现:
德顺
2019/11/13
6.5K0
jquery 页面滚动事件 scroll()
在没有任何元素的情况下,document的宽高是与window的宽高一致的,那么如果给document加入一些元素呢?
Devops海洋的渔夫
2019/06/02
10.1K0
WPF 拖动滚动
使用 ListBox 可以简单做到,那么如何使用 ScrollViewer 做到相同效果?
林德熙
2022/08/04
1.4K0
WPF 拖动滚动
使用 ListBox 可以简单做到,那么如何使用 ScrollViewer 做到相同效果?
林德熙
2018/09/19
1.4K0
WPF 拖动滚动
jQuery滚动到页面指定位置
        在前端的页面开发中,经常会碰到页面跳转问题,这个跳转指的是页面内部跳转到指定位置,通常是在有滚动条的情况下,网上介绍的方法很多,本文主要是介绍jQuery函数中的一个小trick,.focus()函数。
Tyan
2022/05/09
6.9K0
jQuery滚动到页面指定位置
canvas实现拖动页面时显示窗口视频
简介   当前主流的视频网站目前有不少新鲜好玩的功能,最明显的莫过于小视频的显示--当视频不在当前视口范围 时,会在右下角用一个小窗口来显示当前的视频,而且可以拖拽。   今晚心血来潮,起了动手试试的念头。我的想法很简单,用canvas来获取视频每一帧的数据,并用动画函数 requestAnimationFrame函数(这里没有考虑兼容性)来显示每一帧的视频数据。另外,对canvas绑定拖动的 功能,这样就基本实现了简易的窗口视频。   本章内容的重点就是requestAnimationFrame函数和ca
欲休
2018/03/15
1.5K0
canvas实现拖动页面时显示窗口视频
分享一款jQuery全屏滚动页面特性案例
分享一款jQuery全屏滚动页面特性案例。 我们在来往官网,或者小米官网都会看到全屏滚动页面的一些例子。可以说全屏滚动页面越来越受欢迎。它们就像是竖着的图片轮转一样。 这样的页面有很多,如:iPhone 5C页面:http://www.dowebok.com/demo/2014/77/index8.html  网易邮箱6.0:http://www.dowebok.com/demo/2014/97/ 来往官网:http://www.laiwang.com 百度百科史记2013:http://www.dowebok.com/demo/2014/78/ 搜狐快站:http://www.dowebok.com/demo/2014/80/ 证券时报网移动产品:http://www.dowebok.com/demo/2014/77/index9.html 邮箱大师:http://www.dowebok.com/demo/126/ 360安全路由:http://www.dowebok.com/demo/2014/77/index10.html 等等一些例子。看看实际代码:
业余草
2019/01/21
4K0
页面滚动,元素跳动;附带jquery.scrollex.js插件
有些动画是页面一加载就要的,还有一些动画是需要页面滚动到那个元素才要展示的。
用户7293182
2022/01/20
5.7K0
页面滚动,元素跳动;附带jquery.scrollex.js插件
滚动页面
除了接受正负偏移量,window.scrollBy还能接受ScrollToOptions作为配置。
公众号@魔术师卡颂
2020/08/26
2.7K0
html滚动条使用,以及页面有多个div块,如何让body页面不使用滚动条,只在某个div内使用滚动条
2,页面有多个div块,如何让body页面不使用滚动条,只在某个div内使用滚动条
全栈程序员站长
2022/08/05
4.8K0
html滚动条使用,以及页面有多个div块,如何让body页面不使用滚动条,只在某个div内使用滚动条
setInerval实现图片滚动离开页面后又返回页面时图片加速滚动问题解决
由于在加载了图片滚动的页面之后,又去到了其他页面,但是定时器没有停止,而页面又没有显示在用户面前,当返回页面的时候,就会把之前定时器中已经移动的图片动画一股脑移动,就会出现如题所述加速滚动的效果。
蓓蕾心晴
2020/03/19
1.2K0
使用 fartscroll.js 让你的网页在滚动时放屁
放屁绝对不是一个很高雅的行为,但是如果你比较喜欢恶搞,或者在愚人节,或者是一些比较特殊的网页设计中,可以通过 fartscroll.js 这个插件让你的网页在滚动的过程中 放屁。
Denis
2023/04/15
9390
视频流媒体平台EasyNVR使用iframe集成到页面时如何去除页面的滚动条?
使用过我们的流媒体服务器的都知道,我们的服务器支持集成到自己的项目平台上,因此不少使用我们流媒体服务器的用户,都实现了将直播视频流集成到自己的平台。
EasyNVR
2020/06/08
1.3K0
视频流媒体平台EasyNVR使用iframe集成到页面时如何去除页面的滚动条?
页面滚动事件
HTML DOM事件大全:https://www.runoob.com/jsref/dom-obj-event.html
阿超
2022/08/17
1.9K0
jquery 列表可拖动排序 sortable
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>jQuery UI Sortable</title> <style type="text/css"> #myList{ width: 80px; background: #EEE; padding: 5px; list-style: none; } #myList a{ text-decoration: none; color: #0077B0; } #myList a:hover{ text-decoration: underline; } #myList .qlink{ font-size: 12px; color: #666; margin-left: 10px; } </style> </head> <body> <ul id="myList"> <li><a href="#">心情</a></li> <li> <a href="#">相册</a> <a href="#" class="qlink">上传</a> </li> <li> <a href="#">日志</a> <a href="#" class="qlink">发表</a> </li> <li><a href="#">投票</a></li> <li><a href="#">分享</a></li> <li><a href="#">群组</a></li> </ul>
用户5760343
2019/10/10
2.4K0
jquery 列表可拖动排序 sortable
duilib 滚动条不能拖动 问题处理
遇到过很多次群里朋友问:为什么滚动条不能拖动,点击两端的按钮可以滚动,通过鼠标滚轮也可以滚动,就是鼠标拖动时拖不动? 这是个提问次数较高的问题。 下面的内容只针对可能的原因中的一个,也是最可能的原因。 因为通过鼠标拖动滚动条,实际内部用到了定时器,具体有兴趣的可以查看duilib的源码。我们的程序在处理时常常也会用到WM_TIMER消息,通过拦截WM_TIMER消息来做一些定时器处理,不能拖动的原因很有可能就是我们拦截了定时器消息之后,不管触发这个消息的定时器ID是多少,我们统统都不再继续传递给duilib
大菊观
2018/05/24
1.5K0
vue页面采用原生方式拖动
主要的难点是怎么获取要拖动的元素,e.target是获取的目标元素,可以采用while循环
tianyawhl
2021/10/09
6020
liMarquee – jQuery无缝滚动插件
liMarquee 是一款基于 jQuery 的无缝滚动插件,类似于 HTML 的 marquee 标签,但比 marquee 更强大。它可以应用于任何 Web 元素,包括文字、图像、表格、表单等元素,同时它可以设置不同的滚动方向(左右上下)、滚动速度、鼠标悬停暂停、鼠标拖动、加载 xml 文件等等。
kirin
2021/01/29
8.8K0
监听页面滚动结束
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/jquery/1.10.0/jquery.min.js"></script> </head> <body> <div style="height: 1000px;width: 10
用户10106350
2022/10/28
3.2K0
jquery横向滚动条
此代码献给wendy 由于工作太忙,下次再整理成插件调用,先记录下来,欢迎同学们提意见。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" conten
deepcc
2018/05/16
7K0

相似问题

Javascript (jQuery)在拖动项目时禁用页面滚动

20

如何在jquery中拖动draggable时禁用页面滚动?

31

在滚动可拖动项的内容时禁用jQuery拖动

30

在jquery中拖动+滚动

11

JQUERY UI可排序,开始拖动时页面从底部滚动

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文