다른 브라우저는 모두 스크롤 할 때마다 다른 양으로 모두 스크롤됩니다.
여기 내 업데이트 fiddle입니다. 아직 사파리에서 시도하지 않았습니다. 한 번 스크롤 할 때마다 Mozilla의 스크롤 이벤트가 여러 번 발생하기 때문에 마우스 휠에서 바인드를 사용하고 있습니다.
먼저 어떤 브라우저를 사용하고 있는지 확인하고 해당 브라우저에 대한 각 스크롤의 양을 설정합니다. 그런 다음 각 브라우저에서 스크롤 할 양을 기준으로 올바른 div를 얼마나 많이 이동 시킬지 계산합니다.
마우스 휠 이벤트에서 올바른 div가 화면 아래 또는 상단으로 이동하지 않는지 확인합니다.
저는 event.originalEvent.detail을 사용하여 마우스 휠이 mozilla에서 어떤 방향으로 가고 있는지 알려주고 IE와 Chrome에서는 event.originalEvent.wheelDelta를 사용하고 있습니다.
다음은 코드입니다.
$(function()
{
if (navigator.userAgent.indexOf('Firefox') != -1 && parseFloat(navigator.userAgent.substring(navigator.userAgent.indexOf('Firefox') + 8)) >= 3.6)
{
//Firefox
var eachScroll = 114;
}
else if (navigator.userAgent.indexOf('Chrome') != -1 && parseFloat(navigator.userAgent.substring(navigator.userAgent.indexOf('Chrome') + 7).split(' ')[0]) >= 15)
{
//Chrome
var eachScroll = 100;
}
else if(navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Version') != -1 && parseFloat(navigator.userAgent.substring(navigator.userAgent.indexOf('Version') + 8).split(' ')[0]) >= 5)
{
//Safari
}
else
{
//IE
var eachScroll = 94;
}
var windowHeight = $(window).height();
var containerHeight = $("#container").height();
var heightLeftover = containerHeight - windowHeight; // Actual amount left to scroll
var totalScrolls = heightLeftover/eachScroll; // Total number of scrolls
totalScrolls = Math.ceil(totalScrolls); // Always round up
var amountToScroll = ($("#right").height() - containerHeight)/totalScrolls;
// Amount that right div will move every time we scroll
$(window).bind("mousewheel DOMMouseScroll", function(event){
var top = $("#right").position().top;
if(event.originalEvent.wheelDelta) // Check if wheelDelta exists
{
if(event.originalEvent.wheelDelta == - 120)
{
if(top < 2)
$("#right").css({top: top + amountToScroll});
}
else
{
if(top > -2000)
$("#right").css({top: top - amountToScroll});
}
}
else if(event.originalEvent.detail) // check if detail exists
{
if(event.originalEvent.detail == 3)
{
if(top < 2)
$("#right").css({top: top + amountToScroll});
}
else
{
if(top > -2000)
$("#right").css({top: top - amountToScroll});
}
}
});
});
내가 대답을하려고하기 전에 CSS를 알고 있습니까? 자바 스크립트? jquery? ur jsbin은 그다지 의미가없는 것처럼 보입니다. (오버플로 : 스크롤에 대해서는 어떻습니까?) –
HTML과 CSS에 대해 알고 있지만 자바 스크립트와 jquery에는 익숙하지 않습니다. 그렇습니다. 내 jsbin은 실제로 좋지 않을 수 있습니다. . – Pandorrra