【问题标题】:JQuery-Mobile scrollbarjQuery-Mobile 滚动条
【发布时间】:2016-04-05 21:29:31
【问题描述】:

我使用这个 css 代码使滚动条在 jquery-mobile 中可见:

::-webkit-scrollbar {
    -webkit-appearance: none;
}
::-webkit-scrollbar:vertical {
    width: 12px;
}
::-webkit-scrollbar:horizontal {
    height: 12px;
}
::-webkit-scrollbar-thumb {
    background-color:#CE0003;
    border-radius: 10px;
}
::-webkit-scrollbar-track {
    border-radius: 10px;
    background-color: grey;
}

当我使用移动设备打开页面时,滚动条可见但在其上滑动时不起作用(它不会滚动页面)。我该如何解决这个问题?
你可以在这个fiddle 1看到它

更新:
如果您认为这种方式不可能做到,还有另一种使用 jquery 的方法。
在这个ffidle 2 中,您可以看到已经编写了一个函数来检测向下滑动向上滑动一个分区。现在它只需要一个滚动页面的函数。

【问题讨论】:

  • 您为什么会为移动设备上的滚动条而烦恼?关键在于,简单地滑动是很自然的——滚动条太小了,我们无法用平均大小的手/手指来使用
  • @DarrenSweeney 我正在使用一个应用程序,它给了我一个 html 文件,我必须将它包含在
  • 我尝试过 iscroll (cubiq.org/iscroll-5) 或其他书面滚动条,但我无法将它们与 iframe 一起使用
  • 您要将滚动条附加到什么位置?身体?
  • 这里更大的问题是您在移动设备上使用 iframe。您应该改为使用 ajax 将内容直接放在页面上并摆脱 iframe。那么你就不用担心滚动条了。

标签: javascript jquery css jquery-mobile


【解决方案1】:

如果您可以并且想要使用 jquery,这是一个很好的滚动条替换插件。很简单,效果很好,而且非常可配置。但是你必须根据你的风格和需要覆盖一些 CSS。

$(".container").mCustomScrollbar({ scrollbarPosition: 'outside' });

Here 示例(也在移动设备上测试过)。

this 是插件站点和文档。

【讨论】:

  • Tnx。它是一个非常好的插件。我试图解决一个问题。滚动条不可见,请查看我的网站qeshmbook.com/nnn.html 它一个小时我试图找出问题所在!我尝试更多,希望它得到解决...
  • 我首先认为问题出在使用 jquery-mobile 但这个小提琴:jsfiddle.net/eylay/bzwrxdgg/10 表明问题出在别的地方。我在为我的网站做同样的事情,但我试图找出问题......
  • 在您的页面中存在多个错误。使用 chrome 调试控制台(或您的浏览器调试控制台)。首先你必须调用 jquery JS 然后是插件。您必须解决的第一个错误是:“Uncaught TypeError: $(...).mCustomScrollbar is not a function”,更改js文件init的顺序...然后将init包装到准备好的文档中,这个:“$ (document).ready(function(){ $(".container").mCustomScrollbar({ scrollbarPosition: 'outside' }); });".所以试试看。
  • 我看到了您编辑的 html。 chrome上的命令是“$(document).ready”而不是“document.ready”:) F12,你可以看到你的js的所有错误。
  • 哦!!!错误是为什么我很久没睡了!!!! Tnx 它仍然不可见,我仍在寻找错误!希望我能找到它...
【解决方案2】:

使用第二把小提琴中的示例作为开始,您可以这样做:

//From the fiddle
var supportTouch = $.support.touch,
            scrollEvent = "touchmove scroll",
            touchStartEvent = supportTouch ? "touchstart" : "mousedown",
            touchStopEvent = supportTouch ? "touchend" : "mouseup",
            touchMoveEvent = supportTouch ? "touchmove" : "mousemove";
    $.event.special.swipeupdown = {
        setup: function() {
            var thisObject = this;
            var $this = $(thisObject);
            $this.bind(touchStartEvent, function(event) {
                var data = event.originalEvent.touches ?
                        event.originalEvent.touches[ 0 ] :
                        event,
                        start = {
                            time: (new Date).getTime(),
                            coords: [ data.pageX, data.pageY ],
                            origin: $(event.target)
                        },
                        stop;

                function moveHandler(event) {
                    if (!start) {
                        return;
                    }
                    var data = event.originalEvent.touches ?
                            event.originalEvent.touches[ 0 ] :
                            event;
                    stop = {
                        time: (new Date).getTime(),
                        coords: [ data.pageX, data.pageY ]
                    };

                    // prevent scrolling
                    if (Math.abs(start.coords[1] - stop.coords[1]) > 10) {
                        event.preventDefault();
                    }
                }
                $this
                        .bind(touchMoveEvent, moveHandler)
                        .one(touchStopEvent, function(event) {
                    $this.unbind(touchMoveEvent, moveHandler);
                    if (start && stop) {
                        if (stop.time - start.time < 1000 &&
                                Math.abs(start.coords[1] - stop.coords[1]) > 30 &&
                                Math.abs(start.coords[0] - stop.coords[0]) < 75) {
                            start.origin
                                    .trigger("swipeupdown")
                                    .trigger(start.coords[1] > stop.coords[1] ? "swipeup" : "swipedown");
                        }
                    }
                    start = stop = undefined;
                });
            });
        }
    };
    $.each({
        swipedown: "swipeupdown",
        swipeup: "swipeupdown"
    }, function(event, sourceEvent){
        $.event.special[event] = {
            setup: function(){
                $(this).bind(sourceEvent, $.noop);
            }
        };
    });

然后添加

$('.scrollbar').on('swipedown', function(){
    var SCROLL_FRACTION = 3;
    var height = document.body.scrollHeight;
    var width = document.body.scrollWidth;
    scrollTo(width, height - height / SCROLL_FRACTION);
});
$('.scrollbar').on('swipeup', function(){
    var SCROLL_FRACTION = 3;
    var height = document.body.scrollHeight;
    var width = document.body.scrollWidth;
    scrollTo(width, height + height / SCROLL_FRACTION);
});

然后您可以将SCROLL_FRACTION 更改为滑动时想要滚动的页面的任何部分。

【讨论】:

    猜你喜欢
    • 2013-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多