CSS 过渡动画在IOS中表现异常

发布于 2022-09-11 17:55:41 字数 1843 浏览 26 评论 0

设置了一个隐藏的圆环,在页面开始时旋转露出。发现在IOS(safari)中过渡动画展示不完整,只展示了起始部分,后面直接跳转到结束状态了。

<!DOCTYPE html>
<html>
<head>
    <title>demo</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <style>
        .wrap {
            width: 200px;
            height: 100px;
            margin: 50px auto;
            position: relative;
            overflow: hidden;
        }
        .circular {
            height: 160px;
            width: 160px;
            border: 20px solid transparent;
            border-top: 20px solid green;
            border-right: 20px solid green;
            position: absolute;
            border-radius: 50%;
            transform: rotate(-225deg);
            transition: transform 2000ms ease-in;
            left: 0;
            top: 0; 
        }
        .circular.start {
            transform: rotate(-45deg);
        }
        .button {
            margin: 20px auto;
            background-color: #EEEEEE;
            text-align: center;
            padding: 10px 20px;
        }
    </style>
</head>
<body>
    <div class="wrap">
        <div class="circular"></div>
    </div>
    <div class="button">set</div>
    <script src="https://code.jquery.com/jquery-3.3.1.slim.js"></script>
    <script>
        var is = true
        $('.button').click(function () {
            $('.circular').toggleClass('start', is)
            is = !is
        })
        setTimeout(function () {
            $('.button').click()
        }, 100)
    </script>
</body>
</html>

经过调试,有两个方法可以避免出现这个问题,
1.setTimeout 触发时机设置在500ms以上
2.外层.wrap 不设置overflow

感觉应该是IOS渲染机制的问题,这里不是很了解,有没有大神科普一下,顺便给下解决方案。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文