握瑾怀瑜
握瑾怀瑜
  • 发布:2021-09-23 17:36
  • 更新:5 天前
  • 阅读:891

【报Bug】style绑定css属性animation未生效,必须写在下面的css里面才生效

分类:uni-app

产品分类: uniapp/H5

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: Mac os Big Sur 11.5.2

HBuilderX类型: Alpha

HBuilderX版本号: 3.2.7

浏览器平台: Chrome

浏览器版本: 93.0.4577.82

项目创建方式: HBuilderX

示例代码:

实际示例代码:

<view :style="'width:150rpx;height:150rpx;background:red;animation:modeRight 5s infinite'"></view>  
<style>  
        .test{  
            width:100px;  
            height:100px;  
            background:red;  
            position:relative;  
            animation:modeRight 5s infinite;  
        }  

        @keyframes modeRight  
        {  
            from {  
              transform: translateX(0%);  
            }  
            to {  
              transform: translateX(100%);  
            }  
        }  
</style>

操作步骤:

任意一个vue文件写入:

<view :style="'width:150rpx;height:150rpx;background:red;animation:modeRight 5s infinite'"></view>  
<style>  
        .test{  
            width:100px;  
            height:100px;  
            background:red;  
            position:relative;  
            animation:modeRight 5s infinite;  
        }  

        @keyframes modeRight  
        {  
            from {  
              transform: translateX(0%);  
            }  
            to {  
              transform: translateX(100%);  
            }  
        }  
</style>

写在style里面是不生效的,但是我只要把style删了,改成class="test"就正常,由于我这个5s不是固定,会随机的,所以必须写在style里面

预期结果:
<view class="test"></view>  
<style>  
        .test{  
            width:100px;  
            height:100px;  
            background:red;  
            position:relative;  
            animation:modeRight 5s infinite;  
        }  

        @keyframes modeRight  
        {  
            from {  
              transform: translateX(0%);  
            }  
            to {  
              transform: translateX(100%);  
            }  
        }  
</style>

希望在style里面绑定后,可以实现绑定class的效果!

实际结果:

只要不是绑定class,写在style中,就不生效,期望可以如绑定class一样生效

bug描述:

自定义动画modeRight,单独写样式已测是生效的,除非这个view绑定一个class,然后在class里面写animation就是生效的,只要写在style里面,就不生效,但是我这个5s不是固定,会随机的,所以必须写在style里面,所以无法绑定固定的class,导致它不生效
2021-09-23 17:36 负责人:无 分享
已邀请:
非流云

非流云

刚解决了,只有在app.vue里面定义的keyframes才能在style里面使用

握瑾怀瑜

握瑾怀瑜 (作者)

试了一下有同学提出的对象写法,同样不生效

<view :style="{'height':'150rpx','width':'150rpx','background':'red','animation':'modeRight 5s infinite'}"></view>
握瑾怀瑜

握瑾怀瑜 (作者)

经测试,H5是真的不生效,但是微信浏览器正常,按理说这个是css特性,H5应该是兼容的吧?

vastwu

vastwu

同求解

z***@163.com

z***@163.com - 前端开发

我的也是,大佬解决了吗

非流云

非流云

我今天也遇到了这个问题,但是很奇葩的是animate.css第三方库的就能用,这就很扯淡

秋裤

秋裤

我也遇到这个问题了,刚解决,可以把动画绑在一个新类名里面,然后条件添加类名,效果也一样

feyoudaola

feyoudaola

我来解答吧:
样式中添加了 scoped,会导致.alarmIcon中的 animation 和 keyframe 中的动画会添加一个唯一标识,然后调用函数的时候 animation 是没有对应的标识的。

解决方案 动画拎出来写个全局动画。第二种就是 style上写动画

要回复问题请先登录注册