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代码实现简单的随机图片瀑布流效果
Apr 20 Javascript
Javascript实现的简单右键菜单类
Sep 23 Javascript
第六章之辅组类与响应式工具
Apr 25 Javascript
js停止冒泡和阻止浏览器默认行为的简单方法
May 15 Javascript
Bootstrap组件学习之导航、标签、面包屑导航(精品)
May 17 Javascript
详解Vue 2.0封装axios笔记
Jun 22 Javascript
webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)
Jan 09 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
Apr 17 Javascript
JavaScript实现封闭区域布尔运算的示例代码
Jun 25 Javascript
基于Koa2写个脚手架模拟接口服务的方法
Nov 27 Javascript
vscode vue 文件模板的配置方法
Jul 23 Javascript
Vue路由对象属性 .meta $route.matched详解
Nov 04 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
将文件夹压缩成zip文件的php代码
2009/12/14 PHP
PHP仿博客园 个人博客(1) 数据库与界面设计
2013/07/05 PHP
用php来限制每个ip每天浏览页面数量的实现思路
2015/02/24 PHP
PHP生成唯一订单号的方法汇总
2015/04/16 PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
2021/03/09 PHP
js展开闭合效果演示代码
2013/07/24 Javascript
javascript对中文按照拼音排序代码
2014/08/20 Javascript
删除javascript所创建子节点的方法
2015/05/21 Javascript
浅谈JavaScript异常处理语句
2015/06/26 Javascript
JS+CSS实现滑动切换tab菜单效果
2015/08/25 Javascript
jquery实现表格隔行换色效果
2015/11/19 Javascript
bootstrap-datetimepicker实现只显示到日期的方法
2016/11/25 Javascript
JavaScript错误处理和堆栈追踪详解
2017/04/18 Javascript
详解在 Angular 项目中添加 clean-blog 模板
2017/07/04 Javascript
JS处理一些简单计算题
2018/02/24 Javascript
vue实现按需加载组件及异步组件功能
2019/05/27 Javascript
解决layui弹出层layer的area过大被遮挡的问题
2019/09/21 Javascript
Vue 监听元素前后变化值实例
2020/07/29 Javascript
vue中axios封装使用的完整教程
2021/03/03 Vue.js
[01:12]DOTA2 2015年秋季互动指南
2015/11/10 DOTA
基于Python中capitalize()与title()的区别详解
2017/12/09 Python
python读取excel指定列数据并写入到新的excel方法
2018/07/10 Python
python多进程下实现日志记录按时间分割
2019/07/22 Python
Python可以实现栈的结构吗
2020/05/27 Python
Python中lru_cache的使用和实现详解
2021/01/25 Python
Foot Locker德国官方网站:美国运动服和鞋类零售商
2018/11/01 全球购物
精选鞋类、服装和配饰的全球领先目的地:Bodega
2021/02/27 全球购物
别名指示符是什么
2012/10/08 面试题
《和我们一样享受春天》教学反思
2014/02/07 职场文书
80后婚前协议书范本
2014/10/24 职场文书
护士长2015年终工作总结
2015/04/24 职场文书
2015年基层党建工作总结
2015/05/14 职场文书
幼儿园毕业致辞
2015/07/29 职场文书
培训后的感想
2015/08/07 职场文书
2016年优秀少先队员事迹材料
2016/02/26 职场文书
详解PyTorch模型保存与加载
2022/04/28 Python