CSS 动画在 iOS 上非常缓慢、滞后和可怕,但在桌面上很好

CSS animations extremely slow, laggy, and horrible on iOS but fine on desktop

提问人:slapa 提问时间:10/18/2023 最后编辑:slapa 更新时间:10/18/2023 访问量:44

问:

我正在制作一个相当简单的网站,其中包含几个相当简单的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">

JavaScript CSS iOS iPhone 手机

评论

1赞 Brett Donald 10/18/2023
请编辑您的问题以包含一个有效的堆栈代码段,以便我们可以在各种设备上测试您的代码。

答: 暂无答案