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 相关文章推荐
许愿墙中用到的函数
Oct 07 Javascript
JavaScript 创建对象
Jul 17 Javascript
js或者jquery判断图片是否加载完成实现代码
Mar 20 Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
Apr 12 Javascript
简介JavaScript中getUTCMonth()方法的使用
Jun 10 Javascript
jquery mobile界面数据刷新的实现方法
May 28 Javascript
Angular2从搭建环境到开发步骤详解
Oct 17 Javascript
使用Promise链式调用解决多个异步回调的问题
Jan 15 Javascript
微信小程序访问node.js接口服务器搭建教程
Apr 25 Javascript
javascript 判断用户有没有操作页面
Oct 17 Javascript
解决vue-cli项目打包出现空白页和路径错误的问题
Sep 04 Javascript
bootstrap table列和表头对不齐的解决方法
Jul 19 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
PHP重定向的3种方式
2013/03/07 PHP
PHP模块memcached使用指南
2014/12/08 PHP
WordPress迁移时一些常见问题的解决方法整理
2015/11/24 PHP
Smarty保留变量用法分析
2016/05/23 PHP
PHP加密解密类实例代码
2016/07/20 PHP
php版微信小店调用api示例代码
2016/11/12 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
2017/03/31 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
JQuery Ajax通过Handler访问外部XML数据的代码
2010/06/01 Javascript
Jquery遍历节点的方法小集
2014/01/22 Javascript
判断某个字符在一个字符串中是否存在的js代码
2014/02/28 Javascript
JS中substring与substr的用法
2016/11/16 Javascript
详解如何从零开始搭建Express+Vue开发环境
2018/07/17 Javascript
Layui数据表格之获取表格中所有的数据方法
2018/08/20 Javascript
详解Vue实战指南之依赖注入(provide/inject)
2018/11/13 Javascript
vue实现pdf文档在线预览功能
2019/11/26 Javascript
vue-socket.io接收不到数据问题的解决方法
2020/05/13 Javascript
[01:32:50]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第一场 1月25日
2021/03/11 DOTA
python中使用mysql数据库详细介绍
2015/03/27 Python
Python的Django框架中的表单处理示例
2015/07/17 Python
Windows上使用virtualenv搭建Python+Flask开发环境
2016/06/07 Python
python中关于for循环的碎碎念
2017/06/30 Python
python远程调用rpc模块xmlrpclib的方法
2019/01/11 Python
Python 把序列转换为元组的函数tuple方法
2019/06/27 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
2019/10/23 Python
通过Python实现Payload分离免杀过程详解
2020/07/13 Python
Flask中sqlalchemy模块的实例用法
2020/08/02 Python
Python 下载Bing壁纸的示例
2020/09/29 Python
Stefania Mode英国:奢华设计师和时尚服装
2017/10/23 全球购物
大学军训感言600字
2014/02/25 职场文书
企业安全标语
2014/06/07 职场文书
销售辞职信范文
2015/03/02 职场文书
心灵点滴观后感
2015/06/02 职场文书
2015年小学教师培训工作总结
2015/07/21 职场文书
四群教育工作总结
2015/08/10 职场文书
《吃水不忘挖井人》教学反思
2016/02/22 职场文书