gpt4 book ai didi

CSS,向左/向右切换以转换/翻译以获得更好的性能

转载 作者:行者123 更新时间:2023-11-28 01:05:27 32 4
gpt4 key购买 nike

我发现这个很好的进度条 CSS 动画。

但我想transform: translate而不是left/right

如何切换到 transform 它?我试过了,但它不起作用:

https://codepen.io/shalimano/pen/wBmNGJ

body{
background:#ffffff;
margin:50px 300px;
}

.slider{
position:absolute;
width:1000px;
height:5px;
overflow-x: hidden;
}

.line{
position:absolute;
opacity: 0.4;
background:#4a8df8;
width:150%;
height:5px;
}

.subline{
position:absolute;
background:#4a8df8;
height:5px;
}
.inc{
animation: increase 2s infinite;
}
.dec{
animation: decrease 2s 0.5s infinite;
}

@keyframes increase {
from { left: -5%; width: 5%; }
to { left: 130%; width: 100%;}
}
@keyframes decrease {
from { left: -80%; width: 80%; }
to { left: 110%; width: 10%;}
}
<div class="slider">
<div class="line"></div>
<div class="subline inc"></div>
<div class="subline dec"></div>
</div>

第一次尝试:

@keyframes increase {
from { transform: translateX(-5%); width: 5%; }
to { transform: translateX(130%); width: 100%;}
}
@keyframes decrease {
from { transform: translateX(-100%); width: 80%; }
to { transform: translateX(1100%); width: 10%;}
}

但这不一样。

最佳答案

您应该考虑 translate 的百分比值这一事实与元素大小相关,而不是父元素大小,如top/left为了获得良好的性能,您还需要更换 width通过 scale这样你就只使用转换,你不会trigger layout changes .

这是仅使用转换的代码的近似值:

body {
background: #ffffff;
margin: 50px 10px;
position:relative;
}

.slider {
position: absolute;
left:0;
right:0;
height: 5px;
overflow-x: hidden;
background: rgba(74, 141, 248, 0.4);
}

.slider:before,
.slider:after {
content: "";
position: absolute;
background: #4a8df8;
height: 5px;
width:100%;
transform:scaleX(0);
animation: increase 2s infinite linear;
}

.slider:after {
animation-delay:1s;
}

@keyframes increase {
from {
transform:translateX(0%) scaleX(0);
transform-origin:left;
}
50% {
transform-origin:left;
}
60% {
transform:translateX(0%) scaleX(0.5);
transform-origin:right;
}
80% {
transform:translateX(20%) scaleX(0.3);
transform-origin:right;
}
100% {
transform:translateX(0%) scaleX(0);
transform-origin:right;
}
}
<div class="slider">
</div>

关于CSS,向左/向右切换以转换/翻译以获得更好的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52394512/

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