假设我们有一个窗口,通常我们可以上下、左右和对角滚动。换句话说,我们可以同时向下和向左滚动。我想要做的是一次只滚动一种方式。无论是上下还是左右。我不想通过对角线滚动。
这在 HTML 中可能吗?
假设我们有一个窗口,通常我们可以上下、左右和对角滚动。换句话说,我们可以同时向下和向左滚动。我想要做的是一次只滚动一种方式。无论是上下还是左右。我不想通过对角线滚动。
这在 HTML 中可能吗?
我个人不知道纯 HTML 方法,但您可以查看Sly 插件以进行单向滚动。应该做的伎俩。
通常,除非网站的宽度超过屏幕尺寸,否则您无论如何都不能在 x 方向滚动。唯一的方法是防止 CSS 溢出overflow-x: hidden
。
但是,如果用户将有一个显示器,其中内容不再适合(例如智能手机显示器)或使用浏览器缩放,则隐藏内容可能存在问题......
如果你想禁用鼠标中键滚动,你可以把它放在head
你的 HTML 文档的部分(注意这实际上禁用了中键):
$(document).ready(function(){
document.onmousedown = window.onmousedown = function (e) {
if(e.which == 2)
{
e = e || window.event;
if (e.preventDefault)
e.preventDefault();
e.returnValue = false;
}
};
});
这些答案似乎不是你想要的。我来这里问同样的问题,寻找一种更简单的方法,但似乎必须这样做:
//When scrolling, execute the "Lock Direction" function lockdir()
<body onscroll="lockdir()">
在主体内部(或者我想头部也可以工作),添加以下脚本:
<script>
//Scroll Variables
var scr = {
initPos: [0, 0], //Initial Mouse Position
cPos: [0, 0], //Current Mouse Position
locked: 0, //A direction is locked
timeout: 0, //Scroll timeout counter
}
//Lock Direction Function
function lockdir(){
scr.timeout = 0; //Keep scroll counter at 0 while scrolling
//Get the current mouse position and find difference to initial position
scr.cPos = [
document.body.scrollTop,
document.body.scrollLeft
];
var dif = [
Math.abs(cPos[0] - scr.initPos[0]),
Math.abs(cPos[1] - scr.initPos[1])
];
//If no direction is locked (0), lock direction moved least when scrolling started
if (scr.locked === 0){
if (dif[1] > dif[0]){
scr.locked = 2; //Lock Vertical Scrolling
}else{
scr.locked = 1; //Lock Horizontal Scrolling
}
}
//Reset Locked Direction to initial value
if (scr.locked === 1){
document.body.scrollLeft = scr.initPos[1];
}else{
document.body.scrollTop = scr.initPos[0];
}
}
//Cancels Lock if timer exceeds 20 milliseconds
function cancelLock(){
if (scr.timeout > 20){
scr.locked = 0;
scr.initPos = scr.cPos;
}
scr.timeout++;
}
window.setInterval(cancelLock, 1); //Repeats cancel lock
</script>