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 相关文章推荐
javascript编程起步(第二课)
Jan 10 Javascript
jQuery结合PHP+MySQL实现二级联动下拉列表[实例]
Nov 15 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
Aug 04 Javascript
基于node实现websocket协议
Apr 25 Javascript
jQuery获取当前点击的对象元素(实现代码)
May 19 Javascript
微信小程序 template模板详解及实例
Feb 21 Javascript
基于vue实现swipe轮播组件实例代码
May 24 Javascript
shiro授权的实现原理
Sep 21 Javascript
基于Vuejs的搜索匹配功能实现方法
Mar 03 Javascript
在vue中使用v-bind:class的选项卡方法
Sep 27 Javascript
vue中改变滚动条样式的方法
Mar 03 Javascript
Vue如何实现组件间通信
May 15 Vue.js
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+缓存
2006/11/25 PHP
PHP 实现类似js中alert() 提示框
2015/03/18 PHP
通过修改Laravel Auth使用salt和password进行认证用户详解
2017/08/17 PHP
Laravel中获取路由参数Route Parameters的五种方法示例
2017/09/29 PHP
Laravel ORM 数据model操作教程
2019/10/21 PHP
jquery入门—数据删除与隔行变色以及图片预览
2013/01/07 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
JS嵌套函数调用上下文的问题解决
2014/03/26 Javascript
js实现百度联盟中一款不错的图片切换效果完整实例
2015/03/04 Javascript
javascript笔记之匿名函数和闭包
2017/02/06 Javascript
利用纯JS实现像素逐渐显示的方法示例
2017/08/14 Javascript
对vue中v-on绑定自定事件的实例讲解
2018/09/06 Javascript
原生js实现Flappy Bird小游戏
2018/12/24 Javascript
微信小程序第三方框架对比 之 wepy / mpvue / taro
2019/04/10 Javascript
[58:42]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第一局
2016/02/27 DOTA
Python 字典(Dictionary)操作详解
2014/03/11 Python
Python编程中的文件读写及相关的文件对象方法讲解
2016/01/19 Python
简单谈谈Python中的几种常见的数据类型
2017/02/10 Python
查看django版本的方法分享
2018/05/14 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
2018/05/25 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
2020/02/29 Python
django实现将后台model对象转换成json对象并传递给前端jquery
2020/03/16 Python
Python如何避免文件同名产生覆盖
2020/06/09 Python
GNC健安喜官方海外旗舰店:美国著名保健品牌
2017/01/04 全球购物
Love, Bonito国际官网:新加坡女装品牌
2021/03/13 全球购物
Eclipse面试题
2014/03/22 面试题
Linux Interview Questions For software testers
2013/05/17 面试题
销售文员岗位职责
2013/11/29 职场文书
会计专业的自荐信
2013/12/12 职场文书
绿色家庭事迹材料
2014/05/01 职场文书
《月球之谜》教学反思
2016/02/20 职场文书
2016学校先进党组织事迹材料
2016/02/29 职场文书
在 SQL 语句中处理 NULL 值的方法
2021/06/07 SQL Server
Python 的 sum() Pythonic 的求和方法详细
2021/10/16 Python
vue如何实现关闭对话框后刷新列表
2022/04/08 Vue.js
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
2023/05/08 MySQL