前面的话

  在网站中,网页总是需要和用户一起做沟通与交流。特别是当用户操作上下文为用户提供一些有效的警示框,比如说告诉用户操作成功、操作错误、提示或者警告等。在Bootstrap框架有一个独立的组件,实现类似的效果,这个组件被称为警示框。本文将详细介绍Bootstrap警告框

默认用法

  警告框组件通过提供一些灵活的预定义消息,为常见的用户动作提供反馈消息

  将任意文本和一个可选的关闭按钮组合在一起就能组成一个警告框,

.alert

类是必须要设置的,另外还提供了有特殊意义的4个类(例如,

.alert-success

),代表不同的警告信息

.alert {padding: 15px;
margin-bottom: 20px;
border: 1px solid transparent;
border-radius: 4px;
}
.alert h4 {margin-top: 0;
color: inherit;
}
.alert .alert-link {font-weight: bold;
}
.alert > p,
.alert > ul {margin-bottom: 0;
}
.alert > p   p {margin-top: 5px;
}

  警告框没有默认类,只有基类和修饰类。默认的灰色警告框并没有多少意义。所以您使用一种有意义的警告类。目前提供了成功、消息、警告和危险

  1、成功警示框:告诉用户操作成功,在“alert”样式基础上追加“alert-success”样式,具体呈现的是背景、边框和文本都是绿色;

  2、信息警示框:给用户提供提示信息,在“alert”样式基础上追加“alert-info”样式,具体呈现的是背景、边框和文本都是浅蓝色;

  3、警告警示框:提示用户小心操作(提供警告信息),在“alert”样式基础上追加“alert-warning”样式,具体呈现的是背景、边框、文本都是浅黄色;

  4、错误警示框:提示用户操作错误,在“alert”样式基础上追加“alert-danger”样式,具体呈现的是背景、边框和文本都是浅红色

<div class="alert" role="alert">基类</div>
<div class="alert alert-success" role="alert">成功</div>
<div class="alert alert-info" role="alert">信息提示</div>
<div class="alert alert-warning" role="alert">警告</div>
<div class="alert alert-danger" role="alert">错误</div> 

style="width: 100%; height: 390px;" src="https://demo.xiaohuochai.site/bootstrap/alert/a1.html" frameborder="0" width="320" height="240">

可关闭

  在平时浏览网页的时候,会发现一些警示框带有关闭按钮,用户一点击关闭按钮就能自动关闭显示的警示框(也就是让警示框隐藏不显示)。在Bootstrap框架中的警示框也具有这样的功能

  只需要在默认的警示框里面添加一个关闭按钮。然后进行三个步骤:

  1、需要在基本警示框“alert”的基础上添加“alert-dismissable”样式。

  2、在button标签中加入class="close"类,实现警示框关闭按钮的样式。

  3、要确保关闭按钮元素上设置了自定义属性:data-dismiss="alert"(因为可关闭警示框需要借助于Javascript来检测该属性,从而控制警示框的关闭)

.alert-dismissable {padding-right: 35px;
}
.alert-dismissable .close {position: relative;
top: -2px;
right: -21px;
color: inherit;
}
<div class="alert alert-success alert-dismissable" role="alert">
<button class="close" type="button" data-dismiss="alert">×</button>
恭喜您操作成功!
</div>

style="width: 100%; height: 80px;" src="https://demo.xiaohuochai.site/bootstrap/alert/a2.html" frameborder="0" width="320" height="240">

【外部关闭】

  如果把关闭按钮放置在警告框的外部,则需要设置data-target为'# 警告框的id'

  这个用法的弊端是按钮本身无法关闭,因为它已经不在警告框内了

<button type="button" class="btn" data-dismiss="alert" data-target="#test">关闭</button>
<div id="test" class="alert alert-success alert-dismissable" role="alert">操作成功</div>

style="width: 100%; height: 110px;" src="https://demo.xiaohuochai.site/bootstrap/alert/a3.html" frameborder="0" width="320" height="240">

  如果想关闭警告框的同时,把按钮也从DOM中删除,如果按钮的class是'btn',则设置data-target=".btn'则可以把按钮也删除

<button type="button" class="btn" data-dismiss="alert" data-target="#test,.btn">关闭</button>
<div id="test" class="alert alert-success alert-dismissable" role="alert">操作成功</div>

style="width: 100%; height: 110px;" src="https://demo.xiaohuochai.site/bootstrap/alert/a4.html" frameborder="0" width="320" height="240">

链接

  有时可能想在警示框中加入链接地址,用来告诉用户跳到某一个地方或新的页面。而这个时候又想让用户能明显的看出来这是链接地址。在Bootstrap框架中对警示框里的链接样式做了一个高亮显示处理。为不同类型的警示框内的链接进行了加粗处理,并且颜色相应加深

  Bootstrap框架是通过给警示框加的链接添加一个名为“alert-link”的类名,通过“alert-link”样式给链接提供高亮显示

