纯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 相关文章推荐
extjs 时间范围选择自动判断的实现代码
Jun 24 Javascript
jquery引用方法时传递参数原理分析
Oct 13 Javascript
bootstrap css样式之表单
Jan 19 Javascript
详解vue2.0组件通信各种情况总结与实例分析
Mar 22 Javascript
Angular.js实现获取验证码倒计时60秒按钮的简单方法
Oct 18 Javascript
Vue组件的使用教程详解
Jan 05 Javascript
详解VueJs中的V-bind指令
May 03 Javascript
JavaScript门道之标准库
May 26 Javascript
Js中将Long转换成日期格式的实现方法
Jun 05 Javascript
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
May 04 jQuery
微信小程序开发之转发分享功能
Oct 22 Javascript
如何基于js判断浏览器版本
Feb 20 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
Zend Framework教程之前端控制器Zend_Controller_Front用法详解
2016/03/07 PHP
laravel在中间件内生成参数并且传递到控制器中的2种姿势
2019/10/15 PHP
ff chrome和ie下全局动态定位的异同及全局高度的取法
2014/06/30 Javascript
jQuery中append()方法用法实例
2014/12/25 Javascript
Jquery插件之Fancybox丰富的弹出层效果附源码下载
2015/12/02 Javascript
JS简单实现数组去重的方法示例
2017/03/27 Javascript
webpack3之loader全解析
2017/10/26 Javascript
利用jqprint插件打印页面内容的实现方法
2018/01/09 Javascript
关于jquery layui弹出层的使用方法
2018/04/21 jQuery
vuejs点击class变化的实例
2018/09/05 Javascript
H5+C3+JS实现五子棋游戏(AI篇)
2020/05/28 Javascript
JS数组中对象去重操作示例
2019/06/04 Javascript
小程序中设置缓存过期的实现方法
2020/01/14 Javascript
微信小程序语音同步智能识别的实现案例代码解析
2020/05/29 Javascript
Vue基本指令实例图文讲解
2021/02/25 Vue.js
[48:24]完美世界DOTA2联赛循环赛LBZS vs Forest 第一场 10月30日
2020/10/31 DOTA
python写的一个squid访问日志分析的小程序
2014/09/17 Python
Python使用shelve模块实现简单数据存储的方法
2015/05/20 Python
python检查序列seq是否含有aset中项的方法
2015/06/30 Python
在Python的Django框架中编写错误提示页面
2015/07/22 Python
对比Python中__getattr__和 __getattribute__获取属性的用法
2016/06/21 Python
python tkinter图形界面代码统计工具(更新)
2019/09/18 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
2019/12/27 Python
Python 读取有公式cell的结果内容实例方法
2020/02/17 Python
俄罗斯街头服装品牌:Black Star Wear
2017/03/01 全球购物
大学生家政服务项目创业计划书
2014/01/30 职场文书
应届大专生自荐书
2014/06/16 职场文书
党支部鉴定意见
2015/06/02 职场文书
法律讲堂观后感
2015/06/11 职场文书
在职证明书模板
2015/06/15 职场文书
趣味运动会简讯
2015/07/20 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书
2016医师资格考试考生诚信考试承诺书
2016/03/25 职场文书
MySQL命令行操作时的编码问题详解
2021/04/14 MySQL
用Python的绘图库(matplotlib)绘制小波能量谱
2021/04/17 Python
德劲DE1105机评
2022/04/05 无线电