纯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 相关文章推荐
jQuery 学习第七课 扩展jQuery的功能 插件开发
May 17 Javascript
javascript显示用户停留时间的简单实例
Aug 05 Javascript
巧用局部变量提升javascript性能
Feb 24 Javascript
用js传递value默认值的示例代码
Sep 11 Javascript
jQuery插件实现多级联动菜单效果
Dec 01 Javascript
再次谈论React.js实现原生js拖拽效果引起的一系列问题
Apr 03 Javascript
关于动态生成dom绑定事件失效的原因及解决方法
Aug 06 Javascript
layui前段框架日期控件使用方法详解
May 19 Javascript
jQuery复合事件用法示例
Jun 10 jQuery
vue中如何让子组件修改父组件数据
Jun 14 Javascript
使用js在layui中实现上传图片压缩
Jun 18 Javascript
javascript实现商品图片放大镜
Nov 28 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
php ss7.5的数据调用 (笔记)
2010/03/08 PHP
php编写一个简单的路由类
2011/04/13 PHP
使用PHP求两个文件的相对路径
2013/06/20 PHP
PHPCMS忘记后台密码的解决办法
2016/10/30 PHP
重定向实现代码
2006/11/20 Javascript
Js-$.extend扩展方法使方法参数更灵活
2013/01/15 Javascript
jQuery获取当前对象标签名称的方法
2014/02/07 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
JavaScript页面模板库handlebars的简单用法
2015/03/02 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
2015/05/04 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
javascript对象的创建和访问
2016/03/08 Javascript
discuz表情的JS提取方法分析
2017/03/22 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
2017/12/20 Javascript
javascript实现文件拖拽事件
2018/03/29 Javascript
vue.js计算属性computed用法实例分析
2018/07/06 Javascript
vue中使用cookies和crypto-js实现记住密码和加密的方法
2018/10/18 Javascript
Cocos2d实现刮刮卡效果
2018/12/20 Javascript
vue.js的双向数据绑定Object.defineProperty方法的神奇之处
2019/01/18 Javascript
用js简单提供增删改查接口
2019/05/12 Javascript
vue 解决data中定义图片相对路径页面不显示的问题
2020/08/13 Javascript
python多线程编程方式分析示例详解
2013/12/06 Python
Python实现大文件排序的方法
2015/07/10 Python
Python的pycurl包用法简介
2015/11/13 Python
postman模拟访问具有Session的post请求方法
2019/07/15 Python
对python中的*args与**kwgs的含义与作用详解
2019/08/28 Python
python lambda表达式(匿名函数)写法解析
2019/09/16 Python
Django 自定义分页器的实现代码
2019/11/24 Python
Django 5种类型Session使用方法解析
2020/04/29 Python
python利用paramiko实现交换机巡检的示例
2020/09/22 Python
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
物业管理大学生个人的自我评价
2013/10/10 职场文书
创先争优宣传标语
2014/10/08 职场文书
领导班子对照检查剖析材料
2014/10/13 职场文书
工伤事故证明
2014/10/20 职场文书