javascript - 如果滑动分别在开始或结束时如何隐藏箭头
问题描述
我有一个带有左右箭头移动的水平滑动列表,我也可以向右滑动。现在,当我单击右箭头并到达末尾时,右箭头被隐藏,反之亦然。但是当我向右或向左滑动并到达结束/开始时,箭头不会隐藏。如果我通过滑动到达最后,如何隐藏右箭头?
我的 HTML 代码:
<div id="imageSlider1" class="catalog-slider">
<div class="catalog-cover">
<i class="iccircle-left move-left left-button"></i>
<ul class="sliderWrapper1 catalog-list corporate-projects">
<a class="slide" href="#A">
<li class="catalog-item"><img src="#imgA" alt="{{ $tags[$i] }}">List A</li>
</a>
<a class="slide" href="#B">
<li class="catalog-item"><img src="#imgB" alt="{{ $tags[$i] }}">List B</li>
</a>
<a class="slide" href="#C">
<li class="catalog-item"><img src="#imgC" alt="{{ $tags[$i] }}">List C</li>
</a>
<a class="slide" href="#D">
<li class="catalog-item"><img src="#imgD" alt="{{ $tags[$i] }}">List D</li>
</a>
<a class="slide" href="#E">
<li class="catalog-item"><img src="#imgE" alt="{{ $tags[$i] }}">List E</li>
</a>
</ul>
<i class="iccircle-right right-button move-right"></i>
</div>
</div>
我的Javascript代码:
if($(".sliderWrapper1").prop('scrollWidth') > $(".catalog-cover").width())
{
$('.left-button, .right-button').show();
}
else
{
$('.left-button, .right-button').hide();
};
const slider = document.querySelector(".catalog-list");
const preventClick = (e) => {
e.preventDefault();
e.stopImmediatePropagation();
}
let isDown = false;
let isDragged = false;
let startX;
let scrollLeft;
if(slider){
slider.addEventListener("mousedown", e => {
isDown = true;
slider.classList.add("active");
startX = e.pageX - slider.offsetLeft;
scrollLeft = slider.scrollLeft;
});
slider.addEventListener("mouseleave", () => {
isDown = false;
slider.classList.remove("active");
});
slider.addEventListener("mouseup", (e) => {
isDown = false;
const elements = document.querySelectorAll("a");
if(isDragged) {
for(let i = 0; i < elements.length; i++) {
elements[i].addEventListener("click", preventClick);
}
} else {
for(let i = 0; i < elements.length; i++) {
elements[i].removeEventListener("click", preventClick);
}
}
slider.classList.remove("active");
isDragged = false;
});
slider.addEventListener("mousemove", e => {
if(!isDown) return;
isDragged = true;
e.preventDefault();
const x = e.pageX - slider.offsetLeft;
const walk = (x - startX) * 2;
slider.scrollLeft = scrollLeft - walk;
console.log(walk);
});
}
var widthc = $(".catalog-cover").width();
$('.left-button').hide();
$('.left-button').click(function() {
$('.right-button').show();
$(".sliderWrapper1").animate({
scrollLeft: "-="+widthc+"px"
}, "normal", function() {
if($('.sliderWrapper1').scrollLeft() <= 0) {
$('.left-button').hide();
}
});
});
$('.right-button').click(function() {
$('.left-button').show();
$(".sliderWrapper1").animate({
scrollLeft: "+="+widthc+"px"
}, "normal", function() {
if($('.sliderWrapper1')[0].scrollWidth - $('.sliderWrapper1').scrollLeft() == $('.sliderWrapper1').width()) {
$(".right-button").hide();
}
});
});
解决方案
推荐阅读
- javascript - 删除数组中所有出现的具有 id 的对象 - JS
- typescript - Make overProp
function interface with one param - android - 为什么我会收到错误 react-native-image-picker : NativeModule.ImagePickerManager is null
- c++ - #ifndef 中的结构变灰,其他源文件无法访问
- r - 消除异常值问题
- reactjs - 如何在类组件中使用 react-redux useSelector?
- python-3.x - 遍历字典列表
- react-native - 如何从功能组件导航到另一个屏幕?
- python - 填充缺失的字段 - 新的未知值
- python - 按日期切片数据帧已完成,但将切片输入变量不起作用