使用 javascript 更改 div 宽度并移动内部 div

Posted

技术标签:

【中文标题】使用 javascript 更改 div 宽度并移动内部 div【英文标题】:Use javacript to change a div width and move an inner div 【发布时间】:2022-01-04 01:19:04 【问题描述】:

我需要使用按钮驱动的 javascript 将右对齐的 div 从一个位置移动到另一个位置。

因此页面被渲染,外部 div 是使用position:relative;width:250px; 设置的宽度。内部 div 使用position:absolute;right:0px; 将其放置在外部 div 的最右侧。

我假设如果我的 javascript 设置了外部 div 的宽度,它会改变外部 div 的宽度,而内部 div 会相对移动。但它不会移动(即使获取外部 div 的宽度值确认已设置新值)。

这是否意味着一旦页面被渲染就不能改变 div 的宽度?因为如果浏览器窗口宽度发生变化,它们可以被更改,我认为这是可能的。

<div id="test" style="display:inline-block;position:relative;width:250px;">
    <div style="display:inline-block;">
        Some text
    </div>
    <div style="display:inline-block;position:absolute;right:0px;">
        Some more text
    </div>
</div>
<br>
<br>
<button type="button" onclick="resizeouter(500);">
    Move Right
</button>

<script>
function resizeouter(newsize)
    document.getElementById('test').width=newsize+"px";
    //alert(document.getElementById('test').width);

</script>

我尝试过使用和不使用 +"px"。

JSFiddle

提前致谢。

【问题讨论】:

【参考方案1】:

你需要添加.style.width

https://www.w3schools.com/jsref/prop_style_width.asp

function resizeouter(elementID, newsize)
  let div = document.getElementById(elementID); // current element
  let currentWidth = div.offsetWidth; // current width of your element
  let finalWidth = currentWidth + newsize; // addition of current width + newsize

  div.style.width=finalWidth+"px"; // set the new width for this element 
  //alert(document.getElementById('test').width);
    
  // debug infos
  console.log(currentWidth + ' + ' + newsize + ' = ' + finalWidth);
<div id="test" style="display:inline-block;position:relative;width:250px;">
    <div style="display:inline-block;">
        Some text
    </div>
    <div style="display:inline-block;position:absolute;right:0px;">
        Some more text
    </div>
</div>
<br>
<br>
<button type="button" onclick="resizeouter('test', 500);">
    Move Right
</button>

【讨论】:

这完全有效且有意义。谢谢! 请验证我的答案【参考方案2】:

你要找的是style.width:

document.getElementById('test').style.width= newsize+"px";

【讨论】:

我看了这么久都没注意到它不见了。谢谢!

以上是关于使用 javascript 更改 div 宽度并移动内部 div的主要内容,如果未能解决你的问题,请参考以下文章

使用 Javascript 更改 CSS 值

如何使用 vanilla JavaScript 查找 div 的宽度?

修改 iframe 中 div 元素的宽度和高度 - 跨域策略

如何根据 <div> 元素的高度或宽度更改其颜色?

媒体查询更改 Div 背景颜色但不更改其宽度?

javascript 如何获取div中的label标签的宽度?