我正在制作一个幻灯片,并使用了div的transform
样式。
const prevSlide = document.getElementById('prev-slide');
const nextSlide = document.getElementById('next-slide');
const slides = document.getElementById('slides');
const slideList = [document.getElementsByClassName('slide-li')];
let slideNode = slideList[0]
let slideWidth = slideNode[0].clientWidth;
let slide = 0;
nextSlide.addEventListener('click', function e(){
if (slide <= 0 && slide > -(slideWidth * (slideNode.length - 1))){
slide -= slideWidth;
slidePx = slide.toString() + "px";
slides.style.transform = "translate("+slidePx+", 0px);";
}
else{
slide = 0;
slides.style.transform = "translate(0px, 0px);";
}
})
prevSlide.addEventListener('click', function e(){
if (slide < 0){
slide += slideWidth;
slidePx = slide.toString() + "px";
slides.style.transform = "translate("+slidePx+", 0px);";
}
else{
slide = slideWidth * (slideNode.length - 1);
slidePx = slide.toString() + "px";
slides.style.transform = "translate("+slidePx+", 0px);";
}
})
body {
background-color : white;
}
#slide-container {
margin : 0 auto;
width : 500px;
overflow : hidden;
position : relative;
}
#slides {
margin : 0 auto;
height : 400px;
width : 2000px;
overflow : hidden;
display : block;
transition : 1s ease;
}
#slides:after {
content : "";
display : table;
clear : both;
}
.slide-li {
margin : 0;
display : inline;
width : 25%;
overflow : hidden;
float : left;
}
.slide-li img {
width : 500px;
margin : auto;
}
#prev-slide,
#next-slide {
color : white;
padding : 10px;
font-size : 20px;
cursor : pointer;
z-index : 5;
position : absolute;
top : 40%;
font-weight : bold;
text-decoration : none;
transition : 0.5s ease;
}
#prev-slide {
left : 0;
}
#next-slide {
right : 0;
}
#prev-slide:hover,
#next-slide:hover {
background-color : #000000aa;
}
<div id="slide-container">
<div id="slides">
<span class="slide-li"><img src="https://picsum.photos/id/1041/500/400/"></span>
<span class="slide-li"><img src="https://picsum.photos/id/1035/500/400"></span>
<span class="slide-li"><img src="https://picsum.photos/id/1040/500/400"></span>
</div>
<a class="btn" id="prev-slide">❮</a>
<a class="btn" id="next-slide">❯</a>
</div>
当我尝试点按任一按钮来滑动幻灯片显示时,它不进行翻译。
当我尝试记录transform属性时,我没有看到任何内容。
我很确定我犯了一个关于变换性质的错误,但是我找不到它。问题是什么?
3条答案
按热度按时间pb3s4cty1#
只是替换了
作者
但是您可以将代码简化为:
我还纠正了其他小错误
一个一个三个一个一个一个一个一个四个一个一个一个一个一个五个一个
mspsb9vt2#
从
style.transform
行的字符串常量中删除分号。它们应该如下所示:
而不是这个:
一个一个二个一个一个一个三个一个一个一个一个一个四个一个
7dl7o3gd3#
用JS修改
transform
属性时不需要分号,使用slides.style.transform =
translate(${slidePx}, 0px);
即可这就是你解决问题所需要的一切。