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代码必备[js多浏览器兼容写法]
Oct 29 Javascript
JavaScript CSS菜单功能 改进版
Dec 20 Javascript
探讨JavaScript中声明全局变量三种方式的异同
Dec 03 Javascript
jquery toolbar与网页浮动工具条具体实现代码
Jan 12 Javascript
使用jQuery异步加载 JavaScript脚本解决方案
Apr 20 Javascript
javascript高级编程之函数表达式 递归和闭包函数
Nov 29 Javascript
javascript中闭包(Closure)详解
Jan 06 Javascript
深入理解js promise chain
May 05 Javascript
BootStrap轻松实现微信页面开发代码分享
Oct 21 Javascript
详解vue-router 2.0 常用基础知识点之router.push()
May 10 Javascript
通过fastclick源码分析彻底解决tap“点透”
Dec 24 Javascript
layer弹出层 iframe层去掉滚动条的实例代码
Aug 17 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
声音就能俘获人心,蕾姆,是哪个漂亮小姐姐配音呢?
2020/03/03 日漫
PHP session有效期问题
2009/04/26 PHP
让PHP开发者事半功倍的十大技巧小结
2010/04/20 PHP
解析php取整的几种方式
2013/06/25 PHP
php目录遍历函数opendir用法实例
2014/11/20 PHP
PHP怎样用正则抓取页面中的网址
2016/08/09 PHP
PHPstorm快捷键(分享)
2017/07/17 PHP
Yii框架中用response保存cookie,用request读取cookie的原理解析
2019/09/04 PHP
网页的标准,IMG不支持onload标签怎么办
2006/06/29 Javascript
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
如何用ajax来创建一个XMLHttpRequest对象
2012/12/10 Javascript
javascript使用onclick事件改变选中行的颜色
2013/12/30 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
js移动焦点到最后位置的简单方法
2016/11/25 Javascript
详解webpack3如何正确引用并使用jQuery库
2017/08/26 jQuery
微信小程序使用video组件播放视频功能示例【附源码下载】
2017/12/08 Javascript
使用Angular CLI进行Build(构建)和Serve详解
2018/03/24 Javascript
Vue 将后台传过来的带html字段的字符串转换为 HTML
2018/03/29 Javascript
js实现敏感词过滤算法及实现逻辑
2018/07/24 Javascript
el-select 下拉框多选实现全选的实现
2019/08/02 Javascript
[01:09]模型精美,特效酷炫!TI9不朽宝藏Ⅰ鉴赏
2019/05/10 DOTA
python中__call__方法示例分析
2014/10/11 Python
用Python编写一个基于终端的实现翻译的脚本
2015/04/24 Python
python3实现短网址和数字相互转换的方法
2015/04/28 Python
Python内置random模块生成随机数的方法
2019/05/31 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
2019/07/01 Python
python绘制多个子图的实例
2019/07/07 Python
python实现矩阵和array数组之间的转换
2019/11/29 Python
Python递归求出列表(包括列表中的子列表)的最大值实例
2020/02/27 Python
机械制造与自动化应届生求职信
2013/11/16 职场文书
宣传策划类求职信范文
2014/01/31 职场文书
小学班长竞选演讲稿
2014/04/24 职场文书
白酒代理协议书范本
2014/10/26 职场文书
感恩教师节主题班会
2015/08/12 职场文书
php引用传递
2021/04/01 PHP
vue实现简单数据双向绑定
2021/04/28 Vue.js