【发布时间】:2017-08-05 08:46:44
【问题描述】:
介绍信息: 我制作了一个固定菜单按钮,用于在使用移动设备时显示导航菜单。对于这个应用程序,我使用 Headroom.js 脚本在向下滚动时使按钮变小,以确保它不会阻塞太多内容。通过添加具有给定更改的类来应用动画/过渡。
在原始方法中,我通过更改父元素的height/width 和子元素的padding 使用CSS(和css 过渡)来更改按钮的大小和外观。
根据不同的网站,我读到的新方法可能/应该会更好,它是使用transform: scale() 更改按钮的大小。请注意,我还通过在此方法中应用translate3d(20px,20px,0) 来稍微移动元素。然而,当使用transform: scale() 方法滚动时,它感觉更流畅一些(虽然可能是安慰剂效应),但使用 chrome 开发工具的时间线给了我看似不确定的结果。
因此,我的一部分问题也是我应该如何评估最佳方法。 Chrome 开发工具中的时间线是最佳选择,还是有更好的方法?我应该根据时间线的哪些元素进行选择?另一件事是,根据您对图像和/或测试的解释以及您的知识,哪种方法表现最好(或理论上应该表现最好)?
您可以在下面看到每种方法的两个时间线示例。
更改高度/宽度和填充(原始方法):
你也可以在这里尝试不同的小提琴方法:
链接:Original method changing height/width and padding
链接到新方法:using transform:scale
请忽略一切糟糕的布局;特别是按钮。菜单按钮内的丑陋图像只是为了显示,我自己页面的布局中包含一个图像,并将其考虑到性能考虑。后面的图片也包括在内,因为它是一个网店,有很多可能会影响性能的图片。
在原始方法中进行更改的添加类的 CSS:
.mobile-nav.headroom--unpinned {
height: 40px;
width: 40px;
}
.headroom--unpinned .mobile-content{
padding-top:4px;
}
使用 transform:scale() 添加的类的 CSS:
.mobile-nav.headroom--unpinned {
transform:scale(.5) translate3d(20px,20px,0);
}
总结一下我的问题:
我如何评估哪些方法具有最佳性能,您认为哪种方法性能最好?
最后一点:我知道这些方法是不同的(在原始方法中为不同的事物和更多元素设置动画)但这是我现在更喜欢的 2 个选项。
【问题讨论】:
标签: javascript css css-transitions