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 相关文章推荐
JavaScript 学习笔记(十二) dom
Jan 21 Javascript
DB.ASP 用Javascript写ASP很灵活很好用很easy
Jul 31 Javascript
JS按回车键实现登录的方法
Aug 25 Javascript
jQuery超精致图片轮播幻灯片特效代码分享
Sep 10 Javascript
Bootstrap基本组件学习笔记之面板(14)
Dec 08 Javascript
JavaScript实现的select点菜功能示例
Jan 16 Javascript
微信小程序 跳转传参数与传对象详解及实例代码
Mar 14 Javascript
jquery鼠标悬停导航下划线滑出效果
Sep 29 jQuery
layui下拉框获取下拉值(select)的例子
Sep 10 Javascript
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
Oct 26 Javascript
利用JS如何获取form表单数据
Dec 19 Javascript
uin-app+mockjs实现本地数据模拟
Aug 26 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具体实现代码
2010/10/12 PHP
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
2013/08/13 PHP
对PHP新手的一些建议(PHP学习经验总结)
2014/08/20 PHP
PHP+MySQL实现无极限分类栏目的方法
2015/12/23 PHP
Yii框架实现邮箱激活的方法【数字签名】
2016/10/18 PHP
经典海量jQuery插件 大家可以收藏一下
2010/02/07 Javascript
HTML长文本截取含有HTML代码同样适用的两种方法
2013/07/31 Javascript
详解jQuery中的元素的属性和相关操作
2015/08/14 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
2016/01/26 Javascript
D3.js实现雷达图的方法详解
2016/09/22 Javascript
基于Vue开发数字输入框组件
2017/12/19 Javascript
详解基于Koa2开发微信二维码扫码支付相关流程
2018/05/16 Javascript
解决layui中table异步数据请求不支持自定义返回数据格式的问题
2018/08/19 Javascript
js计算两个日期间的天数月的实例代码
2018/09/20 Javascript
关于node-bindings无法在Electron中使用的解决办法
2018/12/18 Javascript
基于elementUI实现图片预览组件的示例代码
2019/03/31 Javascript
vue2和vue3的v-if与v-for优先级对比学习
2020/10/10 Javascript
[01:13:17]Secret vs NB 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Django 视图层(view)的使用
2018/11/09 Python
对python同一个文件夹里面不同.py文件的交叉引用方法详解
2018/12/15 Python
纯CSS3实现Material Design效果
2017/03/09 HTML / CSS
日本一家专门经营各种箱包的大型网站:Traveler Store
2016/08/03 全球购物
世界上最大的街头服饰网站:Karmaloop
2017/02/04 全球购物
全球虚拟主机商:HostGator
2017/02/06 全球购物
荷兰照明、灯具和配件网上商店:dmlights
2019/08/25 全球购物
安全员岗位职责
2013/11/11 职场文书
教师专业自荐书范文
2014/02/10 职场文书
文秘大学生求职信
2014/02/25 职场文书
经理助理岗位职责
2014/03/05 职场文书
2014年幼师工作总结
2014/11/22 职场文书
2014办公室年度工作总结
2014/12/09 职场文书
运动会闭幕式致辞
2015/07/29 职场文书
2016春季运动会前导词
2015/11/25 职场文书
详解redis在微服务领域的贡献
2021/10/16 Redis
详解Vue3使用axios的配置教程
2022/04/29 Vue.js