【詳解】彈出框(popover)的使用 - bootStrap4常用CSS筆記


屬性

常用的功能,可以通過以下屬性來設置:

data-toggle = "popover" 指明這是一個popover組件對象,其實可以省略
title = "彈出框標題" 彈出框標題,可以忽略
data-trigger = "{click | hover | focus | manual}"

觸發彈出框的方式:

1、click 【默認】單擊時顯示或關閉

2、hover 移上去顯示,移出去隱藏

3、focus 單擊時顯示,點擊空白處時隱藏

4、manual 手動模式。需要調用js代碼觸發顯示或關閉彈出框

data-html = "{false | true}"

設置彈出框內容是否支持HTML格式。默認值:false

當值為true時,title屬性值可以設置成html代碼。不過建議不要這么設置,以防XSS攻擊

data-delay = "{數值}" 設置彈出框延遲顯示。比如 data-delay = "1000" 時,彈出框會在執行后1秒才顯示。默認值:0
data-animation = {true | false} 是否動畫效果顯示彈出框。默認值 :false不顯示動畫效果。
data-container = {string | false}

默認值false,

當彈出框用於按鈕組、表單或表格時,必須指定選項容器:'body'以避免不必要的副作用,(例如當觸發彈出窗口時元素變寬和/或失去圓角)。

data-container = "body"

data-placement = {left | top | right | bottom | auto} 設置彈出框的顯示位置,支持多種設置,比如data-placement="auto left"時,彈出窗盡可能顯示在左邊,在情況不允許的情況下它才顯示在右邊

 

簡單的彈出框HTML代碼示例:

1 <a href="#" id="text" data-toggle="popover" title="標題" data-content="內容" data-placement="right" data-trigger="hover">右邊顯示內容</a>
2 <script>
3  $(function(){
4      $('[data-toggle="popover"]').popover();
5  });
6 </script>

 

支持HTML格式的提示框示例:

1 <a href="#" id="text" data-toggle="popover" title="<h1>bootStrap4學習之路</h1><p>漫漫長路,吾將上下求索之!</p>" data-html="true" data-placement="bottom" data-trigger="hover">顯示HTML樣式彈出窗</a>
2 <script>
3   $(function(){
4     $('[data-toggle="popover"]').popover(); 
5   });
6 </script>

 

方法

還可以通過popover的option設置來實現更多功能,popover函數原型: 

 1 $obj.popover({
 2  title: '', // 彈出框標題
 3  content: '[string]', // 彈出框內容
 4  placement: '[left | top | right | bottom | auto]', // 等同於data-placement
 5  html: [true | false], // 等同於data-html
 6  animation: [true | false], // 等同於data-animation
 7 
 8  delay: [數值], // 等同於data-delay
 9 
10   // 也可以設置顯示延遲 或 隱藏延遲,如下:
11  delay: {
12     show: [數值], // 顯示延遲
13     hide: [數值]  // 隱藏延遲
14   },
15 
16  trigger: '[click | hover | focus | manual]', // 等同於data-trigger 17 
18  container: [string | false], // 等同於data-container 19 
20  selector: [string | false], // 選擇器,設置某一對象下指定的元素為tooltip組件 21 
22   template: [string] // 默認值:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>    
23                      // 可以通過這個屬性自定義樣式。
24 });

 

使含有rel="popover"的鏈接變成popover組件:

 1 <a href="#" rel="popover" title="標題" data-content="內容">移上去</a>
 2 <script>
 3   $(function(){
 4     $('a[rel="popover"]').popover({
 5       trigger: 'hover',
 6       delay: 300,
 7       placement: 'bottom'
 8     });
 9   });
10 </script>

 

selector 選擇器,設置某一對象下指定的元素為popover組件,演示代碼:

 1 <div class="demo" data-trigger="hover">
 2   <a href="#" rel="popover" data-content="11111">移上去1</a>&nbsp;&nbsp;
 3   <a href="#" rel="popover" data-content="22222">移上去2</a>
 4 </div>
 5 <a href="#" rel="popover" data-content="0000000" data-trigger="hover">這里移上去不會顯示</a>
 6  <script>
 7  $(function(){
 8      $('.demo').popover({
 9          selector: 'a[rel="popover"]'
10      });
11  });
12 </script>

注意:上例中data-trigger設置在了demo上面。設置在a標簽上是無效的!

 

