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 相关文章推荐
json跟xml的对比分析
Jun 10 Javascript
深入理解JavaScript定时机制
Oct 29 Javascript
JQuery select控件的相关操作实现代码
Sep 14 Javascript
jqueyr判断checkbox组的选中(示例代码)
Nov 08 Javascript
document.write的几点使用心得
May 14 Javascript
Bootstrap多级导航栏(级联导航)的实现代码
Mar 08 Javascript
JS中with的替代方法与String中的正则方法详解
Dec 23 Javascript
Angular2安装angular-cli
May 21 Javascript
你可能不知道的前端算法之文字避让(inMap)
Jan 12 Javascript
JavaScript捕捉事件和阻止冒泡事件实例分析
Aug 03 Javascript
vue组件创建的三种方式小结
Feb 03 Javascript
JS跨浏览器解析XML应用过程详解
Oct 16 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
如何使用Linux的Crontab定时执行PHP脚本的方法
2011/12/19 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
2019/07/24 PHP
热点新闻滚动特效的js代码
2013/08/17 Javascript
各浏览器对document.getElementById等方法的实现差异解析
2013/12/05 Javascript
javascript解析json实例详解
2014/11/05 Javascript
JS+DIV+CSS排版布局实现美观的选项卡效果
2015/10/10 Javascript
laypage分页控件使用实例详解
2016/05/19 Javascript
基于Angularjs实现分页功能
2016/05/30 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
微信小程序 配置文件详细介绍
2016/12/14 Javascript
JavaScript Ajax实现异步通信
2016/12/14 Javascript
vue组件间通信解析
2017/03/01 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
js中作用域的实例解析
2017/03/16 Javascript
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
详解vue-cli脚手架build目录中的dev-server.js配置文件
2017/11/24 Javascript
jquery选择器和属性对象的操作实例分析
2020/01/10 jQuery
跟老齐学Python之不要红头文件(2)
2014/09/28 Python
Python中使用tarfile压缩、解压tar归档文件示例
2015/04/05 Python
python使用两种发邮件的方式smtp和outlook示例
2017/06/02 Python
Python实现树的先序、中序、后序排序算法示例
2017/06/23 Python
Windows平台Python连接sqlite3数据库的方法分析
2017/07/12 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
2019/05/29 Python
pandas.DataFrame的pivot()和unstack()实现行转列
2019/07/06 Python
Django框架HttpRequest对象用法实例分析
2019/11/01 Python
Python socket连接中的粘包、精确传输问题实例分析
2020/03/24 Python
总结Pyinstaller的坑及终极解决方法(小结)
2020/09/21 Python
加拿大大码女装购物网站:Penningtons
2020/12/26 全球购物
大学生收银员求职信分享
2014/01/02 职场文书
《那片绿绿的爬山虎》教学反思
2014/02/27 职场文书
大专生求职信
2014/06/29 职场文书
2015年国庆节慰问信
2015/03/23 职场文书
2015年幼儿园中班下学期工作总结
2015/05/22 职场文书
标准演讲稿格式结尾应该怎么书写?
2019/07/17 职场文书
python实现网络五子棋
2021/04/11 Python
笔记本自带的win11如何跳过联网激活?
2022/04/20 数码科技