javascript - 如何使用marginLeft而不是scrollLeft水平滚动div?
问题描述
我试图通过更改 div 的边距来水平滚动我的 div,因为使用 scrollLeft 属性需要我将溢出设置为隐藏在 div 上,这与我的悬停效果不符。
但是我不知道如何设置它,以使 div 在水平滚动时与 div 左右两侧的窗口完美对齐,无论是在电脑上还是在移动设备上。
通过计算使用 css('margin-left') 设置的实际边距,我设法使左箭头在边距为零时停止工作。但我不知道如何对右箭头执行相同的操作,即当 div 到达滚动结束时。
这是 div 的样子(大网格下方的那些,有多个项目) - https://netflix-clone-by-shivam.herokuapp.com/
import $ from "jquery";
export const LeftArrow = node => {
var move = node.current;
var margin = parseInt($(move).css('margin-left'));
console.log(margin)
if(margin < 0) {
$(move).animate(
{
marginLeft: "+=330px"
},
"slow"
);
}
};
export const RightArrow = node => {
var move = node.current;
var margin = parseInt($(move).css('margin-left'));
console.log(margin)
$(move).animate(
{
marginLeft: "-=330px"
},
"slow"
);
};
解决方案
我认为您需要将所有图像一起计算,减去最后一张。
var images = $(move).find('.movie-image');
var width = 0;
for(var i = 0; i < (images.length -1); i++){
width += images.eq(i).width();
}
然后仅在边距小于宽度时才进行动画处理。
if(margin < width){
$(move).animate({
marginLeft: "-=330px"
}, "slow");
}
推荐阅读
- python - nltk.tokenize.TweetTokenizer 正在拆分 $stock 和 $crypto 代码
- c# - 以 Z 方式将元素绑定到 2 个不同的列
- android - BottomNavigationBar 中的 Jetpack Compose 导航问题
- python - 使用 Lambda 函数并在出现键错误的情况下继续
- powerbi - 连接是否使我的 power bi 服务从 excel 源文件导入数据是实时的
- reactjs - 如何处理在 API 调用响应上重新初始化的状态?
- android - 如何在 Android 上访问完整的 ClipboardManager 历史记录?
- java - 如何自动化系统服务?
- r - 如何从 ggplot2::geom_density_2d_filled 获取有关轮廓的信息?
- javascript - 如何在 Material UI X-Grid 中获取过滤后的行数?