屬性
常用的功能,可以通過以下屬性來設置:
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> 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 () {
|