Vue实现固定定位图标滑动隐藏效果


Posted in Javascript onMay 30, 2019

写在前面

移动端页面,有时候会出现一些固定定位在底部图标,比如购物车等。这时候如果添加一个滑动页面,图标透明度变低,同时 移动到屏幕边进行隐藏,效果如下。

Vue实现固定定位图标滑动隐藏效果

所用原理

监听滑动事件,每次进行滑动时,触发动画,添加定时器,1.4s后显示该图标。具体代码如下:

<template>
  <section class="fixed-icon"
       :style="{ bottom: bottom + 'rem' }"
       :class="[ !transition ? 'fixed-transition' : '']"
       @click="event">
    <slot></slot>
  </section>
</template>
<script>
 export default {
  name: 'fixedIcon',
  props: {
   bottom: { // 改图标距离底部距离 单位 rem
    type: Number,
    default: 3,
   },
  },
  data () {
   return {
    transition: true, // 是否触发动画
    timer: null, // 定时器
   };
  },
  methods: {
   event() {
    this.$emit('clickEvent'); // 绑定点击图表时间
   },
   handleScroll () { // 每次滑动都会执行函数
    this.transition = false;
    if (this.timer) { // 判断是否已存在定时器
     clearTimeout(this.timer);
    }
    this.timer = setTimeout(() => { // 创建定时器,1.4s后图标回归原位置
     this.transition = true;
    }, 1400);
   }
  },
  mounted () {
   window.addEventListener('scroll', this.handleScroll); // 监听页面滑动
  }
 };
</script>

<style scoped lang="scss">
  /*@media only screen and (min-width:750px){html{font-size:20px}} */
  .fixed-icon{
    position: fixed;
    z-index: 1100;
    right: 1.7rem;
    display: flex;
    justify-content: center;
    align-items: center;
    height: 4.1rem;
    width: 4.1rem;
    border-radius: 50%;
    background-color: rgba(128, 128, 128, 0.8);
    transition: 0.7s ease-in-out;
  }
  .fixed-transition{
    right: -2.05rem;
    opacity: 0.4;
    transition: 1s ease-in-out;
  }
</style>

引入代码如下:

<template>
  <section class="content">
    <fixed-icon :bottom="3" @clickEvent="chat">
      <i class="icon-chat"></i>
    </fixed-icon>
  </section>
</template>

<script>
 import fixedIcon from './components/fixedIcon.vue';

 export default {
  name: 'test',
  components: {
   fixedIcon
  },
  data () {
   return {
   };
  },
  methods: {
   chat() { // 图标点击事件
    console.log('你好');
   },
  },
  mounted() {
   document.title = 'Vue制作固定定位图标滑动隐藏效果';
  },
 };
</script>

<style scoped lang="scss">
  .content{
    height: 200vh;
  }
  .icon-chat{
    width: 2rem;
    height: 1.9rem;
    background: url('http://pfpdwbdfy.bkt.clouddn.com/image/test/fixedIconTranstion/wechat.png') no-repeat;
    background-size: 2rem 1.9rem;
  }
</style>

github代码

总结

以上所述是小编给大家介绍的Vue实现固定定位图标滑动隐藏效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
用正则获取指定路径文件的名称
Feb 27 Javascript
Javascript 通过json自动生成Dom的代码
Apr 01 Javascript
angularjs学习笔记之双向数据绑定
Sep 26 Javascript
jQuery获取浏览器类型和版本号的方法
Jul 05 Javascript
AngularJS Ajax详解及示例代码
Aug 17 Javascript
基于js中this和event 的区别(详解)
Oct 24 Javascript
javascript+html5+css3自定义弹出窗口效果
Oct 26 Javascript
Vue+Vux项目实践完整代码
Nov 30 Javascript
webpack打包node.js后端项目的方法
Mar 10 Javascript
vue项目实现表单登录页保存账号和密码到cookie功能
Aug 31 Javascript
nodemon实现Typescript项目热更新的示例代码
Nov 19 Javascript
微信公众号中的JSSDK接入及invalid signature等常见错误问题分析(全面解析)
Apr 11 Javascript
浅谈Vue的响应式原理
May 30 #Javascript
vue实现固定位置显示功能
May 30 #Javascript
搭建一个Koa后端项目脚手架的方法步骤
May 30 #Javascript
JS使用cookie保存用户登录信息操作示例
May 30 #Javascript
详解vue 动态加载并注册组件且通过 render动态创建该组件
May 30 #Javascript
Vue使用axios出现options请求方法
May 30 #Javascript
vue动态注册组件实例代码详解
May 30 #Javascript
You might like
thinkphp的CURD和查询方式介绍
2013/12/19 PHP
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
php中get_object_vars()方法用法实例
2015/02/08 PHP
新浪微博OAuth认证和储存的主要过程详解
2015/03/27 PHP
PHP之浮点数计算比较以及取整数不准确的解决办法
2015/07/29 PHP
PHP面向对象继承用法详解(优化与减少代码重复)
2016/12/02 PHP
Laravel实现表单提交
2017/05/07 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
2017/08/04 PHP
如何实现JS函数的重载
2006/09/22 Javascript
window.open以post方式将内容提交到新窗口
2012/12/26 Javascript
比较新旧两个数组值得增加和删除的JS代码
2013/10/30 Javascript
JS替换字符串中字符即替换全部而不是第一个
2014/06/04 Javascript
jQuery事件绑定on()、bind()与delegate() 方法详解
2015/06/03 Javascript
jQuery向父辈遍历的简单方法
2016/09/18 Javascript
对Angular.js Controller如何进行单元测试
2016/10/25 Javascript
微信小程序 实现拖拽事件监听实例详解
2016/11/16 Javascript
vue路由嵌套的SPA实现步骤
2017/11/06 Javascript
利用node实现一个批量重命名文件的函数
2017/12/21 Javascript
微信小程序实现换肤功能
2018/03/14 Javascript
详解Webpack + ES6 最新环境搭建与配置
2018/06/04 Javascript
vue cli安装使用less的教程详解
2019/07/12 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
2019/09/19 Javascript
Vue+axios封装请求实现前后端分离
2020/10/23 Javascript
解决vue初始化项目一直停在downloading template的问题
2020/11/09 Javascript
[00:32]2018DOTA2亚洲邀请赛出场——VP
2018/04/04 DOTA
Python  连接字符串(join %)
2008/09/06 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
2019/03/13 Python
python 中pyqt5 树节点点击实现多窗口切换问题
2019/07/04 Python
Python实现栈的方法详解【基于数组和单链表两种方法】
2020/02/22 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
2020/02/29 Python
Python类的动态绑定实现原理
2020/03/21 Python
我们是伦敦女孩:WalG
2018/01/08 全球购物
廉洁使者实施方案
2014/03/29 职场文书
《中国梦我的梦》中学生演讲稿
2014/08/20 职场文书
院系推荐意见
2015/06/05 职场文书
有关三国演义的读书笔记
2015/06/25 职场文书