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

标签 javascript html css

我想要一个 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/

相关文章:

javascript - Jquery表单验证不可见字段

javascript - 如何安全地执行操作,然后从 .txt 文件中异步插入 250,000 多个单词,而不会导致堆栈溢出?

javascript - 如何在 JavaScript 中从不同端口向资源写入 URL(无需主机名)

javascript - 如何捕获所有这些变量的事件?

CSS 显示 : inline vs inline-block

javascript - ios使用javascript使用 objective-c 的值填充webview

javascript - 是否有任何 JavaScript 库可以读取 .cer 文件并从中获取 key ?

javascript - 通过输入键(不工作)或搜索按钮(工作)查询结果

html - 用 SVG 形状替换剪辑路径形状

css - 如何更改打开购物车中特色/最新模块扩展的宽度?