您没有考虑下一个和上一个div的宽度。你也应该从转盘的宽度中减去这个。
基本上逻辑应该是
widthOfImg = (Totalwidth - Width of previous div - Width of next div )/this.number
同时添加以下样式
body {
margin :0;
}
也更改了此行
rotate.style.width = "calc(100% - 32px)";
另外,不要对图像应用最大宽度,而是对正在添加的图像应用相同的宽度。
carousel-img-holder
div
i.childNodes[0].style.width= width ;
请参阅下面的更新代码
class Carousel{
constructor(selector="#carousel"){
const number = 5;
const autoscroll = 'off';
const width = "100%";
const height = "200px";
this.selector = document.querySelector(selector);
this.number = (this.selector.dataset.viewNumber==undefined)? number : this.selector.dataset.viewNumber;
this.autoScroll = (this.selector.dataset.autoscroll==undefined)? autoscroll : this.selector.dataset.autoscroll;
this.width = (this.selector.dataset.width==undefined)? width : this.selector.dataset.width;
this.height = (this.selector.dataset.height==undefined)? height : this.selector.dataset.height;
}
makeCarousel(){
let srcList=[];
let str = "<div class='previous'><p>←</p></div><div class='rotater'>";
let src;
for (let i of this.selector.children){
src = i.getAttribute("src");
srcList.push(src);
str= `${str}<div class='carousel-img-holder'><img src=${src} class='carousel-img' /></div>`;
}
str=`${str}</div><div class='next'><p>→</p></div>`;
this.selector.innerHTML = str;
const styler = this.selector.style;
styler.width = this.width;
styler.height = this.height;
styler.display = "flex";
const rotate = this.selector.childNodes[1];
rotate.style.display = "flex";
rotate.style.height = "100%";
rotate.style.width = "calc(100% - 32px)";
for (let i of this.selector.childNodes[1].childNodes){
let height = this.selector.getBoundingClientRect().height+"px";
let width = ( (this.selector.getBoundingClientRect().width - document.getElementsByClassName('next')[0].getBoundingClientRect().width - document.getElementsByClassName('previous')[0].getBoundingClientRect().width ) /this.number)+"px";
i.setAttribute('style',`height: ${height};width: ${width}`);
i.childNodes[0].style.width= width ;
i.childNodes[0].style.width= width ;
}
}
}
const carousel = new Carousel("#carousel");
carousel.makeCarousel();
<body style="background: #444;margin:0;">
<div id="carousel" data-view-number=7 data-autoscroll="on" data-width="100%" data-height="200px">
<img src="https://swachhcoin.com/img/001.png">
<img src="https://swachhcoin.com/img/002.png">
<img src="https://swachhcoin.com/img/003.png">
<img src="https://swachhcoin.com/img/004.png">
<img src="https://swachhcoin.com/img/006.png">
<img src="https://swachhcoin.com/img/007.png">
<img src="https://swachhcoin.com/img/009.png">
<img src="https://swachhcoin.com/img/010.png">
<img src="https://swachhcoin.com/img/011.png">
<img src="https://swachhcoin.com/img/012.png">
<img src="https://swachhcoin.com/img/013.png">
<img src="https://swachhcoin.com/img/014.png">
<img src="https://swachhcoin.com/img/015.png">
</div>
</body>