提问人:slapa 提问时间:10/18/2023 最后编辑:slapa 更新时间:10/18/2023 访问量:44
CSS 动画在 iOS 上非常缓慢、滞后和可怕,但在桌面上很好
CSS animations extremely slow, laggy, and horrible on iOS but fine on desktop
问:
我正在制作一个相当简单的网站,其中包含几个相当简单的CSS动画。例如,我的网站上有一个“喜欢”按钮,人们可以在其中喜欢评论。当人们点击“喜欢”按钮时,“心”会自我转换并缩放 2 倍,并有一个平滑的过渡。
在 Chrome 和 Firefox 的桌面上一切正常,但当我在 iOS(在我的 iPhone 15 Pro Max 上)尝试时,它非常慢、滞后且无法使用。
我还有一个提交按钮,上面有一些花哨的CSS关键帧,可以让小星星在提交按钮内移动,使其变得漂亮,虽然这个按钮的动画并不滞后,但iOS上的星星完全脱离了容器,溢出了iOS上的其他元素,而在桌面上,一切都很好。
超级令人沮丧!
我要求 chatgpt 帮助我为 iOS 进行 webkit 查询,在 Google 上尝试了几件事,但没有任何效果。老实说,我相信 chatgpt 给我的完全是胡说八道,这就是我来这里寻求帮助的原因。
.btn {
margin-top: 1rem;
margin-bottom: 1rem;
display: flex;
justify-content: center;
align-items: center;
width: 13rem;
overflow: hidden;
height: 3rem;
background-size: 300% 300%;
backdrop-filter: blur(1rem);
border-radius: 5rem;
transition: 0.5s;
animation: gradient_301 5s ease infinite;
border: double 4px transparent;
background-image: linear-gradient(#212121, #212121), linear-gradient(137.48deg, #ffdb3b 10%,#FE53BB 45%, #8F51EA 67%, #0044ff 87%);
background-origin: border-box;
background-clip: content-box, border-box;
}
#container-stars {
position: absolute;
z-index: -1;
width: 100%;
height: 100%;
overflow: hidden;
transition: 0.5s;
backdrop-filter: blur(1rem);
border-radius: 5rem;
}
strong {
z-index: 2;
font-family: 'Oooh Baby', cursive;
font-size: 22px;
letter-spacing: 5px;
color: #FFFFFF;
text-shadow: 0 0 4px white;
}
#glow {
position: absolute;
display: flex;
width: 12rem;
}
.circle {
width: 100%;
height: 30px;
filter: blur(2rem);
animation: pulse_3011 4s infinite;
z-index: -1;
}
.circle:nth-of-type(1) {
background: rgba(254, 83, 186, 0.636);
}
.circle:nth-of-type(2) {
background: rgba(142, 81, 234, 0.704);
}
.btn:hover #container-stars {
z-index: 1;
background-color: #212121;
}
.btn:hover {
transform: scale(1.1);
cursor: pointer;
}
.btn:active {
border: double 4px #FE53BB;
background-origin: border-box;
background-clip: content-box, border-box;
transition: 0.1s;
transform: scale(1.4);
animation: none;
}
.btn:active .circle {
background: #FE53BB;
}
#stars {
position: relative;
background: transparent;
width: 200rem;
height: 200rem;
}
#stars::after {
content: "";
position: absolute;
top: -10rem;
left: -100rem;
width: 100%;
height: 100%;
animation: animStarRotate 90s linear infinite;
}
#stars::after {
background-image: radial-gradient(#ffffff 1px, transparent 1%);
background-size: 50px 50px;
}
#stars::before {
content: "";
position: absolute;
top: 0;
left: -50%;
width: 170%;
height: 500%;
animation: animStar 60s linear infinite;
}
#stars::before {
background-image: radial-gradient(#ffffff 1px, transparent 1%);
background-size: 50px 50px;
opacity: 0.5;
}
@keyframes animStar {
from {
transform: translateY(0);
}
to {
transform: translateY(-135rem);
}
}
@keyframes animStarRotate {
from {
transform: rotate(360deg);
}
to {
transform: rotate(0);
}
}
@keyframes gradient_301 {
0% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0% 50%;
}
}
@keyframes pulse_3011 {
0% {
transform: scale(0.75);
box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.7);
}
70% {
transform: scale(1);
box-shadow: 0 0 0 10px rgba(0, 0, 0, 0);
}
100% {
transform: scale(0.75);
box-shadow: 0 0 0 0 rgba(0, 0, 0, 0);
}
}
.heart {
width: 30px;
margin: 0;
transition: 0.4s;
}
.heart:hover {
transition: 0.1s;
cursor: pointer;
transform: scale(1.5);
}
.heart:active {
transition: 0.3s;
transform: scale(3.7);
opacity: 0.1;
}
<button class="btn" type="button">
<strong>Submit</strong>
<div id="container-stars">
<div id="stars"></div>
</div>
<div id="glow">
<div class="circle"></div>
<div class="circle"></div>
</div>
</button>
<img src="https://images.emojiterra.com/google/noto-emoji/unicode-15/color/512px/2764.png" class="heart">
答: 暂无答案
评论