display和transition过渡冲突 元素移动显现消失的解决方案

display:none的时候,页面文档流中将不会存在该元素。transition无法对一个从有到无的元素产生过渡效果(v-show v-if同样冲突)

解决方案

1.用visibility:hidden;代替display:none; 用visibility:visible;代替display:block;

visibility不可见但仍然占位置

2.display属性不支持过渡,那么我们可以让其他可见的属性过渡,并使用定时器分开执行(先display block 过0.x秒再执行其他元素过渡),看起来就像display过渡了一样。

3.对元素的height/width进行设定,从0到元素本身的高度的一个过度。上下/左右的显现/消失+top/left位移+height/width+transition是一个比较好的解决办法。height的过渡0-100vh是从上往下显现    100vh-0是从下往上消失 width的过渡0-100vw是从左向右显现    100vw-0是从右向左消失 

4.transform: translate();向上或向左位移不会增加位置 元素会消失 但仍然占据原位置影响其他元素布局 设置绝对定位可解决  向右或向下超过100vw/100vh 位移会增加页面长宽

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值