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 相关文章推荐
建立良好体验度的Web注册系统ajax
Jul 09 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
Apr 15 Javascript
JS组件Bootstrap实现下拉菜单效果代码
Apr 26 Javascript
jquery判断对象是否为空并遍历对象的简单实例
Jul 26 Javascript
原生js实现键盘控制div移动且解决停顿问题
Dec 05 Javascript
node.js中cluster的使用教程
Jun 09 Javascript
利用JavaScript如何查询某个值是否数组内
Jul 30 Javascript
JS基于for语句编写的九九乘法表示例
Jan 04 Javascript
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
Aug 24 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
Dec 24 Javascript
返回上一个url并刷新界面的js代码
Sep 12 Javascript
Javascript文本框脚本实现方法解析
Oct 30 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
用php过滤危险html代码的函数
2008/07/22 PHP
PHP性能优化工具篇Benchmark类调试执行时间
2011/12/06 PHP
php中判断文件存在是用file_exists还是is_file的整理
2012/09/12 PHP
PHP检测移动设备类mobile detection使用实例
2014/04/14 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
PHP中Static(静态)关键字功能与用法实例分析
2019/04/05 PHP
PHP编程一定要改掉的5个不良习惯
2020/09/18 PHP
QQ登录简单实现代码
2021/03/09 Javascript
JS字符串处理实例代码
2013/08/05 Javascript
node.js中的fs.lchmod方法使用说明
2014/12/16 Javascript
node.js中格式化数字增加千位符的几种方法
2015/07/03 Javascript
javascript类型系统——undefined和null全面了解
2016/07/13 Javascript
JS实现兼容火狐及IE iframe onload属性的遮罩层隐藏及显示效果
2016/08/23 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
2018/04/17 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
2018/05/04 Javascript
vue仿element实现分页器效果
2018/09/13 Javascript
elementUI Tree 树形控件的官方使用文档
2019/04/25 Javascript
微信小程序webview 脚手架使用详解
2019/07/22 Javascript
javascript实现弹出层效果
2019/12/10 Javascript
vue Element左侧无限级菜单实现
2020/06/10 Javascript
python监控网卡流量并使用graphite绘图的示例
2014/04/27 Python
Python语言的变量认识及操作方法
2018/02/11 Python
python下对hsv颜色空间进行量化操作
2020/06/04 Python
李维斯牛仔裤荷兰官方网站:Levi’s NL
2020/08/23 全球购物
linux面试题参考答案(2)
2015/12/06 面试题
广州某公司软件工程师面试题
2014/12/22 面试题
数控技术专科生自我评价
2014/01/08 职场文书
大学毕业感言100字
2014/02/03 职场文书
机械设计及其自动化求职推荐信
2014/02/17 职场文书
2014国培学习感言
2014/03/05 职场文书
个人贷款承诺书
2014/03/28 职场文书
校庆活动方案
2014/03/31 职场文书
圣诞节活动策划方案
2014/06/09 职场文书
义和团口号
2014/06/17 职场文书
班级活动总结格式
2014/08/30 职场文书
合同和协议有什么区别?
2014/10/08 职场文书