在用户放大/缩小时保持旋转木马幻灯片的结构/顺序

iovurdzv  于 2021-09-23  发布在  Java
关注(0)|答案(0)|浏览(162)

我有一个我想要创建的无限旋转木马的初始设置。执行时,它使用绝对坐标依次放置从0到n的幻灯片,并将最后一张幻灯片添加到当前幻灯片的左侧。最后,您必须至少能够看到3张幻灯片。一张完全可见,另一张部分可见,无法让用户单击,并将此幻灯片设置为活动幻灯片(中间的一张)。
如果我放大和缩小,一切都开始变得疯狂,幻灯片的位置不再正确,因为它们是以绝对方式定位的,并且根据我放大或缩小的情况,或多或少的宽度是可用的。
当用户放大和缩小时,如何保持相同的结构(中间的活动滑块和其他的滑动)。我读过一些关于窗口大小调整事件的文章,这可以完成这项工作,但这是一个好的实践吗?通过“调整大小”事件,当窗口更改时,我将收到通知,我可以再次按照顺序重新定位旋转木马中的所有幻灯片。

let container = document.getElementById("container");
let slides = document.getElementsByClassName("slide");

let colors = ["red", "green","purple","blue"];

let slideWidth = slides[0].offsetWidth;
let slideHeight = slides[0].offsetHeight;
let containerWidth =  container.offsetWidth;

/*console.log("container -> "+containerWidth);
console.log(slideWidth);
console.log(slideHeight);
console.log((containerWidth-slideWidth)/2+"px");*/

for(let i=0 ; i<slides.length; ++i)
{
    slides[i].style.backgroundColor = colors[i];
  slides[i].style.left = `${(slideWidth*i +(containerWidth-slideWidth)/2)}px`;
}

slides[slides.length-1].style.left = `${(-slideWidth +(containerWidth-slideWidth)/2)}px`;
.container {
  display: block;
  width: 100%;
  position:relative;
}

.slide {
  width:80%;
  height:400px;
  flex-shrink:0;
  position:absolute;
}
<html>
  <body>
    <div id="container" class="container">
      <div class="slide"></div>
      <div class="slide"></div>
      <div class="slide"></div>
      <div class="slide"></div>
    </div>  
  </body>
</html>

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题