Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码


Posted in Javascript onAugust 27, 2020

最近用到bootstrap的告警框时发现只有html的说明,就自己写了一个弹出告警框和弹出短暂显示后上浮消失的告警框。

Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码

使用效果

Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码

移入时停止上浮的效果

Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码

直接上JS代码了,可以copy过去直接用(使用bootstrap的UI框架的情况下)

var commonUtil = {
  /**
   * 弹出消息框
   * @param msg 消息内容
   * @param type 消息框类型(参考bootstrap的alert)
   */
  alert: function(msg, type){
    if(typeof(type) =="undefined") { // 未传入type则默认为success类型的消息框
      type = "success";
    }
    // 创建bootstrap的alert元素
    var divElement = $("<div></div>").addClass('alert').addClass('alert-'+type).addClass('alert-dismissible').addClass('col-md-4').addClass('col-md-offset-4');
    divElement.css({ // 消息框的定位样式
      "position": "absolute",
      "top": "80px"
    });
    divElement.text(msg); // 设置消息框的内容
    // 消息框添加可以关闭按钮
    var closeBtn = $('<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>');
    $(divElement).append(closeBtn);
    // 消息框放入到页面中
    $('body').append(divElement);
    return divElement;
  },
  
  /**
   * 短暂显示后上浮消失的消息框
   * @param msg 消息内容
   * @param type 消息框类型
   */
  message: function(msg, type) {
    var divElement = commonUtil.alert(msg, type); // 生成Alert消息框
    var isIn = false; // 鼠标是否在消息框中
    
    divElement.on({ // 在setTimeout执行之前先判定鼠标是否在消息框中
    mouseover : function(){isIn = true;},
    
mouseout : function(){isIn = false;}
    });

    // 短暂延时后上浮消失
    setTimeout(function() {
      var IntervalMS = 20; // 每次上浮的间隔毫秒
      var floatSpace = 60; // 上浮的空间(px)
      var nowTop = divElement.offset().top; // 获取元素当前的top值
      var stopTop = nowTop - floatSpace;  // 上浮停止时的top值
      divElement.fadeOut(IntervalMS * floatSpace); // 设置元素淡出
      
      var upFloat = setInterval(function(){ // 开始上浮
        if (nowTop >= stopTop) { // 判断当前消息框top是否还在可上升的范围内
          divElement.css({"top": nowTop--}); // 消息框的top上升1px
        } else {
          clearInterval(upFloat); // 关闭上浮
          divElement.remove();  // 移除元素
        }
      }, IntervalMS);

      if (isIn) { // 如果鼠标在setTimeout之前已经放在的消息框中,则停止上浮
        clearInterval(upFloat);
        divElement.stop();
      }
      
      divElement.hover(function() { // 鼠标悬浮时停止上浮和淡出效果,过后恢复
        clearInterval(upFloat);
        divElement.stop();
      },function() {
        divElement.fadeOut(IntervalMS * (nowTop - stopTop)); // 这里设置元素淡出的时间应该为:间隔毫秒*剩余可以上浮空间
        upFloat = setInterval(function(){ // 继续上浮
          if (nowTop >= stopTop) {
            divElement.css({"top": nowTop--});
          } else {
            clearInterval(upFloat); // 关闭上浮
            divElement.remove();  // 移除元素
          }
        }, IntervalMS);
      });
    }, 1500);
  }
}

调用部分

function login() {
  $.ajax({
    url: "/apis/login/session",
    data: $('#loginForm').serialize(),
    dataType:"json",
    contentType: "application/json",
    success: function(result) {
      commonUtil.message(result.message); // 直接调用commonUtil对象的message方法
    }
  });
}

总结