使用template自定義popover樣式,演示代碼:
 1 <style>
 2 /* 自定義popover包裹容器 */
 3 .define-popover {
 4   border-radius: 0px;
 5   border: 0px;
 6 }
 7 /* 自定義popover 內容區 */
 8 .define-popover-body{
 9   background: #F60;
10   color: #fff;
11   font-size: 12px;
12   border-radius: 0px;
13 }
14 /* 自定義popover 標題 */
15 .define-popover-title {
16   font-size: 12px;
17   background: #000;
18   color: #fff;
19   border-bottom: 0px; /* 隱藏標題下方的分割線 */
20   border-radius: 0px;
21 }
22 /* 自定義tooltip四個不同方向箭頭樣式 */
23 /* top */
24 .popover.bs-popover-top .define-popover-arrow::after {
25   border-top-color: #369; /* 箭頭填充色 */
26 }
27 /* bottom */
28 .popover.bs-popover-bottom .define-popover-arrow::after {
29   border-bottom-color: #369; /* 箭頭填充色 */
30 }
31 .bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^="bottom"] .popover-header::before {
32     border-bottom: 0px;
33 }
34 /* left */
35 .popover.bs-popover-left .define-popover-arrow::after {
36   border-left-color: #369; /* 箭頭填充色 */
37 }
38 /* right */
39 .popover.bs-popover-right .define-popover-arrow::after {
40   border-right-color: #369; /* 箭頭填充色 */
41 }
42 </style>
43  
44 <a href="#" id="hoverIt" rel="popover" title="這是標題" data-content="這是正文本內容" data-placement="right">改變彈出框樣式</a>
45 <script>
46  $(function(){
47     $('#hoverIt').popover({
48       trigger: 'hover',
49       template: '<div class="popover define-popover" role="tooltip">' + '<div class="arrow define-popover-arrow"></div>' + '<h3 class="popover-header define-popover-title"></h3>' + '<div class="popover-body define-popover-body"></div></div>'
50     });
51   });
52 </script>  

注意:template 值中define-popover、define-popover-arrow、define-popover-title、define-popover-body這幾個樣式可以根據需要進行更改(其它部份不能更改),更改時要同步更改style內的樣式。

 

在一些特殊情況下,需要調用程序觸發tooltip時,bootstrap4也提供了一些接口: $obj.popover('show | hide | trigger | destroy'),

1) 調用顯示彈出框: $obj.popover('show'), 示例:

1 <a href="#" data-toggle="popover" data-content="內容">彈出框</a>
2 <script>
3 $(function(){
4   $('a[data-toggle="popover"]').popover('show');
5 });
6 </script>

 注意:不要試圖在隱藏元素上顯示提示框!

 

2) 調用關閉彈出框:$obj.popover('hide'),示例:

1 <a href="#" id="autoIt" data-toggle="popover" data-content="它會自動彈出,也會自動關閉">自動彈出,5秒后自動關閉</a>
2 <script>
3   $(function(){
4     $('#autoIt').popover('show');
5     setTimeout(function(){
6       $('#autoIt').popover('hide');
7     }, 5000);
8   });
9 </script>

 

3) 如果當前彈出框是顯示的就讓它關閉。否則讓它顯示:$obj.popover('trigger'),示例:

 1 <!-- manual  開啟手動觸發模式 -->
 2 <a href="#" id="popover" data-toggle="tooltip" data-placement="top" data-trigger="manual" data-content="彈出關閉切換">手動觸發模式</a>
 3 <button id="trigger-btn">彈出</button>
 4 <script>
 5   $(function(){
 6     $('#trigger-btn').click(function(){
 7       $(this).text()=='彈出' ? 
 8       $(this).text('關閉') :
 9       $(this).text('彈出');
10       $('#popover').popover('toggle');
11     });
12   });
13 </script>

 

4) 銷除tooltip組件, $obj.tooltip('destroy'); 【好像bootstrap4中,已不存在接口】

 

事件

tooltip含有四種事件,執行順序如下: 

show.bs.popover

$obj.on('show.bs.popover', function () {
// 顯示時執行
})

inserted.bs.popover

$obj.on('inserted.bs.popover', function () {
// 數據內容插入完成時執行
})

shown.bs.popover

$obj.on('shown.bs.popover', function () {
// 完全顯示后執行
})

hide.bs.popover

$obj.on('hide.bs.popover', function () {
// 隱藏時執行
})

hidden.bs.popover

$obj.on('hidden.bs.popover', function () {
// 完全隱藏后執行
})

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM