纯js实现悬浮按钮组件


Posted in Javascript onDecember 17, 2016

先上效果

纯js实现悬浮按钮组件

下面附上代码 使用方式很简单只需要 在页面引入这段js 即可

$(()=> {
 let param = {
  tag: true,
  num: 1,
  ele: document.createElement('div'),
  icon: '',
  homeIcon: '',
  moreIcon: '',
  personalIcon: '',
  closeIcon: '',
  distance: '500',
  css: "position:fixed;" +
  "bottom:4rem;" +
  "box-shadow:10px 10px 10px gray;" +
  "right:10px;" +
  "display:none;" +
  "font-size:1.5rem;" +
  "color:#fff;" +
  "z-index:1000;" +
  "height:2.5rem;" +
  "width:2.5rem;" +
  "background:#f44336;" +
  "border-radius:50%;" +
  "line-height:2.5rem;" +
  "text-align:center",
  menuCss: "position:absolute;" +
  // "bottom:3rem;" +
  "display:none;" +
  "box-shadow:10px 10px 10px gray;" +
  "font-size:1.2rem;" +
  "color:#fff;" +
  "background:orange;" +
  "height:2rem;" +
  "width:2rem;" +
  "border-radius:50%;" +
  "text-align:center;" +
  "line-height:2rem;"
  // type: '#top'
 };

 {
  document.querySelector('body').appendChild(((ele)=> {
   ele.className = 'scroll iconfont';
   ele.innerHTML = param.moreIcon;
   // ele.href = param.type;
   ele.style.cssText = param.css;
   for (let i = 0; i < 3; i++) {
    let menu_personal = document.createElement('a');
    menu_personal.className = 'iconfont';
    menu_personal.style.cssText = param.menuCss;

    switch (i) {
     case 0:
      setStyle(menu_personal, '#2196f3', '2.4rem', '2.4rem', param.homeIcon, 'home');
      break;

     case 1:
      setStyle(menu_personal, '#4caf50', 0, '3.5rem', param.personalIcon, 'personal');
      break;

     case 2:
      setStyle(menu_personal, '#fdd835', '3.5rem', '0', param.icon, 'top');
      break;

    }

    param.ele.appendChild(menu_personal);


   }
   return ele;
  })(param.ele));

  function setStyle(ele, ...args) {
   ele.style.background = args[0];
   ele.style.bottom = args[1];
   ele.style.right = args[2];
   ele.innerHTML = args[3];
   ele.id = args[4];
  }

 }
 {
  $(window).scroll(()=> {
   var scrollValue = $(window).scrollTop();
   if (scrollValue > param.distance) {
    if (param.tag) {
     $(param.ele).css('display', 'block').animateCss('fadeInRight');
     param.tag = !param.tag;
    }
   } else {
    if (!param.tag) {
     $(param.ele).css('display', 'none');
     $(param.ele).children().css('display', 'none');
     param.num++;
     param.tag = !param.tag;
    }
   }
  });

  $(param.ele).click((e)=> {
   window.e = e;
   switch (e.target.id) {

    case 'home':
     if (!getTypeNative()) {
      window.location.href = getAbsolutePath() + '/fenqihui/pages/recommended/recommended_index.html';
     } else if (getTypeNative() === 'ios') {
      backHome();
     } else if (getTypeNative() === 'android') {
      android.backHome();
     }

     break;

    case 'personal':

     if (!getTypeNative()) {
      window.location.href = getAbsolutePath() + '/fenqihui/pages/account/user_personal.html';
     } else if (getTypeNative() === 'ios') {
      //todo://前往个人中心
      backAccount();

     } else if (getTypeNative() === 'android') {
      android.backAccount();
     }
     break;

    case 'top':
     $(window).scrollTop(0);
     break;


   }
   param.num % 2 == 0 && $(param.ele).children().css('display', 'none') || $(param.ele).children().css('display', 'block').animateCss('swing');
   param.num++;
  })

 }
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用js实现计算代码行数的简单方法附代码
Aug 13 Javascript
使用js正则控制input标签只允许输入的值
Jul 29 Javascript
jquery $(&quot;#variable&quot;) 循环改变variable的值示例
Feb 23 Javascript
JavaScript setTimeout使用闭包功能实现定时打印数值
Dec 18 Javascript
干货分享:让你分分钟学会javascript闭包
Dec 25 Javascript
jQuery插件cxSelect多级联动下拉菜单实例解析
Jun 24 Javascript
原生JS实现简单放大镜效果
Feb 08 Javascript
karma+webpack搭建vue单元测试环境的方法示例
May 24 Javascript
vue中使用mxgraph的方法实例代码详解
May 17 Javascript
vue遍历对象中的数组取值示例
Nov 07 Javascript
Vue中axios拦截器如何单独配置token
Dec 27 Javascript
基于better-scroll 实现歌词联动功能的代码
May 07 Javascript
Jquery Easyui搜索框组件SearchBox使用详解(19)
Dec 17 #Javascript
Bootstrap CSS组件之按钮下拉菜单
Dec 17 #Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
Dec 17 #Javascript
Bootstrap CSS组件之按钮组(btn-group)
Dec 17 #Javascript
谈谈JavaScript中浏览器兼容问题的写法小议
Dec 17 #Javascript
Bootstrap CSS组件之下拉菜单(dropdown)
Dec 17 #Javascript
深入理解JS继承和原型链的问题
Dec 17 #Javascript
You might like
杏林同学录(二)
2006/10/09 PHP
对Session和Cookie的区分与解释
2007/03/16 PHP
析构函数与php的垃圾回收机制详解
2013/10/28 PHP
php目录操作实例代码
2014/02/21 PHP
PHP函数checkdnsrr用法详解(Windows平台用法)
2016/03/21 PHP
php构造方法中析构方法在继承中的表现
2016/04/12 PHP
php微信开发之关注事件
2018/06/14 PHP
PHP实现一个限制实例化次数的类示例
2019/09/16 PHP
JS+CSS实现自动改变切换方向图片幻灯切换效果的方法
2015/03/02 Javascript
JavaScript判断对象是否为数组
2015/12/22 Javascript
javascript中arguments,callee,caller详解
2016/03/16 Javascript
jquery制做精致的倒计时特效
2016/06/13 Javascript
AngularJS基础 ng-paste 指令简单示例
2016/08/02 Javascript
BootStrap无限级分类(无限极分类封装版)
2016/08/26 Javascript
微信小程序 扎金花简单实例
2017/02/21 Javascript
angularjs实现猜大小功能
2017/10/23 Javascript
为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置
2019/09/29 Javascript
Python下rrdtool模块的基本使用方法
2015/11/13 Python
Linux RedHat下安装Python2.7开发环境
2017/05/20 Python
Python探索之URL Dispatcher实例详解
2017/10/28 Python
PyCharm在win10的64位系统安装实例
2017/11/26 Python
基于python 爬虫爬到含空格的url的处理方法
2018/05/11 Python
cmd运行python文件时对结果进行保存的方法
2018/05/16 Python
使用python接入微信聊天机器人
2020/03/31 Python
Python流程控制常用工具详解
2020/02/24 Python
使用python自动追踪你的快递(物流推送邮箱)
2020/03/17 Python
详细分析Python垃圾回收机制
2020/07/01 Python
草莓网中国:StrawberryNet中国
2020/08/17 全球购物
如何查找和删除数据库中的重复数据
2014/11/05 面试题
应用艺术专业个人的自我评价
2014/01/03 职场文书
平安家庭示范户事迹
2014/06/02 职场文书
农业生产宣传标语
2014/10/08 职场文书
房屋产权共有协议书范本
2014/11/03 职场文书
2015年学校保卫部工作总结
2015/05/11 职场文书
2015年全民创业工作总结
2015/07/23 职场文书
Java时间工具类Date的常用处理方法
2022/05/25 Java/Android