2011-11-24 5 views
3

iScroll을 다운로드했으며 가로 스크롤을 사용하고 있습니다. 콘텐츠 및 "가로 스크롤러"가 장치 화면보다 긴 경우 아래로 스크롤하여 가로 스크롤 아래의 내용을 볼 수 없다는 점을 제외하면 훌륭하게 작동합니다. 어떻게 해결할 수 있습니까? 코드를 사용하여 http://cubiq.org/iscroll : 가로 iScroll에서 세로 스크롤을 할 수 없습니까?

가에서 다운로드 예/

+0

hScrollbar와 vScrollbar를 모두 true로 설정 했습니까? –

+0

예! 여기에서 예를 볼 수 있습니다 : http://www.bristolhotel.com/pizzeria/mobil/pizza.php 물론 컴퓨터에서 문제를 볼 수 없습니다. – jessifelt

+0

혹시이 문제를 해결하셨습니까? 같은 문제가 있습니까? –

답변

2

당신이 iScroll 4 사용하는 경우를 수평 스크롤이 초기화 할 때 null로 onScrollStart를 설정하여 해결할 수 있습니다.

예 :

var scroller = new iScroll('wrapper', { onBeforeScrollStart: null }); 
+0

이것은 몇 수평 스 와이프에 근무했습니다. 약 10 번 (iPhone에서) 수평으로 스 와이프 해보세요 = 뒤쳐집니다. – Arvin

3

내가이 작품을 만들기 위해 iScroll.js을 사용자 정의 할 수 있었다. onBeforeScrollStart: function (e) { e.preventDefault(); },

변화 : onBeforeScrollStart: function (e) { /* e.preventDefault(); */ },


라인 106 여기 변경 내가 (참고 이러한 행 번호가 iScroll의 v4.1.9 참조)


라인 (100)

했다입니다 : onTouchEnd: null,

cha NGE에 : onTouchEnd: function (e) { e.preventDefault(); },


라인 (390) 아래 timestamp = e.timeStamp || Date.now();

삽입 : if(Math.sqrt(deltaX*deltaX) > 5) { e.preventDefault(); }


내가 원하는 위치를 표시하기 위해 스크롤 막대를 얻을이 외에도 나는 다음했습니다 변경 :

라인 218 : else bar.style.cssText = 'position:absolute;z-index:100;' + (dir == 'h' ? 'height:7px;bottom:1px;left:2px;right:' + (that.vScrollbar ? '7' : '2') + 'px' : 'width:7px;bottom:' + (that.hScrollbar ? '7' : '2') + 'px;top:2px;right:1px');

이 도움이 else bar.style.cssText = 'position:relative;z-index:100;' + (dir == 'h' ? 'height:7px;bottom:7px;left:2px;right:' + (that.vScrollbar ? '7' : '2') + 'px' : 'width:7px;bottom:' + (that.hScrollbar ? '7' : '2') + 'px;top:2px;right:1px');


희망 :에

변화!

var point, pointStartX, pointStartY, deltaX, deltaY; 
var scroller = new iScroll('scrollerId', { 
    vScroll: false, 
    vScrollbar: false, 
    hScrollbar: false, 
    snap: 'li', 
    momentum: false, 
    onBeforeScrollStart: function(e) { 
     point = e.touches[0]; 
     pointStartX = point.pageX; 
     pointStartY = point.pageY; 
     null; 
    }, 
    onBeforeScrollMove: function(e) { 
     deltaX = Math.abs(point.pageX - pointStartX); 
     deltaY = Math.abs(point.pageY - pointStartY); 
     if (deltaX >= deltaY) { 
      e.preventDefault(); 
     } else { 
      null; 
     } 
    } 
}); 

슬프게도, 당신이 (어떤 이유), 그들은 너무 늦게 업데이트되므로, iScroll의 absDistXabsDistY 내부에 의지 할 수 없습니다

관련 문제