3

インタラクティブなスクロールバーを持つ水平 iScroll インスタンスがあります。

    myScroll = new IScroll('#wrapper', { 
        scrollX: true, 
        scrollY: false, 
        mouseWheel: false,
        scrollbars: 'custom',
        interactiveScrollbars: true,
        resizeScrollbars: false,
        bindToWrapper: false,
        click: true,
        fadeScrollbars: true,
    });

iScroll がインジケーターを非表示にするときにスクロールバーを非表示にしたい ( )スクロールするスライド/要素がないためにスクロールが不要であることを検出するとdisplay: none、インジケーターの css プロパティが変更されることに気付きました。display

これは通常、ブラウザーのサイズを小さなビューポートから大きなビューポートに変更したときに発生します。

fadeScrollbarsスクロールしても問題ない場合でも、スクロールバーとインジケーターが非表示になるため、私が望んでいたものとはまったく異なります。

インジケータが非表示の場合にスクロールバーを表示しないように iScroll を構成するにはどうすればよいですか?

これに対する回避策はありますか?

4

3 に答える 3

0

この質問が追加されたのはずっと前のことですが、ライブラリに追加のコードを追加することで解決しました-v5.1.3では、最初にいくつかの「if条件」があるメソッドの更新が見つかりました:

if ( this.options.listenX && !this.options.listenY ) {
        this.indicatorStyle.display = this.scroller.hasHorizontalScroll ? 'block' : 'none';
    } else if ( this.options.listenY && !this.options.listenX ) {
        this.indicatorStyle.display = this.scroller.hasVerticalScroll ? 'block' : 'none';
    } else {
        this.indicatorStyle.display = this.scroller.hasHorizontalScroll || this.scroller.hasVerticalScroll ? 'block' : 'none';
    }

への変更

if ( this.options.listenX && !this.options.listenY ) {
        this.indicatorStyle.display = this.scroller.hasHorizontalScroll ? 'block' : 'none';
        this.wrapper.style.display = this.scroller.hasHorizontalScroll ? 'block' : 'none';
    } else if ( this.options.listenY && !this.options.listenX ) {
        this.indicatorStyle.display = this.scroller.hasVerticalScroll ? 'block' : 'none';
        this.wrapper.style.display = this.scroller.hasVerticalScroll ? 'block' : 'none';
    } else {
        this.indicatorStyle.display = this.scroller.hasHorizontalScroll || this.scroller.hasVerticalScroll ? 'block' : 'none';
        this.wrapper.style.display = this.scroller.hasHorizontalScroll || this.scroller.hasVerticalScroll ? 'block' : 'none';
    }
于 2015-09-02T14:17:11.060 に答える