gpt4 book ai didi

jquery - mouseMove 上的水平滚动 - 较小 div 中的宽 div 并溢出 :hidden (Can't get the math to work)

转载 作者:行者123 更新时间:2023-12-03 22:29:46 28 4
gpt4 key购买 nike

我正在尝试制作一条图像拇指的“线”,它在鼠标移动时滚动。我让它工作了,但我现在的问题是我想在侧面做一个“填充”,这样我就不必将鼠标一直拉到侧面才能看到第一个/最后一个拇指。但我真的无法让它工作:/

这是我现在的脚本:

// MouseMove scrolling on thumbs
var box = $('.thumbs-block'),
innerBox = $('.thumbs'),
lastElement = innerBox.find('a:last-child');

var offsetPx = 100;
var boxOffset = box.offset().left;

var boxWidth = box.width() /* - (offsetPx*2)*/;
var innerBoxWidth = (lastElement[0].offsetLeft + lastElement.outerWidth(true)) - boxOffset /* + (offsetPx*2)*/;

scrollDelayTimer = null;
box.mousemove(function (e) {
console.log('boxWidth: ' + boxWidth + ' innerBoxWidth: ' + innerBoxWidth + ' box.scrollLeft(): ' + box.scrollLeft());

var mouseX = e.pageX;
var boxMouseX = mouseX - boxOffset;

if ((boxMouseX > offsetPx) && (boxMouseX < (boxWidth - offsetPx))) {
var left = (boxMouseX * (innerBoxWidth - boxWidth) / boxWidth) /* - offsetPx*/;

clearTimeout(scrollDelayTimer);
scrollDelayTimer = setTimeout(function () {
scrollDelayTimer = null;
box.stop().animate({
"scrollLeft": left
}, {
queue: false,
duration: 500,
easing: 'linear'
});
}, 10);
}
});

我在一些地方尝试添加偏移量(内联注释掉),其中一些可以在一端工作,但在另一端则不行:/

我很确定这是数学问题,但我不知道我应该做什么:/

这是一个 jsFiddle:http://jsfiddle.net/6CJfs/1/

我希望我的问题足够清楚,不知道如何解释它,并希望有人可以帮助:)

最佳答案

你的脚本不流畅,所以我完全修改了它(抱歉:)
用一个非常简单的方法:

$(function() {

const $bl = $(".thumbs-block"),
$th = $(".thumbs"),
blW = $bl.outerWidth(),
blSW = $bl.prop("scrollWidth"),
wDiff = (blSW / blW) - 1, // widths difference ratio
mPadd = 60, // Mousemove Padding
damp = 20; // Mousemove response softness

let posX = 0,
mX2 = 0, // Modified mouse position
mmAA = blW - (mPadd * 2), // The mousemove available area
mmAAr = (blW / mmAA), // get available mousemove fidderence ratio
itv = null;

const anim = () => {
posX += (mX2 - posX) / damp; // zeno's paradox equation "catching delay"
$th.css({
transform: `translateX(${-posX * wDiff}px)`
});
};

$bl.on("mousemove", function(e) {
const mouseX = e.pageX - $(this).prop("offsetLeft");
mX2 = Math.min(Math.max(0, mouseX - mPadd), mmAA) * mmAAr;
}).on("mouseenter", function(e) {
itv = setInterval(anim, 10);
}).on("mouseleave", function() {
clearInterval(itv);
});

});
.thumbs-block {
position: relative;
overflow: hidden;
max-width: 100%;
}

.thumbs-block .thumbs {
display: flex;
flex-flow: row nowrap;
}
<div class="thumbs-block">
<div class="thumbs">
<a class="thumb"><img src="http://placehold.it/120x120/0bf&text=01" /></a>
<a class="thumb"><img src="http://placehold.it/120x120/f0b&text=02" /></a>
<a class="thumb"><img src="http://placehold.it/120x120/bf0&text=03" /></a>
<a class="thumb"><img src="http://placehold.it/120x120/b0f&text=04" /></a>
<a class="thumb"><img src="http://placehold.it/120x120/fb0&text=05" /></a>
<a class="thumb"><img src="http://placehold.it/120x120/0fb&text=06" /></a>
<a class="thumb"><img src="http://placehold.it/120x120/0bf&text=07" /></a>
<a class="thumb"><img src="http://placehold.it/120x120/f0b&text=08" /></a>
<a class="thumb"><img src="http://placehold.it/120x120/bf0&text=09" /></a>
<a class="thumb"><img src="http://placehold.it/120x120/b0f&text=10" /></a>
<a class="thumb"><img src="http://placehold.it/120x120/fb0&text=11" /></a>
<a class="thumb"><img src="http://placehold.it/120x120/0fb&text=12" /></a>
</div>
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

关于jquery - mouseMove 上的水平滚动 - 较小 div 中的宽 div 并溢出 :hidden (Can't get the math to work),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16050564/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com