上拉刷新的时候,顶部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
相似问题