transition 动画与 display: none 冲突的问题

几种元素消失的属性

  • display: none; 元素消失,不占位。
  • visibility: hidden; 元素消失,占位。
  • opacity: 0;透明度设为0,元素看不见,占位。
  • width: 0;宽度设为0 ,元素看不见,不占位。

问题

  • transition与display搭配使用时,会导致过渡消失,直接呈现或者消失元素
  • 可能是transition过渡不支持display的改变,直接操作display会破坏transition的动画

解决方案

  • 解决办法一:用定时器(这种方法并不好)
btn2.onclick = function()
{
    xxx.style.display = "block";
    setTimeout(function()
    {
        xxx.style.opacity="1";
    };
};
  • 解决办法二:用 visibility 属性代替 display

style 属性的 display 被隐藏的控件不再占用显示时占用的位置
visibility 隐藏的控件仅仅是将控件设置成不可见了,控件仍然占俱原来的位置。

btn2.onclick = function()
{
    let t = document.documentElement.scrollTop;
    if(t>1)
    {     
        side.style.visibility="visible";//可见
        side.style.opacity = "1";       
    };
    if(t<=1)
    {
        side.style.opacity = "0";
        side.style.visibility="hidden";//不可见
    }
};
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值