Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript的可拖动flexbox滑块可以工作,但会抖动_Javascript_Html_Css_Flexbox - Fatal编程技术网

使用javascript的可拖动flexbox滑块可以工作,但会抖动

使用javascript的可拖动flexbox滑块可以工作,但会抖动,javascript,html,css,flexbox,Javascript,Html,Css,Flexbox,我有一个flexbox滑块,我正在工作,但没有js运行平稳。拖动功能的工作方式与我想要的接近,但拖动时内容会跳跃/抖动。不确定问题是出在js上还是因为与CSS冲突。或者我应该使用不同的事件侦听器 js的最后一块是拖动函数。谢谢 let container=document.querySelector('.container'); 让sliderWrapper=document.querySelector('.sliderWrapper'); 设为假; 让startx; 设x; containe

我有一个flexbox滑块,我正在工作,但没有js运行平稳。拖动功能的工作方式与我想要的接近,但拖动时内容会跳跃/抖动。不确定问题是出在js上还是因为与CSS冲突。或者我应该使用不同的事件侦听器

js的最后一块是拖动函数。谢谢

let container=document.querySelector('.container');
让sliderWrapper=document.querySelector('.sliderWrapper');
设为假;
让startx;
设x;
container.addEventListener('mousedown',(e)=>{
按下=真;
startx=e.offsetX-sliderRapper.offsetLeft;
container.style.cursor='grabbing'
});
container.addEventListener('mouseenter',()=>{
container.style.cursor='grab'
});
container.addEventListener('mouseup',()=>{
container.style.cursor='grab'
});
window.addEventListener('mouseup',()=>{
按下=假;
});
container.addEventListener('mousemove',(e)=>{
如果(!按下)返回;
e、 预防默认值();
x=e.offsetX
sliderRapper.style.left=`${x-startx}px`;
});
*{
保证金:0;
填充:0;
框大小:边框框;
}
身体{
宽度:100vw;
高度:100vh;
}
.画廊{
位置:相对位置;
高度:计算(100vh-200px);
宽度:90vw;
左:05vw;
顶部:100px;
溢出x:隐藏;
}
.集装箱{
身高:继承;
-webkit溢出滚动:触摸;
-ms溢出样式:-ms自动隐藏滚动条;
}
.滑块包装器{
显示器:flex;
位置:绝对位置;
身高:继承;
}
.滑梯{
身高:100%;
指针事件:无;
}
.元素{
身高:100%;
}


我不是说我喜欢你的代码,也不是说我会像你的梦想一样神奇地工作,而是把
x=e.offsetX
改成
x=e.clientX
对我来说很有效。

谢谢,这确实解决了问题。你知道为什么我的函数不能与offset一起工作吗?
e.offsetX
给出的是整数值而不是双倍值,我认为这不应该这样做,但这是一种实验技术。。。。所以我无论如何都不会用它。