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中hasOwnProperty() 方法使用指南
Mar 09 Javascript
JavaScript整除运算函数ceil和floor的区别分析
Apr 14 Javascript
分析js闭包引起的事件注册问题
Mar 29 Javascript
AngularJS实现网站换肤实例
Feb 19 Javascript
node.js+jQuery实现用户登录注册AJAX交互
Apr 28 jQuery
socket.io学习教程之基础介绍(一)
Apr 29 Javascript
js核心基础之闭包的应用实例分析
May 11 Javascript
在 Vue 中编写 SVG 图标组件的方法
Feb 24 Javascript
详解vue-template-admin三级路由无法缓存的解决方案
Mar 10 Javascript
微信小程序实现文件预览
Oct 22 Javascript
vant-ui组件调用Dialog弹窗异步关闭操作
Nov 04 Javascript
VUE前端从后台请求过来的数据进行转换数据结构操作
Nov 11 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中通过正则表达式下载内容中的远程图片的函数代码
2012/01/10 PHP
PHP IDE phpstorm 常用快捷键
2015/05/18 PHP
PHP 断点续传实例详解
2017/11/11 PHP
Laravel框架实现即点即改功能的方法分析
2019/10/31 PHP
JQuery Tab选项卡效果代码改进版
2010/04/01 Javascript
JavaScript高级程序设计(第3版)学习笔记11 内建js对象
2012/10/11 Javascript
6款新颖的jQuery和CSS3进度条插件推荐
2013/03/05 Javascript
SwfUpload在IE10上不出现上传按钮的解决方法
2013/06/25 Javascript
JS 日期比较大小的简单实例
2014/01/13 Javascript
js+CSS实现弹出居中背景半透明div层的方法
2015/02/26 Javascript
微信小程序 闭包写法详细介绍
2016/12/14 Javascript
JS搜狐面试题分析
2016/12/16 Javascript
vue将对象新增的属性添加到检测序列的方法
2018/02/24 Javascript
Mac下通过brew安装指定版本的nodejs教程
2018/05/17 NodeJs
微信小程序实现图片上传功能
2018/05/28 Javascript
webpack是如何实现模块化加载的方法
2019/11/06 Javascript
js实现百度淘宝搜索功能
2020/02/17 Javascript
python爬虫常用的模块分析
2014/08/29 Python
python实现的简单FTP上传下载文件实例
2015/06/30 Python
Python基于回溯法子集树模板实现8皇后问题
2017/09/01 Python
详解Python3注释知识点
2019/02/19 Python
用python给自己做一款小说阅读器过程详解
2019/07/11 Python
python安装及变量名介绍详解
2020/12/12 Python
css3之UI元素状态伪类选择器实例演示
2017/08/11 HTML / CSS
HTML5 video播放器全屏(fullScreen)方法实例
2015/04/24 HTML / CSS
高清屏中使用Canvas绘图出现模糊的问题及解决方法
2019/06/03 HTML / CSS
AmazeUI在模态框中嵌入表单形成模态输入框
2020/08/20 HTML / CSS
EJB2和EJB3在架构上的不同点
2014/09/29 面试题
物流仓储实习自我鉴定
2013/09/25 职场文书
校领导推荐信
2013/11/01 职场文书
车工岗位职责
2013/11/26 职场文书
电视购物广告词
2014/03/19 职场文书
机关干部四风问题自查报告及整改措施
2014/10/26 职场文书
2014年招商引资工作总结
2014/11/22 职场文书
导游词之江西赣州
2019/10/15 职场文书
如何用 Python 子进程关闭 Excel 自动化中的弹窗
2021/05/07 Python