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 相关文章推荐
firefox事件处理之自动查找event的函数(用于onclick=foo())
Aug 05 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
Feb 22 Javascript
JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍
Apr 03 Javascript
JS组件中bootstrap multiselect两大组件较量
Jan 26 Javascript
js判断鼠标位置是否在某个div中的方法
Feb 26 Javascript
TypeScript学习之强制类型的转换
Dec 27 Javascript
详解vue组件通信的三种方式
Jun 30 Javascript
详解Vue2.0 事件派发与接收
Sep 05 Javascript
基于Vue的ajax公共方法(详解)
Jan 20 Javascript
vue2.0组件之间传值、通信的多种方式(干货)
Feb 10 Javascript
基于vue+echarts 数据可视化大屏展示的方法示例
Mar 09 Javascript
vue实现点击按钮“查看详情”弹窗展示详情列表操作
Sep 09 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 adodb连接带密码access数据库实例,测试成功
2008/05/14 PHP
PHP Cookie的使用教程详解
2013/06/03 PHP
PHP中生成UUID自定义函数分享
2015/06/10 PHP
php使用GD库创建图片缩略图的方法
2015/06/10 PHP
PHP函数实现从一个文本字符串中提取关键字的方法
2015/07/01 PHP
php 解决substr()截取中文字符乱码问题
2016/07/18 PHP
php读取XML的常见方法实例总结
2017/04/25 PHP
php生成条形码的图片的实例详解
2017/09/13 PHP
Django中通过定时任务触发页面静态化的处理方式
2018/08/29 PHP
php中青蛙跳台阶的问题解决方法
2018/10/14 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
2019/10/11 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
运用jquery实现table单双行不同显示并能单行选中
2009/07/25 Javascript
JQuery中阻止事件冒泡几种方式及其区别介绍
2014/01/15 Javascript
浅析tr的隐藏和显示问题
2014/03/05 Javascript
js使用for循环与innerHTML获取选中tr下td值
2014/09/26 Javascript
javascript实现window.print()去除页眉页脚
2014/12/30 Javascript
原生js编写焦点图效果
2016/12/08 Javascript
原生JS实现N级菜单的代码
2017/05/21 Javascript
JS运动特效之完美运动框架实例分析
2018/01/24 Javascript
如何以Angular的姿势打开Font-Awesome详解
2018/04/22 Javascript
Vue数据双向绑定的深入探究
2018/11/27 Javascript
vue实现折线图 可按时间查询
2020/08/21 Javascript
[01:00:12]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第一场
2018/04/09 DOTA
pygame播放音乐的方法
2015/05/19 Python
Python之用户输入的实例
2018/06/22 Python
Pytorch Tensor的索引与切片例子
2019/08/18 Python
Django 用户登陆访问限制实例 @login_required
2020/05/13 Python
喜诗官方在线巧克力店:See’s Candies
2017/01/01 全球购物
英国的屈臣氏:Boots博姿
2017/12/23 全球购物
DNA测试:Orig3n
2019/03/01 全球购物
程序员机试试题汇总
2012/03/07 面试题
音乐表演专业毕业生求职信
2013/10/14 职场文书
党组织公开承诺书
2014/03/29 职场文书
单位个人查摆问题及整改措施
2014/10/28 职场文书
群众路线个人剖析材料及整改措施
2014/11/04 职场文书