我目前正在开发一个水平网站,可以让我的鼠标滚动滚动到左右......
我的jQuery包含序列:
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery-1.11.1.js"></script>
<!--jquery validation script-->
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js"></script>
<!--Smooth Scroll-->
<script type="text/javascript" src="js/jquery.easing.1.3.js"></script>
我的代码如下:
<script type="text/javascript" src="js/jquery.mousewheel.min.js"></script>
<script>
$.noConflict();
$(function() {
$("body").mousewheel(function(event,delta) {
this.scrollLeft -= (delta * 30);
event.preventDefault();
})
})
$(function() {...});
$(document).ready(function() {
$('#form').validate({...});
$("#submit").click(function()
{...});
})
</script>
我的“身体”CSS如下:
html {
width:100%;
overflow-y:hidden;
overflow-x: scroll;
}
body{
}
目前我怀疑的代码是:
<!--Smooth Scroll-->
<script type="text/javascript" src="js/jquery.easing.1.3.js"></script>
我认为正在崩溃鼠标滚动。
鼠标滚动正常,唯一的问题是鼠标滚动不顺畅,有时会停在那里,有时甚至无法移动,不是我的鼠标问题。我不确定是什么原因造成这种情况,因为我已经尝试将它调试2天了。有谁在这里分享他们对这个问题的想法?
我一直在寻找解决方案,但在我的案例中看起来很奇怪。滚动到某个部分并在中间卡住。 (只是滚动条。)我在Mac上使用Chrome进行测试。顺便说一句,滚动时有任何类似AutoShift的解决方案,因为当我按下Shift键时,这对我有用。
答案 0 :(得分:23)
在寻找答案3天后,我终于找到了没有Jquery插件的solution!
// http://www.dte.web.id/2013/02/event-mouse-wheel.html
(function() {
function scrollHorizontally(e) {
e = window.event || e;
var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)));
document.documentElement.scrollLeft -= (delta*40); // Multiplied by 40
document.body.scrollLeft -= (delta*40); // Multiplied by 40
e.preventDefault();
}
if (window.addEventListener) {
// IE9, Chrome, Safari, Opera
window.addEventListener("mousewheel", scrollHorizontally, false);
// Firefox
window.addEventListener("DOMMouseScroll", scrollHorizontally, false);
} else {
// IE 6/7/8
window.attachEvent("onmousewheel", scrollHorizontally);
}
})();
如果此代码仍无法正常工作,则问题不在此处,而是在您的CSS中。
答案 1 :(得分:8)
这是@TooJuniorToCode
的答案的JQuery版本。
如果您已经在使用jQuery,它会更短,更理想。希望它对某人有用。
$('body').on('mousewheel DOMMouseScroll', function(event){
var delta = Math.max(-1, Math.min(1, (event.originalEvent.wheelDelta || -event.originalEvent.detail)));
$(this).scrollLeft( $(this).scrollLeft() - ( delta * 40 ) );
event.preventDefault();
});
答案 2 :(得分:3)
要横向滚动网站,请按以下代码:
<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js?ver=1.3.2'></script>
<script type='text/javascript' src='/js/jquery.mousewheel.min.js'></script>
将鼠标滚轮事件附加到正文:
$(function() {
$("body").mousewheel(function(event, delta) {
this.scrollLeft -= (delta * 30);
event.preventDefault();
});
});
参见演示:
http://css-tricks.com/snippets/jquery/horz-scroll-with-mouse-wheel/
答案 3 :(得分:-1)
$("html, body").mousewheel(function(event, delta) {
this.scrollLeft -= (delta * 30);
event.preventDefault();
});
Chrome在主体上有滚动,Firefox在html上有滚动