jQuery的animate函数 无法实现border-radius属性由50px->0的过渡动画?

jQuery的animate函数 无法实现border-radius属性由50px->0的过渡动画?

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .container{
            width: 800px;
            height: 400px;
            margin: 0 auto;
            position: relative;
            text-align: center;
            background: #ddd;
        }
        .container div{
            width: 50px;
            height: 50px;
            position: absolute;
            top: 50%;
            left: 50%;
            background-color: pink;
/*初始 的border-radius 50%*/
            border-radius: 50%;
        }
        .container div:first-child{
            margin-top: -100px;
        }
        .container div:nth-child(2){
            margin-left: -100px;
            background-color: blue;
        }
        .container div:nth-child(3){
            margin-left: 100px;
            background-color: yellow;
        }
        .container div:nth-child(4){
            background-color: green;
            margin-top: 100px;
        }


    </style>
</head>
<body>
    <div class="container">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
    </div>    
    <script src="https://code.jquery.com/jquery-3.4.0.min.js"></script>
    <script >
        
        var a = $('.container>div');
        $(a[0]).animate({
                'margin-top': '100px',
                // 此属性设置无效 。只能由小到大
                'borderRadius': 0,
            },1000);
            
        // setInterval(function () {
        //     $(a[0]).animate({
        //         'margin-top': '100px',
        //         'borderRadius': 25,
        //     },1000).animate({
        //         'margin-top': '-100px',
        //         'borderRadius': 0,
        //     },1000);

        //     $(a[1]).animate({
        //         'margin-left': '100px',
        //         'borderRadius': 25,
        //     },1000).animate({
        //         'margin-left': '-100px',
        //         'borderRadius': 0,
        //     },1000);

        //     $(a[2]).animate({
        //         'margin-left': '-100px',
        //         'borderRadius': 25,
        //     },1000).animate({
        //         'margin-left': '100px',
        //         'borderRadius': 0,
        //     },1000);

        //     $(a[3]).animate({
        //         'margin-top': '-100px',
        //         'borderRadius': 25,
        //     },1000).animate({
        //         'margin-top': '100px',
        //         'border-radius': 0,
        //     },1000);
        // },1000);
            
            
        
    </script>
</body>
</html>

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,这是因为jQuery中animate方法对border-radius的动画存在问题,可以尝试下面这种写发兼容火狐浏览器

$(a[0]).animate({
        'margin-top': '100px',
        "borderTopLeftRadius": 0,
        "borderTopRightRadius": 0,
        "borderBottomLeftRadius": 0,
        "borderBottomRightRadius": 0,

    }, 1000, function() {
        $(a[0]).animate({
            'margin-top': '-100px',
            'borderRadius': "50px",
        }, 1000, )
    });

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~

好帮手慕慕子 2019-04-29 11:01:36

同学你好, 因为在CSS样式中的border-radius的单位为百分比,使用animate函数实现属性变化的时候,需要使用对应的单位哦~~ 老师这里提供一个简单的例子, 供同学参考

http://img1.sycdn.imooc.com//climg/5cc6683f0001e31c06700435.jpg

同学可以结合示例,继续完成练习哦,如果在编写过程中遇到问题, 可以继续在问答区提问, 我们会继续为了你解答的

 另,问答区域经常会有一些同学分享自己的代码,同学也可以去问答区看看其他同学实现效果的思路是什么样的。可以吸取一下经验,.对自己也是有很多帮助的哦.

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~

  • 提问者 慕粉1473661185 #1
    刚刚测试了下,是Chrome下百分比、px都行, 只是firefox上使用animate设置border-radius只能增加不能减少。
    2019-04-29 13:40:26
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师