使用Javascript设置元素的宽度会产生意外的结果
我正在尝试为一个学校项目制作一个javascript图像旋转木马。我在制作的早期阶段,但是我已经遇到了问题 代码如下:使用Javascript设置元素的宽度会产生意外的结果,javascript,html,css,Javascript,Html,Css,我正在尝试为一个学校项目制作一个javascript图像旋转木马。我在制作的早期阶段,但是我已经遇到了问题 代码如下: 类转盘{ 构造器(选择器=“.carousel”){ 常数=5; 常量autoscroll='关闭'; const width=“100%”; const height=“200px”; this.selector=document.querySelector(选择器); this.number=(this.selector.dataset.viewNumber==未定义)?
类转盘{
构造器(选择器=“.carousel”){
常数=5;
常量autoscroll='关闭';
const width=“100%”;
const height=“200px”;
this.selector=document.querySelector(选择器);
this.number=(this.selector.dataset.viewNumber==未定义)?编号:this.selector.dataset.viewNumber;
this.autoScroll=(this.selector.dataset.autoScroll==未定义)?autoScroll:this.selector.dataset.autoScroll;
this.width=(this.selector.dataset.width==未定义)?width:this.selector.dataset.width;
this.height=(this.selector.dataset.height==未定义)?height:this.selector.dataset.height;
}
makeCarousel(){
设srcList=[];
让str=“←”;
让src;
对于(让我考虑一下这个.selector.children){
src=i.getAttribute(“src”);
srcList.push(src);
str=`${str}`;
}
str=`${str}→`;
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=“100%”;
rotate.style.overflow=“滚动”;
for(让我考虑这个.selector.childNodes[1].childNodes){
设height=this.selector.getBoundingClientRect().height+“px”;
让宽度=(this.selector.getBoundingClientRect().width/this.number)+“px”;
i、 setAttribute('style','height:${height};width:${width}`);
i、 子节点[0]。style.maxWidth=“100%”;
i、 子节点[0]。style.maxWidth=“100%”;
}
}
}
const转盘=新转盘(“转盘”);
carousel.makeCarousel();
console.log(“getBoundingClientRect的宽度:“+document.querySelector”(.carousel img holder”).getBoundingClientRect().Width)
console.log(“css样式的宽度:“+document.querySelector”(.carousel img holder”).style.Width)
您没有考虑下一个和上一个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 ;
请参阅下面的更新代码
类转盘{
构造器(选择器=“#转盘”){
常数=5;
常量autoscroll='关闭';
const width=“100%”;
const height=“200px”;
this.selector=document.querySelector(选择器);
this.number=(this.selector.dataset.viewNumber==未定义)?编号:this.selector.dataset.viewNumber;
this.autoScroll=(this.selector.dataset.autoScroll==未定义)?autoScroll:this.selector.dataset.autoScroll;
this.width=(this.selector.dataset.width==未定义)?width:this.selector.dataset.width;
this.height=(this.selector.dataset.height==未定义)?height:this.selector.dataset.height;
}
makeCarousel(){
设srcList=[];
让str=“←”;
让src;
对于(让我考虑一下这个.selector.children){
src=i.getAttribute(“src”);
srcList.push(src);
str=`${str}`;
}
str=`${str}→`;
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=“计算(100%-32px)”;
for(让我考虑这个.selector.childNodes[1].childNodes){
设height=this.selector.getBoundingClientRect().height+“px”;
让宽度=((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、 子节点[0]。样式。宽度=宽度;
i、 子节点[0]。样式。宽度=宽度;
}
}
}
const转盘=新转盘(“转盘”);
carousel.makeCarousel()代码>
您没有考虑下一个和上一个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 ;
请参阅下面的更新代码
类转盘{
构造器(选择器=“#转盘”){
常数=5;
常量autoscroll='关闭';
const width=“100%”;
const height=“200px”;
this.selector=document.querySelector(选择器);
this.number=(this.selector.dataset.viewNumber==未定义)?编号:this.selector.dataset.viewNumber;
this.autoScroll=(this.selector.dataset.autoScroll==未定义)?autoScroll:this.selector.dataset.autoScroll;
this.width=(this.selector.dataset.width==未定义)?width:this.selector.dataset.width;
this.height=(this.selector.dataset.height==未定义)?height:this.selector.dataset.height;
}
makeCarousel(){
设srcList=[];
让str=“←”;
让src;
对于(让我考虑一下这个.selector.children){
src=i.getAttribute(“src”);
srcList.push(src);
str=`${str}`;
}
str=`${str}→`;
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”;