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 相关文章推荐
js判断输入是否为正整数、浮点数等数字的函数代码
Nov 17 Javascript
jQuery给多个不同元素添加class样式的方法
Mar 26 Javascript
浅谈javascript的分号的使用
May 12 Javascript
Vue.js动态添加、删除选题的实例代码
Sep 30 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
Dec 01 Javascript
JavaScript中 DOM操作方法小结
Apr 25 Javascript
基于vue-cli配置lib-flexible + rem实现移动端自适应
Dec 26 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
Feb 08 Javascript
解决element-ui中下拉菜单子选项click事件不触发的问题
Aug 22 Javascript
webpack4实现不同的导出类型
Apr 09 Javascript
JS大坑之19位数的Number型精度丢失问题详解
Apr 22 Javascript
Vue项目配置跨域访问和代理proxy设置方式
Sep 08 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
html中select语句读取mysql表中内容
2006/10/09 PHP
php flush类输出缓冲剖析
2008/10/19 PHP
PHP文件上传主要代码讲解
2013/09/30 PHP
CodeIgniter框架常见用法工作总结
2017/03/16 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
贴一个在Mozilla中常用的Javascript代码
2007/01/09 Javascript
Javascript 写的简单进度条控件
2008/01/22 Javascript
基于jQuery实现的当离开页面时出现提示的实现代码
2011/06/27 Javascript
JQuery筛选器全系列介绍
2013/08/27 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
2013/11/17 Javascript
jQuery过滤选择器:not()方法使用介绍
2014/04/20 Javascript
jQuery常用且重要方法汇总
2015/07/13 Javascript
基于JS实现textarea中获取动态剩余字数的方法
2016/05/25 Javascript
再次谈论Javascript中的this
2016/06/23 Javascript
jquery实现下拉菜单的手风琴效果
2017/07/23 jQuery
angularJs 表格添加删除修改查询方法
2018/02/27 Javascript
详解Vue中数组和对象更改后视图不刷新的问题
2018/09/21 Javascript
Vue中Quill富文本编辑器的使用教程
2018/09/21 Javascript
如何给element添加一个抽屉组件的方法步骤
2019/07/14 Javascript
mock.js模拟数据实现前后端分离
2019/07/24 Javascript
[07:26]2015国际邀请赛第二日TOP10集锦
2015/08/06 DOTA
判断网页编码的方法python版
2016/08/12 Python
python中Apriori算法实现讲解
2017/12/10 Python
Python中的并发处理之asyncio包使用的详解
2018/04/03 Python
Python列表去重复项的N种方法(实例代码)
2020/05/12 Python
在pycharm中文件取消用 pytest模式打开的操作
2020/09/01 Python
Python中return函数返回值实例用法
2020/11/19 Python
红色康乃馨酒店:Red Carnation Hotels
2017/06/22 全球购物
捷克电器和DJ设备网上商店:Electronic-star
2017/07/18 全球购物
巴西网上药店:Drogaria Araujo
2021/01/06 全球购物
当x.equals(y)等于true时,x.hashCode()与y.hashCode()可以不相等,这句话对不对
2015/05/02 面试题
物流创业计划书
2014/02/01 职场文书
《得道多助,失道寡助》教学反思
2014/04/19 职场文书
教师群众路线学习心得体会
2014/11/04 职场文书
科技活动总结范文
2015/05/11 职场文书
行政后勤人员工作计划应该怎么写?
2019/08/16 职场文书