8.7.2 焦点触发的弹出框
默认情况下,Bootstrap
的弹出框需要通过鼠标单击来触发显示、隐藏。与工具提示
类似的是,Bootstrap
也允许改变弹出框的触发方式:通过trigger
选项改变弹出框的触发方式,添加trigger
通过在HTML
元素中需使用data-trigger
属性。
为了有更好的跨浏览器和跨平台效果,建议使用<a>
元素,而不能使用<button>
元素,并且还需要指定role="button"
属性和tabindex
属性。
程序示例
如下代码示范了焦点触发的弹出框。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| <!DOCTYPE html> <html>
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <title> 弹出框 </title> <link rel="stylesheet" href="../bootstrap/css/bootstrap.min.css"> <link rel="stylesheet" href="../bootstrap/css/bootstrap-theme.min.css"> <script type="text/javascript" src="../jquery-3.1.1.js"></script> <script type="text/javascript" src="../bootstrap/js/bootstrap.min.js"></script> </head>
<body> <div class="container"> <a class="btn btn-info" role="button" data-toggle="popover" title="焦点触发的弹出框" tabindex="0" data-trigger="focus" data-content="弹出框的内容<br>第二行内容"> 焦点触发的弹出框</a> </div> <script type="text/javascript"> $(function () {
$("[data-toggle='popover']").popover({ html: true }); }); </script> </body>
</html>
|
上面的代码使用<a>
标签定义了一个按钮,由于该链接只是作为按钮使用,因此为该按钮指定了role="button"
属性。<a>
标签指定了data-trigger="focus"
,这意味着该弹出框将会通过焦点来触发:得到焦点时打开弹出框,失去焦点时关闭弹出框。
将tabindex
设为0是为了保证该按钮最先得到焦点,可就是当用户第一次按下Tab
键时,该按钮将会得到焦点。
浏览该页面,按下键盘上的Tab
键,将会打开该按钮的弹出框;再次按下Tab
键(或用鼠标单击页面上其他任意地方),该按钮失去焦点,弹出框将会被自动关闭。