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 相关文章推荐
表头固定(利用jquery实现原理介绍)
Nov 08 Javascript
zTree插件之单选下拉菜单实例代码
Nov 07 Javascript
Javascript操作表单实例讲解(下)
Jun 20 Javascript
JQuery Ajax 异步操作之动态添加节点功能
May 24 jQuery
js自定义弹框插件的封装
Aug 24 Javascript
详解基于 Nuxt 的 Vue.js 服务端渲染实践
Oct 24 Javascript
使用Bootstrap4 + Vue2实现分页查询的示例代码
Dec 21 Javascript
快速解决Vue项目在IE浏览器中显示空白的问题
Sep 04 Javascript
vue+web端仿微信网页版聊天室功能
Apr 30 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
May 12 Javascript
微信内置浏览器图片查看器的代码实例
Oct 08 Javascript
Js实现粘贴上传图片的原理及示例
Dec 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
解密ThinkPHP3.1.2版本之模板继承
2014/06/19 PHP
自编函数解决pathinfo()函数处理中文问题
2014/11/03 PHP
PHP类的封装与继承详解
2015/09/29 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
2016/10/17 PHP
jQuery 源码分析笔记(3) Deferred机制
2011/06/19 Javascript
兼容IE和FF的图片上传前预览js代码
2013/05/28 Javascript
基于jquery异步传输json数据格式实例代码
2013/11/23 Javascript
在Mac OS下使用Node.js的简单教程
2015/06/24 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
2015/10/26 Javascript
分享几种比较简单实用的JavaScript tabel切换
2015/12/31 Javascript
javascript 判断一个对象为数组的方法
2017/05/03 Javascript
Angular2入门教程之模块和组件详解
2017/05/28 Javascript
es6学习之解构时应该注意的点
2017/08/29 Javascript
jQuery判断网页是否已经滚动到浏览器底部的实现方法
2017/10/27 jQuery
vue select选择框数据变化监听方法
2018/08/24 Javascript
原生JavaScript实现贪吃蛇游戏
2020/11/04 Javascript
小程序自定义弹框效果
2020/11/16 Javascript
小程序自定义圆形进度条
2020/11/17 Javascript
django框架model orM使用字典作为参数,保存数据的方法分析
2019/06/24 Python
python循环输出三角形图案的例子
2019/11/22 Python
numpy创建单位矩阵和对角矩阵的实例
2019/11/29 Python
Python迭代器模块itertools使用原理解析
2019/12/11 Python
Python函数生成器原理及使用详解
2020/03/12 Python
利用Python如何画一颗心、小人发射爱心
2021/02/21 Python
魔声耳机官方网站:Monster是世界第一品牌的高性能耳机
2016/10/26 全球购物
美国亚洲时尚和美容产品的一站式网上商店:Stylevana
2019/09/05 全球购物
俄罗斯在线购买飞机票、火车票、巴士票网站:Tutu.ru
2020/03/16 全球购物
家长对老师的感言
2014/03/11 职场文书
优秀少先队员事迹材料
2014/12/24 职场文书
医药公司采购员岗位职责
2015/04/03 职场文书
党小组意见范文
2015/06/08 职场文书
2016年“六一儿童节”校园广播稿
2015/12/17 职场文书
简历自我评价范文
2019/04/24 职场文书
24句精辟的现实社会语录,句句扎心,道尽人性
2019/08/29 职场文书
CSS3 制作精美的定价表
2021/04/06 HTML / CSS
mysql 获取时间方式
2022/03/20 MySQL