上拉刷新的时候,顶部header可以渐变消失吗?

来源:7-2 Header动画效果和显示隐藏

慕妹3422169

2019-08-07 18:02:18

我尝试在header里加<transition>标签,结果并没有什么卵用,虽然不是课程里的内容,但是很想做出来,求指点QAQ摆脱了

header组件代码如下:

<template>
  <transition name="header-fade">
    <me-navbar class="header" title="搜索框" v-show="visible">
      <i class="iconfont icon-scan" slot="left"></i>
      <!--    <i class="iconfont icon-scan" slot="center"></i>-->
      <!--    <div slot="center">搜索框</div>-->
      <i class="iconfont icon-msg" slot="right"></i>
    </me-navbar>
  </transition>

</template>

<script>
  import MeNavbar from 'base/navbar';

  export default {
    name: 'HomeHeader',
    components: {
      MeNavbar
    },
    data() {
      return {
        visible: true
      };
    },
    methods: {
      show() {
        this.visible = true;
      },
      hide() {
        this.visible = false;
      }
    }

  };
</script>

<style lang="scss" scoped>
  @import "~assets/scss/mixins";
  /*头部css样式配置*/
  .header {
    &.szh-navbar {
      background-color: transparent;
      transition: background-color 0.5s;
      /*background-color: $header-bgc-translucent;*/
    }

    &.header-transtion {
      background-color: $header-bgc-translucent;
    }

    .iconfont {
      color: $icon-color-default;
      font-size: $icon-font-size;
    }
  }

  .header-fade-enter-active {
    transition: opacity 0.4s ;
  }

  .header-fade-leave-active {
    transition: opacity 0.4s ;
  }

  .header-fade-enter, .header-fade-leave-to {
    opacity: 0 ;
  }
</style>

主页index代码如有需要可以看看:

<template>
  <div class="home">
    <header class="g-header-container">
      <!--  头部header组件-->
      <home-header :class="{'header-transtion': isHeaderTransition }" ref="header"></home-header>
    </header>
    <!--    滚动条组件 监听recommends根据返回的数据定义滚动参数 自定义事件下拉刷新-->
    <szh-scroll :watchedData="recommends"
                @pull-down="pullToRefresh"
                @pull-up="pullToLoadMore"
                @scroll-end="scrollEnd"
                @scroll="scroll"
                @pull-down-transition-end="pullDownTransitionEnd"
                ref="scroll"
    >
      <!--      幻灯片组件 传递slider注册参数-->
      <home-slider ref="slider"></home-slider>
      <!--      顶部导航组件-->
      <home-nav></home-nav>
      <!--      热卖推荐-->
      <home-recommend @loaded="getRecommends" ref="recommend"></home-recommend>
    </szh-scroll>
    <!--    返回顶部组件-->
    <div class="g-backtop-container">
      <szh-backtop :visible="isBacktopVisible" @backtop="backToTop"></szh-backtop>
    </div>
    <router-view></router-view>
  </div>
</template>

<script>
  import HomeHeader from './header';
  import HomeSlider from './slider';
  import SzhScroll from 'base/scroll';
  import HomeNav from './nav';
  import HomeRecommend from './recommend';
  import SzhBacktop from 'base/backtop';
  import {HEADER_TRANSITION_HEIGHT} from './config';

  export default {
    name: 'Home',
    components: {
      HomeHeader,
      HomeSlider,
      SzhScroll,
      HomeNav,
      HomeRecommend,
      SzhBacktop
    },
    data() {
      return {
        recommends: [],
        // 是否可以返回顶部
        isBacktopVisible: false,
        // 是否开启动画
        isHeaderTransition: false
      };
    },
    // created() {
    //   this.isBacktopVisible = true;
    // },
    methods: {
      updateScroll() {
      },
      getRecommends(recommends) {
        this.recommends = recommends;
      },
      pullToRefresh(end) {
        this.$refs.slider.update().then(end);
        // setTimeout(() => {
        //   end();
        // }, 1000);
      },
      pullDownTransitionEnd() {
        this.$refs.header.show();
      },
      // 上拉刷新更多
      pullToLoadMore(end) {
        // console.log(this.$refs.recommend);
        this.$refs.recommend.update().then(end).catch(err => {
          if (err) {
            console.log(err);
          }
          end();
        });
      },
      // 滚动时改变头部状态
      scroll(translate) {
        this.changeHeaderStatus(translate);
      },
      // 滚动条最终位置相关事件
      scrollEnd(translate, scroll, pulling) {
        if (!pulling) {
          this.changeHeaderStatus(translate);
        }
        ;
        // 滚过屏高度*0.4开始显示回到顶部按钮
        this.isBacktopVisible = translate < 0 && -translate > scroll.height * 0.4;
      },
      backToTop() {
        this.$refs.scroll && this.$refs.scroll.scrollToTop();
      },
      // 修改头部隐藏状态
      changeHeaderStatus(translate) {
        // console.log(translate);
        if (translate > 0) {
          // console.log(this.$refs.header.hide());
          this.$refs.header.hide();

          return;
        }
        ;
        this.$refs.header.show();
        this.isHeaderTransition = -translate > HEADER_TRANSITION_HEIGHT;
      }
    }
  };
</script>

<style lang="scss" scoped>
  @import "~assets/scss/mixins";

  .home {
    overflow: hidden;
    width: 100%;
    height: 100%;
    background-color: $bgc-theme;
  }

  /*.g-backtop-container {*/
  /*  width: 45px;*/
  /*  height: 45px;*/
  /*}*/
</style>


写回答

1回答

慕课网的粉

2019-08-07

兄弟呀把你代码放在源码里一堆报错根本无从下手你瞅瞅

http://img.mukewang.com/climg/5d4aaf610001f4fe04570176.jpg

你看下这个能不能帮助你https://blog.csdn.net/weixin_38897313/article/details/89358787

0

0 学习 · 10739 问题

查看课程