.alert .alert-link {font-weight: bold;
}
.alert-success .alert-link {color: #2b542c;
}
.alert-info .alert-link {color: #245269;
}
.alert-warning .alert-link {color: #66512c;
}
.alert-danger .alert-link {color: #843534;
}
<div class="alert alert-success" role="alert">成功 <a href="#" class="alert-link">详情查看</a></div>
<div class="alert alert-info" role="alert">信息提示 <a href="#" class="alert-link">详情查看</a></div>
<div class="alert alert-warning" role="alert">警告 <a href="#" class="alert-link">详情查看</a></div>
<div class="alert alert-danger" role="alert">错误 <a href="#" class="alert-link">详情查看</a></div> 

style="width: 100%; height: 300px;" src="https://demo.xiaohuochai.site/bootstrap/alert/a5.html" frameborder="0" width="320" height="240">

JS触发

【方法】

$().alert('close')

  关闭警告框并从 DOM 中将其删除

<div class="alert alert-success alert-dismissable" role="alert">
<button class="close" type="button">×</button>
恭喜您操作成功!
</div>
<script>
$('.close').click(function(){
$('.alert').alert('close');
});
</script>

style="width: 100%; height: 72px;" src="https://demo.xiaohuochai.site/bootstrap/alert/a6.html" frameborder="0" width="320" height="240">

【事件】

close.bs.alert    当 close 方法被调用后立即触发此事件。
closed.bs.alert    当警告框被关闭后(也即 CSS 过渡效果完毕之后)立即触发此事件。
<div class="alert alert-success alert-dismissable fade in" data-dismiss="alert" role="alert">
<button class="close" type="button">×</button>
恭喜您操作成功!
</div>
<div id="intro">警告框处于打开状态</div>
<script>
$('.alert').on('closed.bs.alert', function () {
$('#intro').html('警告框被关闭了')
})
</script>

style="width: 100%; height: 112px;" src="https://demo.xiaohuochai.site/bootstrap/alert/a7.html" frameborder="0" width="320" height="240">

  

JS源码

【1】IIFE

  使用立即调用函数,防止插件内代码外泄,从而形成一个闭环,并且只能从jQuery的fn里进行扩展

 function ($) {
//使用es5严格模式
'use strict';
//
}(window.jQuery);

【2】初始设置

  //定义选择器,所有符合该自定义属性的元素都可以触发下面的事件
var dismiss = '[data-dismiss="alert"]'
var Alert   = function (el) {
//传入元素,如果元素内部有dismiss设置的自定义属性,则click事件会触发原型上的close方法
$(el).on('click', dismiss, this.close)
}
//版本号为3.3.7
Alert.VERSION = '3.3.7'
//动画持续时间为150ms
Alert.TRANSITION_DURATION = 150

【3】插件核心代码

  Alert.prototype.close = function (e) {
//被单击元素的jQuery对象,临时赋值,防止this污染
var $this    = $(this)
//获取自定义属性data-target的值
var selector = $this.attr('data-target')
//获取没有data-target属性
if (!selector) {
//则获取href属性的值
selector = $this.attr('href')
//IE7浏览器特殊处理
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '')
}
//获取jQuery对象
var $parent = $(selector === '#' ? [] : selector)
//阻止默认行为
if (e) e.preventDefault()
//如果该元素不存在
if (!$parent.length) {
//存在最近的样式为'.alert'的祖先元素
$parent = $this.closest('.alert')
}
//删除元素前,执行close事件,可以通过自定义绑定来执行定义代码
$parent.trigger(e = $.Event('close.bs.alert'))
//如果回调函数中已经包含阻止默认行为的代码,则直接返回
if (e.isDefaultPrevented()) return
//删除元素上的in样式
$parent.removeClass('in')
function removeElement() {
//触发closed事件后,删除该元素
$parent.detach().trigger('closed.bs.alert').remove()
}
//如果支持动画,并且设置为fade样式
$.support.transition && $parent.hasClass('fade') ?
//在执行动画过渡效果后,再删除元素
      $parent
.one('bsTransitionEnd', removeElement)
.emulateTransitionEnd(Alert.TRANSITION_DURATION) :
//否则直接删除元素
      removeElement()
}

【4】jQuery插件定义

  function Plugin(option) {
//根据选择器,遍历所有符合规则的元素
return this.each(function () {
var $this = $(this)
//获取自定义属性bs.alert的值
var data  = $this.data('bs.alert')
//如果值不存在,则将Alert实例设置为bs.alert值
if (!data) $this.data('bs.alert', (data = new Alert(this)))
//如果option传递了string,则表示要执行某个方法
if (typeof option == 'string') data[option].call($this)
})
}
var old = $.fn.alert
//保留其他库的$.fn.alert代码(如果定义的话),以便在noConflict之后可以继续使用该老代码
$.fn.alert             = Plugin
//重设插件构造器,可以通过该属性获取插件的真实类函数
$.fn.alert.Constructor = Alert

