gpt4 book ai didi

javascript - 使用 vanilla Javascript 实现更新 DOM 元素的最佳方法是什么?

转载 作者:行者123 更新时间:2023-11-28 06:43:12 25 4
gpt4 key购买 nike

我想要一个 div,它使用 vanilla javascript 执行以下操作:

  1. 完全淡出
  2. 更新新内容
  3. 新屏幕坐标的位置
  4. 淡入

取消也会中途淡出,因此如果用户快速单击按钮 20 次,它不会淡入/淡出 20 次,只是最近一次。

这是我现在的位置: https://jsfiddle.net/d685Ledu/

<body>

<div id="wrapper">
<p>Content content</p>
</div>

<button id="button">click me</button>
</body>



<script type="text/javascript">
var wrapper = document.getElementById('wrapper');
var fadeSpeed = 0.01;

document.getElementById('button').addEventListener('click', function(){
fadeOut();
updateDiv();
moveDiv();
fadeIn();
});

function updateDiv() {
wrapper.innerHTML= '<div>lots</div><div>of</div><div>new</div><div>content</div>';
}

function moveDiv() {
wrapper.style.top = '100px';
wrapper.style.left = '100px';
}

function fadeIn() {
var opacity = 0;

function increase() {
opacity += fadeSpeed;
if (opacity >= 1){
wrapper.style.opacity = 1;
return true;
}
wrapper.style.opacity = opacity;
requestAnimationFrame(increase);
}

increase();
}

function fadeOut() {
var opacity = 1;

function decrease() {
opacity -= fadeSpeed;
if (opacity <= 0){
wrapper.style.opacity = 0;
return true;
}
wrapper.style.opacity = opacity;
requestAnimationFrame(decrease);
}
decrease();
}

</script>

实现此目标最惯用的方法是什么?

最佳答案

如果您只是想更新特定的 div,则需要更新 margin-leftmargin-right

也就是说,将您的 moveDiv 函数更改为:

 function moveDiv() {   
wrapper.style["margin-left"]="100px";
wrapper.style["margin-top"]="100px";
}

正如我在第二条评论中所说,我强烈建议您研究一个框架。

Fiddle.

关于javascript - 使用 vanilla Javascript 实现更新 DOM 元素的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34183680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com