我的CSS动画在iOS上无法正常工作

12

请访问http://facelesstolegendary.com

我看了这里的几篇文章,发现我需要在我的转换等属性前加上-webkit-前缀。

我已经这样做了,但在iOS上仍然无法正常工作。它可以在我的桌面浏览器上运行。

以下是相关代码:

.cb-slideshow,
.cb-slideshow:after { 
    position: fixed;
    width: 100%;
    height: 100%;
    top: 0px;
    left: 0px;
    z-index: 0; 
}
.cb-slideshow:after { 
    content: '';
    background: transparent url(pattern.png) repeat top left; 
}

.cb-slideshow li span { 
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0px;
    left: 0px;
    color: transparent;
    background-size: cover;
    background-position: 50% 50%;
    background-repeat: none;
    opacity: 0;
    -webkit-opacity: 0;
    z-index: 0;
    animation: imageAnimation 36s linear infinite 0s; 
    -webkit-animation: imageAnimation 36s linear infinite 0s; 
}

.cb-slideshow li div { 
    z-index: 1000;
    position: absolute;
    bottom: 30px;
    left: 0px;
    width: 100%;
    text-align: center;
    opacity: 0;
    -webkit-opacity: 0;
    color: #fff;
    animation: titleAnimation 36s linear infinite 0s; 
    -webkit-animation: titleAnimation 36s linear infinite 0s; 
}
.cb-slideshow li div h3 { 
    font-family: 'BebasNeueRegular', 'Arial Narrow', Arial, sans-serif;
    font-size: 240px;
    padding: 0;
    line-height: 200px; 
}

.cb-slideshow li:nth-child(1) span { 
    background-image: url(faceless.jpg) 
}
.cb-slideshow li:nth-child(2) span { 
    background-image: url(legendary.jpg);
    animation-delay: 6s; 
    -webkit-animation-delay: 6s; 
}
.cb-slideshow li:nth-child(3) span { 
    background-image: url(faceless.jpg);
    animation-delay: 12s; 
    -webkit-animation-delay: 12s; 
}
.cb-slideshow li:nth-child(4) span { 
    background-image: url(legendary.jpg);
    animation-delay: 18s; 
    -webkit-animation-delay: 18s; 
}
.cb-slideshow li:nth-child(5) span { 
    background-image: url(faceless.jpg);
    animation-delay: 24s; 
    -webkit-animation-delay: 24s; 
}
.cb-slideshow li:nth-child(6) span { 
    background-image: url(legendary.jpg);
    animation-delay: 30s; 
    -webkit-animation-delay: 30s; 
}

.cb-slideshow li:nth-child(2) div { 
    animation-delay: 6s; 
    -webkit-animation-delay: 6s; 
}
.cb-slideshow li:nth-child(3) div { 
    animation-delay: 12s; 
    -webkit-animation-delay: 12s; 
}
.cb-slideshow li:nth-child(4) div { 
    animation-delay: 18s; 
    -webkit-animation-delay: 18s; 
}
.cb-slideshow li:nth-child(5) div { 
    animation-delay: 24s; 
    -webkit-animation-delay: 24s; 
}
.cb-slideshow li:nth-child(6) div { 
    animation-delay: 30s; 
    -webkit-animation-delay: 30s; 
}

.no-cssanimations .cb-slideshow li span{
 opacity: 1;
 -webkit-opacity: 1;
}

@media screen and (max-width: 1140px) { 
    .cb-slideshow li div h3 { font-size: 140px }
}
@media screen and (max-width: 600px) { 
    .cb-slideshow li div h3 { font-size: 80px }
}

@keyframes imageAnimation { 
 0% {
     opacity: 0;
     -webkit-opacity: 0;
     animation-timing-function: ease-in;
     -webkit-animation-timing-function: ease-in;
 }
 8% {
     opacity: 1;
     -webkit-opacity: 1;
     transform: scale(1.05);
     -webkit-transform: scale(1.05);
     animation-timing-function: ease-out;
     -webkit-animation-timing-function: ease-out;
 }
 17% {
     opacity: 1;
     -webkit-opacity: 1;
     transform: scale(1.1) rotate(3deg);
     -webkit-transform: scale(1.1) rotate(3deg);
 }
 25% {
     opacity: 0;
     -webkit-opacity: 0;
     transform: scale(1.1) rotate(3deg);
     -webkit-transform: scale(1.1) rotate(3deg);
 }
 100% { 
  opacity: 0 
  -webkit-opacity: 0 
 }
}
<ul class="cb-slideshow">
    <li>
        <span>Image 01</span>
        <div>
        </div>
    </li>
    <li>
        <span>Image 02</span>
        <div>
        </div>
    </li>
    <li>
        <span>Image 03</span>
        <div>
        </div>
    </li>
    <li>
        <span>Image 04</span>
        <div>
        </div>
    </li>
    <li>
        <span>Image 05</span>
        <div>
        </div>
    </li>
    <li>
        <span>Image 06</span>
        <div>
        </div>
    </li>
</ul>

2个回答

14
对于iOS 9之前的版本,你需要在你的@keyframes前加上-webkit-前缀,并将-webkit-前缀的动画和过渡效果放在那里,而不是放在你原来的@keyframes中。
@keyframes imageAnimation { 
    0% {
        opacity: 0;
        -webkit-opacity: 0;
        animation-timing-function: ease-in;
        -webkit-animation-timing-function: ease-in;
    }

变成:

@-webkit-keyframes imageAnimation {
    0% {
        -webkit-opacity: 0;
        -webkit-animation-timing-function: ease-in;
    }

@keyframes imageAnimation {
    0% {
        opacity: 0;
        animation-timing-function: ease-in;
    }

等等。

我尝试了所有这些方法,但仍然无法正常工作。我正在特定时间间隔内更改内容。在 iPhone 12 Pro (iOS 15) 上进行了测试。 @-webkit-keyframes change { 0% { -webkit-content:"5"; } 34% { -webkit-content: "7"; } 67% { -webkit-content: "9"; } 100% { -webkit-content: "5"; } } - Shihab EK
1
@ShihabEK content 不是供应商前缀属性。它也只能在伪元素上使用。 - TylerH
@TylerH,感谢你与我们分享你的解决方案,但是对我来说并没有起作用。 - Abhishek Raj
@AbhishekRaj iOS自9版本起已支持无前缀的关键帧。 - TylerH

-2

你在其他地方使用过 -webkit-overflow-scrolling: touch; 吗?试着删除它。


这并没有提供问题的答案。如果您想对作者进行批评或请求澄清,请在他们的帖子下留言。 - Johan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接