vue如何通过opacity控制导航栏的动态显隐或其他样式的动画显隐效果

17 篇文章 1 订阅

如何通过opacity控制导航栏的动态显隐或其他样式的动画显隐效果

话不多说,先上图
在这里插入图片描述
这里两个导航栏分别是不同的组件(我使用的是Vue),但样式原理是一样的,可以用vuex或是父子组件传值的方式来控制v-show的true或false,在点击全屏按钮时,顶部导航栏会向父组件传递一个事件,在父组件进行监听,随后根组件会动态的向两个子组件(两个导航栏)派发当前v-show的值,之后我们通过settimeout函数令v-show这一事件做延迟处理,先让导航栏的opacity即透明度进行一个变化,待透明度完全变为0时(虽然此时透明度为0,不显示该元素,但仍然存在该元素,依旧会进行占位)触发v-show=“false”,这样 就达到了以上的效果

methods: {
    ChangeNav () {
      this.TopOpacity = 0
      this.LeftOpacity = 0
      this.transition = 'all 1s'
      setTimeout(() => {
        this.TOP = false
        this.LEFT = false
      }, 1000)
    }

这里是点击全屏按钮时的函数

GeneralControl () {
      this.TOP = true
      this.LEFT = true
      setTimeout(() => {
        this.TopOpacity = '1'
        this.LeftOpacity = '1'
        this.transition = '0.8s'
      }, 800)
    },

这个是恢复两条导航栏的显示

template>
  <div class="container">
    <top-navbar
    :TOP="TOP"
    @ChangeNav="ChangeNav"
    :style="{ 'opacity': TopOpacity, 'transition' : transition }"
    @NeedChangePlace="ChangePlace"
    @NeedReplace="Replace"
    ></top-navbar>

    <left-navbar
    :LEFT="LEFT"
    :style="{ 'opacity': LeftOpacity, 'transition': transition, 'top' : LeftNavTop }"
    @NeedChangeInnerwrapper="NeedChangeInnerwrapper"
    @NeedReplaceInnerwrapper="NeedReplaceInnerwrapper"
    >
    </left-navbar>

当然这里要提前在data中定义好,并且通过属性绑定的方式将两个导航栏的样式绑定好

TOP: true,
      LEFT: true,
      TopOpacity: '1',
      LeftOpacity: '1',
      transition: '',

data中要声明好

好啦,以上就是这个效果的显示方式啦!希望我们一同进步

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值