javascript - 如何在不触发重绘的情况下移动页面元素?

标签 javascript html css css-transforms

我目前正在尝试弄清楚如何在不触发内容重绘的情况下移动网页上的元素(到任意位置)(从而错过 60fps 预算)。

我的方法是使用 transform: translate(...),因为合成将在 GPU 上完成,不需要对内容进行任何重绘。不过,当我更改 transform 属性时,该元素将被重新绘制。

我为这种情况创建了一个示例:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style>
        #moving {
            transform: translate(0, 0);
            width: 100px;
            height: 100px;
            background-color: red;
        }
    </style>
    <script src="http://code.jquery.com/jquery-2.0.3.js"></script>
</head>
<body>
<div id="moving"></div>
<script>
    setTimeout(function () {
        $('#moving').css('transform', 'translate(100px, 100px)');
    }, 2000);
</script>
</body>
</html>

最佳答案

你可以为此使用 css 关键帧

http://jsfiddle.net/9yqWY/

  #moving {
     animation: move 2s infinite;
     -webkit-animation: move 2s infinite;
     width: 100px;
     position:relative;
     height: 100px;
     background-color: red;
 }
 @keyframes move {
     0 {
         transform: translate(0);
         -webkit-transform: translate(0);
         -moz-transform: translate(0);
     }
     50% {
         transform: translate(100px);
         -webkit-transform: translate(100px);
         -moz-transform: translate(100px);
     }
     100% {
         transform: translate(0);
         -webkit-transform: translate(0);
         -moz-transform: translate(0);
     }
 }
 @-webkit-keyframes move {
     0 {
         transform: translate(0);
         -webkit-transform: translate(0);
         -moz-transform: translate(0);
     }
     50% {
         transform: translate(100px);
         -webkit-transform: translate(100px);
         -moz-transform: translate(100px);
     }
     100% {
         transform: translate(0);
         -webkit-transform: translate(0);
         -moz-transform: translate(0);
     }
 }

关于javascript - 如何在不触发重绘的情况下移动页面元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17942178/

相关文章:

javascript - ASP.NET WebForm 中的 jQueryMobile

javascript - javascript中输入类型文件将图像从客户端上传到服务器的替代方法是什么?

javascript - 如何控制下拉列表的展开方向?

html - 为什么当我给它们一个 margin-left 或将它们向左浮动时,我的图像会变小?

javascript - 随着鼠标位置的变化改变背景颜色

javascript - 将由多条线组成的标签在 D3 力定向图中的节点上垂直居中

php - 如何在我的 php/html 输出中显示我的 mysql 表列标题?

html - 将列表与另一个元素内联

html - 将表格的线条涂成红色

html - Bootstrap 容器不是静态的