到此这篇关于Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的文章就介绍到这了,更多相关Bootstrap告警框(alert)内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
javascript读取RSS数据
Jan 20 Javascript
jquery中each遍历对象和数组示例
Aug 05 Javascript
jQuery+ajax实现动态执行脚本的方法
Jan 27 Javascript
transport.js和jquery冲突问题的解决方法
Feb 10 Javascript
jQuery+html5实现div弹出层并遮罩背景
Apr 15 Javascript
jQuery实现按钮只点击一次后就取消点击事件绑定的方法
Jun 26 Javascript
简单实现限制uploadify上传个数
Nov 16 Javascript
jquery对Json的各种遍历方法总结(必看篇)
Sep 29 Javascript
JavaScript中的call和apply的用途以及区别
Jan 11 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
Aug 14 Javascript
实例讲解React 组件
Jul 07 Javascript
Postman如何实现参数化执行及断言处理
Jul 28 Javascript
javascript操作向表格中动态加载数据
Aug 27 #Javascript
Vue为什么要谨慎使用$attrs与$listeners
Aug 27 #Javascript
js实现批量删除功能
Aug 27 #Javascript
js利用拖放实现添加删除
Aug 27 #Javascript
基于jquery实现彩色投票进度条代码解析
Aug 26 #jQuery
Javascript call及apply应用场景及实例
Aug 26 #Javascript
Javascript类型判断相关例题及解析
Aug 26 #Javascript
You might like
PHP SQLite类
2009/05/07 PHP
PHP 飞信好友免费短信API接口开源版
2010/07/22 PHP
简单的php缓存类分享     php缓存机制
2014/01/22 PHP
非常好用的Zend Framework分页类
2014/06/25 PHP
javascript下高性能字符串连接StringBuffer类
2010/08/16 Javascript
由JavaScript中call()方法引发的对面向对象继承机制call的思考
2011/09/12 Javascript
jquery实现商品拖动选择效果代码(自写)
2013/05/28 Javascript
jQuery不兼容input的change事件问题解决过程
2014/12/05 Javascript
js图片轮播特效代码分享
2015/09/07 Javascript
JS实现iframe编辑器光标位置插入内容的方法(兼容IE和Firefox)
2016/06/24 Javascript
基于构造函数的五种继承方法小结
2017/07/27 Javascript
vue使用element-ui的el-input监听不了回车事件的解决方法
2018/01/12 Javascript
详解ECMAScript typeof用法
2018/07/25 Javascript
总结javascript三元运算符知识点
2018/09/28 Javascript
JavaScript数据结构之栈实例用法
2019/01/18 Javascript
JavaScript实现无限级递归树的示例代码
2019/03/29 Javascript
JS轮播图的实现方法2
2020/08/25 Javascript
通过实例解析json与jsonp原理及使用方法
2020/09/27 Javascript
Python的Django框架安装全攻略
2015/07/15 Python
Flask框架配置与调试操作示例
2018/07/23 Python
django开发post接口简单案例,获取参数值的方法
2018/12/11 Python
总结Python图形用户界面和游戏开发知识点
2019/05/22 Python
在tensorflow中设置保存checkpoint的最大数量实例
2020/01/21 Python
美国一家著名的儿童鞋制造商:Stride Rite
2017/01/02 全球购物
巴西Bo.Bô官方在线商店:经营奢侈品时尚业务
2020/03/16 全球购物
歌唱比赛获奖感言
2014/01/21 职场文书
《骆驼和羊》教学反思
2014/02/27 职场文书
妇联领导班子剖析材料
2014/08/21 职场文书
市场营销工作计划书
2014/09/15 职场文书
2015年校医个人工作总结
2015/07/24 职场文书
婚宴祝酒词大全
2015/08/10 职场文书
2016年圣诞节寄语(一句话)
2015/12/07 职场文书
《索溪峪的野》教学反思
2016/02/19 职场文书
个人自我鉴定怎么写?
2019/07/01 职场文书
JavaScript嵌入百度地图API的最详细方法
2021/04/16 Javascript
MySQL中出现乱码问题的终极解决宝典
2021/05/26 MySQL