Vue实现Header渐隐渐现效果的实例代码


Posted in Javascript onNovember 05, 2020

新建header.vue组件

引入到父组件Detail.vue中

Vue实现Header渐隐渐现效果的实例代码

header.vue

通过router-link标签设置to属性为地址,实现点击返回首页
tag标签设为div,就有了div的属性

Vue实现Header渐隐渐现效果的实例代码

<template>
 <div class="header">
 <router-link tag="div" to="/" class="header-abs">
 <div class="iconfont header-abs-back"></div>
 </router-link>
 <div class="header-fixed">
 <div class="header">
 景点详情
 <router-link to="/">
  <div class="iconfont header-fixed-back"></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.handleScroll方法会被执行

Vue实现Header渐隐渐现效果的实例代码

addEventListener() 方法,事件监听
你可以使用 removeEventListener() 方法来移除事件的监听。

语法:

element.addEventListener(event, function, useCapture);

第一个参数是事件的类型 (如 “click” 或 “scroll”).

第二个参数是事件触发后调用的函数。

第三个参数是个布尔值用于描述事件是冒泡还是捕获。该参数是可选的。

注意:不要使用 “on” 前缀。 例如,使用 “click” ,而不是使用 “onclick”。

渐隐渐现效果

Vue实现Header渐隐渐现效果的实例代码

这里用到了三元表达式,让opacity最大值只能是1

Vue实现Header渐隐渐现效果的实例代码

F12审查元素可看到style被添加到div上了

Vue实现Header渐隐渐现效果的实例代码

<template>
 <div class="header">
 <router-link tag="div" to="/" class="header-abs" v-show="showAbs">
 <div class="iconfont header-abs-back"></div>
 </router-link>
 <div class="header-fixed" v-show="!showAbs" :style="opacityStyle">
 <div class="header">
 景点详情
 <router-link to="/">
  <div class="iconfont header-fixed-back"></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渐隐渐现效果内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
js查找父节点的简单方法
Jun 28 Javascript
JavaScript中几种常见排序算法小结
Feb 22 Javascript
JQueryEasyUI Layout布局框架的使用
Apr 08 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
Jun 28 Javascript
js+csss实现的一个带复选框的下拉框
Sep 29 Javascript
jQuery对于显示和隐藏等常用状态的判断方法
Dec 13 Javascript
第一次接触神奇的Bootstrap网格系统
Jul 27 Javascript
vuex的使用及持久化state的方式详解
Jan 23 Javascript
基于vue2.0的活动倒计时组件countdown(附源码下载)
Oct 09 Javascript
ios中视频的最后一桢问题解决
May 14 Javascript
微信js-sdk 录音功能的示例代码
Nov 01 Javascript
微信小程序地图实现展示线路
Jul 29 Javascript
Nuxt pages下不同的页面对应layout下的页面布局操作
Nov 05 #Javascript
Vue2.x和Vue3.x的双向绑定原理详解
Nov 05 #Javascript
nuxt引入组件和公共样式的操作
Nov 05 #Javascript
jQuery列表动态增加和删除的实现方法
Nov 05 #jQuery
nuxt 实现在其它js文件中使用store的方式
Nov 05 #Javascript
解决nuxt 自定义全局方法,全局属性,全局变量的问题
Nov 05 #Javascript
vue实现点击出现操作弹出框的示例
Nov 05 #Javascript
You might like
smarty基础之拼接字符串的详解
2013/06/18 PHP
PHP中通过trigger_error触发PHP错误示例
2015/06/23 PHP
php如何获取文件的扩展名
2015/10/28 PHP
PHP常用的小程序代码段
2015/11/14 PHP
Yii2实现多域名跨域同步登录退出
2017/02/04 PHP
javascript 表单验证常见正则
2009/09/28 Javascript
从数组中随机取x条不重复数据的JS代码
2013/12/24 Javascript
jquery实现Ctrl+Enter提交表单的方法
2015/07/21 Javascript
js表单提交和submit提交的区别实例分析
2015/12/10 Javascript
Ajax分页插件Pagination从前台jQuery到后端java总结
2016/07/22 Javascript
AngularJS 使用ng-repeat报错 [ngRepeat:dupes]
2017/01/19 Javascript
jQuery布局组件EasyUI Layout使用方法详解
2017/02/28 Javascript
javaScript中封装的各种写法示例(推荐)
2017/07/03 Javascript
Vue进度条progressbar组件功能
2018/04/17 Javascript
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
layui实现form表单同时提交数据和文件的代码
2019/10/25 Javascript
js实现烟花特效
2020/03/02 Javascript
[06:07]辉夜杯现场观众互动 “比谁远送显示器”
2015/12/26 DOTA
[02:59]DOTA2完美大师赛主赛事第三日精彩集锦
2017/11/25 DOTA
python模拟登陆Tom邮箱示例分享
2014/01/13 Python
查找python项目依赖并生成requirements.txt的方法
2018/07/10 Python
python使用KNN算法识别手写数字
2019/04/25 Python
python numpy实现文件存取的示例代码
2019/05/26 Python
如何通过Python实现标签云算法
2019/07/02 Python
python实现邮件自动发送
2019/08/10 Python
阿里云ECS服务器部署django的方法
2019/08/29 Python
Django项目使用ckeditor详解(不使用admin)
2019/12/17 Python
Python如何基于Tesseract实现识别文字功能
2020/06/05 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
澳大利亚最受欢迎的女士度假服装:Kabana Shop
2020/10/10 全球购物
家庭困难证明
2014/10/12 职场文书
党员思想汇报材料
2014/12/19 职场文书
2015年社区精神文明工作总结
2015/05/26 职场文书
《狼牙山五壮士》教学反思
2016/02/17 职场文书
晶体管单管来复再生式收音机
2021/04/22 无线电
搭建Yolov5服务器
2022/04/30 Servers