【5】防冲突处理

  $.fn.alert.noConflict = function () {
//恢复以前的旧代码
$.fn.alert = old
//将$.fn.alert.noConflict()设置为Bootstrap的Tab插件
return this
}

【6】绑定触发事件

  //为声明式的HTML绑定单击事件
//在整个document对象上,检测是否有自定义属性data-dismiss="alert"
//如果有,则设置单击的时候,关闭指定的警告框元素
$(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)

Bootstrap警告框相关推荐

  1. Bootstrap警告框、弹出提示层、模态框的js插件效果总结

    Bootstrap警告框js插件 经常会在bootstrap项目中遇到警告框.弹出提示层.弹出模态框组件等等场景应用. 使用前准备: 插件使用之前,请先导入如下文件: jquery.min.js bo ...

  2. Bootstrap 警告框插件Alert 的事件

    事件 Bootstrap警告框插件Alert有两个事件,一个是close,一个是closed,它们的含义见表 5‑6. 表 5‑6 警告框的事件及含义 事件 含义 close 调用close方法时,立 ...

  3. Bootstrap 警告框插件Alert

    警告框 Bootstrap警告框插件Alert需要 bootstrap-alert.js 文件支持,在使用该插件之前,应该导入 jQuery 和 bootstrap-alert.js 文件. 使用方法 ...

  4. Bootstrap 警告框的外观

    警告框的外观 Bootstrap还提供了 3 个可选的情景类 .alert-error..alert-success 和 .alert-info,用于改变警告框和警告块的背景颜色,以及警告框和警告块中 ...

  5. Bootstrap 警告框

    警告框 在交互式网页中,经常要根据用户操作的上下文,比如操作成功.操作失败等,为用户提供灵活的提示信息. 警告框 警告框用于为成功.警告和错误信息提供样式.默认的警示框可以通过给 <div> ...

  6. Bootstrap 警告框(Alert)插件

    1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 < ...

  7. Bootstrap 警告框组件 + 退出按钮样式 实现一个可退出的警告框

    Bootstrap 实现可退出的警告框 通过bootstrap的警告框组件和退出按钮的样式就可以实现一个简单的可退出警告框: 先来看看退出按钮样式的实现: <button type=" ...

  8. Bootstrap 警告块

    警告块 如果警告框中包含多行文本,可以追加一个 .alert-block 类,来增加警告框的上下内边距,让多行文本看起来更舒服.如: <div class="alert alert-b ...

  9. Bootstrap入门(三十)JS插件7:警告框

    Bootstrap入门(三十)JS插件7:警告框 通过这个插件可以为警告信息添加点击以及消失的功能. 当使用一个.close按钮,它必须是第一个子元素.alert-dismissible,并没有文字内 ...

最新文章

  1. HTML5(WebSockets)的脆弱性?
  2. OpenCV 使用方向梯度直方图估计图像旋转角度
  3. linux下nginx部署以及配置详解
  4. Ubuntu 16.04下Markdown编辑器Haroopad
  5. Java实现自定义队列和树结构_Java数据结构之链表、栈、队列、树的实现方法示例...
  6. 老司机的应用级监控——spring?actuator
  7. jmeter5.0汉化
  8. hdu 1892【二维树状数组】
  9. CentOS7.6下安装Ambari
  10. 程序开发,面试恐惧症_如何克服恐惧并停止讨厌的工作面试
  11. [HttpException (0x80004005): Failed to Execute URL.]之画蛇添足之痛
  12. [读书笔记] - 《深度探索C++对象模型》第4章 Function语意学
  13. java常用的搜索引擎_我掏空了各大搜索引擎,给你整理了154道Java面试题!
  14. centos安装SVN独立服务器
  15. 【java学习之路】(java框架)002.Git配置及使用
  16. [译]GLUT教程 - 整合代码2
  17. idea导入Javaweb项目
  18. 51单片机原理以及接口技术(二)-单片机结构和原理
  19. C++ class 和 struct 构造函数
  20. 详细理解TDMA以及OFDMA,更容易读懂论文

热门文章

  1. java hash=0报空指针_怎么报空指针异常错误?
  2. 安装jdk步骤rpm_jenkins rpm包方式安装
  3. newton迭代法求近似值matlab,Newton迭代法求函数极小值点 Matlab程序
  4. spring cloud gateway 深入了解 - Predicate
  5. LuoguP1268树的重量【构造/思维】By cellur925
  6. [Ctsc2014]企鹅QQ
  7. shell中的常用通配符,字符类
  8. ios多线程 -- NSOperation 简介
  9. 解决DataGridView绑定List后不能排序的问题
  10. Kali linux安装漏洞扫描工具Nessus指南