Vue Header漸隠漸現効果を実現する実例コード


新しいheader.vueコンポーネント
親コンポーネントDetail.vueに導入
在这里插入图片描述
header.vuerouter-linkタグ設定to により、クリックしてトップページに戻ることができます。
タグをdivとすると、divの属性があります。
在这里插入图片描述

<template>
 <div class="header">
 <router-link tag="div" to="/" class="header-abs">
 <div class="iconfont header-abs-back">&#xe685;</div>
 </router-link>
 <div class="header-fixed">
 <div class="header">
     
 <router-link to="/">
  <div class="iconfont header-fixed-back">&#xe685;</div>
 </router-link>
 </div>
 </div>
 </div>
</template>

<script>
export default {
 name: 'DetailHeader'
}
</script>

<style lang="scss" scoped>
@import '~styles/varibles.scss';
.header-abs {
 position: absolute;
 left: 0.2rem;
 top: 0.2rem;
 width: 0.8rem;
 height: 0.8rem;
 line-height: 0.8rem;
 text-align: center;
 border-radius: 0.4rem;
 background: rgba(0, 0, 0, 0.8);
 .header-abs-back {
 color: #fff;
 font-size: 0.4rem;
 }
}
.header-fixed {
 position: fixed;
 top: 0;
 left: 0;
 right: 0;
 height: $HeaderHeight;
 line-height: $HeaderHeight;
 text-align: center;
 color: #fff;
 background: $bgColor;
 .header-fixed-back {
 position: absolute;
 top: 0;
 left: 0;
 color: #fff;
 width: 0.64rem;
 text-align: center;
 font-size: 0.4rem;
 }
}
</style>
論理部分
activatedフック関数を呼び出します。私たちはkeepaliveを使っていますので、ページが展示されているとactivatedフックが実行されます。
以下の図の意味は、「scroll」イベントを結びつけると、対応するthis.handleScrroll方法が実行されます。
在这里插入图片描述
addEvent Listener()方法、イベント傍受
イベントの傍受を除去するためにremovevevevevevent Listener()法を使用することができます。
構文:

element.addEventListener(event, function, useCapture);
最初のパラメータは、イベントのタイプ(例えば「click」または「scroll」)である。
二つ目のパラメータは、イベントトリガ後に呼び出す関数です。
第3のパラメータは、イベントが発泡するかそれとも捕獲するかを記述するためのブール値である。このパラメータはオプションです。
注意:「on」プレフィックスは使用しないでください。例えば、「click」ではなく「onclick」を使います。
フェードアウト効果
在这里插入图片描述
ここでは三元表現を使っています。opacityの最大値は1だけです。
在这里插入图片描述
F 12審査要素はstyleがdivに追加されていることが見えます。
在这里插入图片描述

<template>
 <div class="header">
 <router-link tag="div" to="/" class="header-abs" v-show="showAbs">
 <div class="iconfont header-abs-back">&#xe685;</div>
 </router-link>
 <div class="header-fixed" v-show="!showAbs" :style="opacityStyle">
 <div class="header">
     
 <router-link to="/">
  <div class="iconfont header-fixed-back">&#xe685;</div>
 </router-link>
 </div>
 </div>
 </div>
</template>

<script>
export default {
 name: 'DetailHeader',
 data() {
 return {
 showAbs: true,
 opacityStyle: {
 opacity: 0
 }
 }
 },
 methods: {
 handleScroll() {
 console.log('scroll')
 // console.log(document.documentElement.scrollTop)
 const top = document.documentElement.scrollTop
 if (top > 60) {
 let opacity = top / 140
 //   opacity        1
 opacity = opacity > 1 ? 1 : opacity
 this.opacityStyle = { opacity }
 this.showAbs = false
 } else {
 this.showAbs = true
 }
 }
 },
 activated() {
 window.addEventListener('scroll', this.handleScroll)
 },
 deactivated() {
 window.removeEventListener('scroll', this.handleScroll)
 }
}
</script>

<style lang="scss" scoped>
@import '~styles/varibles.scss';
.header-abs {
 position: absolute;
 left: 0.2rem;
 top: 0.2rem;
 width: 0.8rem;
 height: 0.8rem;
 line-height: 0.8rem;
 text-align: center;
 border-radius: 0.4rem;
 background: rgba(0, 0, 0, 0.8);
 .header-abs-back {
 color: #fff;
 font-size: 0.4rem;
 }
}
.header-fixed {
 position: fixed;
 top: 0;
 left: 0;
 right: 0;
 height: $HeaderHeight;
 line-height: $HeaderHeight;
 text-align: center;
 color: #fff;
 background: $bgColor;
 .header-fixed-back {
 position: absolute;
 top: 0;
 left: 0;
 color: #fff;
 width: 0.64rem;
 text-align: center;
 font-size: 0.4rem;
 }
}
</style>
ここで、VueのHeader漸現効果を実現するための実例コードについての記事を紹介します。Vueに関する詳細な効果内容は以前の文章を検索したり、以下の関連記事を見たりしてください。これからもよろしくお願いします。