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写的数字拼图小游戏代码[学习参考]
Oct 29 Javascript
javascript 数字格式化输出的实现代码
Dec 10 Javascript
js出生日期 年月日级联菜单示例代码
Jan 10 Javascript
js字符串完全替换函数分享
Dec 03 Javascript
如何在Linux上安装Node.js
Apr 01 Javascript
JS控制文本域只读或可写属性的方法
Jun 24 Javascript
JS分页的实现(同步与异步)
Sep 16 Javascript
vue实现循环切换动画
Oct 17 Javascript
JavaScript实现shuffle数组洗牌操作示例
Jan 03 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
Jan 14 Javascript
js实现简单的点名器随机色实例代码
Sep 20 Javascript
如何利用js在两个html窗口间通信
Apr 27 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
如何将数据从文本导入到mysql
2006/10/09 PHP
PHP下对数组进行排序的函数
2010/08/08 PHP
跟我学Laravel之请求(Request)的生命周期
2014/10/15 PHP
php中文字符串截取多种方法汇总
2016/10/06 PHP
php基于闭包实现函数的自调用(递归)实例分析
2016/11/11 PHP
使用PHPMailer发送邮件实例
2017/02/15 PHP
PHP利用递归函数实现无限级分类的方法
2019/03/22 PHP
最近项目写了一些js,水平有待提高
2009/01/31 Javascript
JavaScript入门教程(2) JS基础知识
2009/01/31 Javascript
Javascript中定义方法的另类写法(批量定义js对象的方法)
2011/02/25 Javascript
JavaScript基础语法让人疑惑的地方小结
2012/05/23 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
2016/01/08 Javascript
Node.js中npm常用命令大全
2016/06/09 Javascript
JS使用单链表统计英语单词出现次数
2016/06/16 Javascript
全面解析JavaScript中“&amp;&amp;”和“||”操作符(总结篇)
2016/07/18 Javascript
angularjs实现猜数字大小功能
2020/05/20 Javascript
详解Vue项目在其他电脑npm run dev运行报错的解决方法
2018/10/29 Javascript
详解如何使用router-link对象方式传递参数?
2019/05/02 Javascript
JavaScript前后端JSON使用方法教程
2020/11/23 Javascript
[57:55]EG vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python时区设置方法与pytz查询时区教程
2013/11/27 Python
Python提取网页中超链接的方法
2016/09/18 Python
Python遍历文件夹和读写文件的实现方法
2017/05/10 Python
python3使用smtplib实现发送邮件功能
2018/05/22 Python
python内存监控工具memory_profiler和guppy的用法详解
2019/07/29 Python
Python实现生成密码字典的方法示例
2019/09/02 Python
Django filter动态过滤与排序实现过程解析
2020/11/26 Python
芬兰灯具网上商店:Nettilamppu.fi
2018/06/30 全球购物
几个SQL的面试题
2014/03/08 面试题
关于圣诞节的广播稿
2014/01/26 职场文书
机关工会开展学习雷锋活动总结
2014/03/01 职场文书
婚礼答谢词
2015/01/04 职场文书
导游词300字
2015/02/13 职场文书
单位政审意见范文
2015/06/04 职场文书
uni-app 微信小程序授权登录的实现步骤
2022/02/18 Javascript