標籤:
tooltip和popover是輕量的、可擴充的、用於提示的指令。對於移動端來講,這兩個指令雖然可以正常工作,但是從使用者體驗的角度並不推薦使用。
先說tooltip,tooltip有三種使用方式:
(1) uib-tooltip 定義提示的文本
(2)uib-tooltip-html 定義提示的html字串,該字串不會編譯為html內容(需要使用$sce.trustAsHtml編譯為html內容)。需要注意Alibaba Content Security Service,防止指令碼攻擊
(3)uib-tooltip-template 定義提示的html內容,該內容需要放在一個span或者div標籤中
代碼為:
1 <!DOCTYPE html> 2 <html ng-app="ui.bootstrap.demo" xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <link href="/Content/bootstrap.css" rel="stylesheet" /> 6 <title></title> 7 8 <script src="/Scripts/angular.js"></script> 9 <script src="/Scripts/ui-bootstrap-tpls-1.3.2.js"></script>10 <script>11 12 angular.module(‘ui.bootstrap.demo‘, [‘ui.bootstrap‘]).controller(‘TooltipDemoCtrl‘, function ($scope, $sce) {13 $scope.htmlTooltip = $sce.trustAsHtml(‘程式碼範例 <code>id:5</code>‘);14 15 $scope.text = "一些文本";16 });17 </script>18 <script type="text/ng-template" id="myTooltipTemplate.html">19 <div>使用模板的提示框<strong>markup</strong>{{ text }}</div>20 </script>21 </head>22 <body style="padding:30px">23 <div ng-controller="TooltipDemoCtrl">24 <div class="form-group"><button tooltip-placement="right" uib-tooltip="文本提示框" type="button" class="btn btn-default">按鈕</button></div>25 <div class="form-group"><a href="#" uib-tooltip-html="htmlTooltip">使用html的提示框</a></div>26 <div class="form-group"><input type="text" uib-tooltip-template="‘myTooltipTemplate.html‘" value="模板提示框"/></div>27 </div>28 </body>29 </html>View Code
效果分別為:
以上3種tooltip可以使用的屬性有:
| 屬性名稱 |
預設值 |
備忘 |
| tooltip-animation |
true |
是否在顯示和隱藏時使用動畫 |
| tooltip-append-to-body |
false |
是否將提示框放在body的末尾 |
| tooltip-class |
|
加在tooltip上的自訂的類名 |
| tooltip-enable |
true |
是否啟用 |
| tooltip-is-open |
false |
是否顯示提示框 |
| tooltip-placement |
top |
提示框的位置。可設定的值包括:top,top-left,top-right,bottom,bottom-left,bottom-right,left,left-top,left-bottom,right,right-top,right-bottom |
| tooltip-popup-close-delay |
0 |
關閉提示框前的延遲時間 |
| tooltip-popup-delay |
0 |
顯示提示框前的延遲時間 |
| tooltip-trigger |
mouseenter |
顯示提示框的觸發事件 |
在tooltip-placement所表示的位置前加"auto",比如 "auto top"提示框會定位在它最近一個可滾動的父元素中。
tooltip-trigger支援的顯示提示框和隱藏提示框的事件有:
mouseenter: mouseleave
click: click
outsideClick: outsideClick
focus: blur
none
使用時只需要設定顯示提示框的事件就可以了(隱藏提示框的事件會自動化佈建)。
設定為click時,在元素上單擊一次會顯示提示框,再單擊一次隱藏提示框。
設定為outsideClick時,在元素上單擊一次會顯示提示框,在元素之外的其他地方單擊一次會隱藏提示框。
設定為none時,可以和tooltip-is-open屬性配合使用,自己控制提示框顯示和隱藏的時機。
tooltip也支援全域配置,使用$uibTooltipProvider.options可以配置tooltip的預設設定,如是否啟用動畫,顯示的位置,延遲時間等。使用$tooltipProvider.setTriggers可以擴充提示框顯示和隱藏的觸發事件。
如下:
angular.module(‘ui.bootstrap.demo‘, [‘ui.bootstrap‘]) .config([‘$uibTooltipProvider‘, function (uibTooltipProvider) { uibTooltipProvider.options({ animation: false, appendToBody: false, placement: ‘right‘, popupCloseDelay: 0, popupDelay: 0, });
uibTooltipProvider.setTriggers( { ‘openTrigger‘: ‘closeTrigger‘ } ); }]).controller(‘TooltipDemoCtrl‘, function ($scope) { });
以上為tooltip的內容,再來說popover,popover的實現是依賴於tooltip的module,因此這兩個指令在使用和配置上非常相似。
popover也有三種使用方式,分別是uib-popover,uib-popover-template和uib-popover-html,含義和使用方法同tooltip是一樣的,這裡就不重複說了。
popover的屬性有:
| 屬性名稱 |
預設值 |
備忘 |
| popover-animation |
true |
是否在顯示和隱藏時使用動畫 |
| popover-append-to-body |
false |
是否將提示框放在body的末尾 |
| popover-enable |
true |
是否啟用 |
| popover-is-open |
false |
是否顯示提示框 |
| popover-placement |
top |
提示框的位置。可設定的值包括:top,top-left,top-right,bottom,bottom-left,bottom-right,left,left-top,left-bottom,right,right-top,right-bottom |
| popover-popup-close-delay |
0 |
關閉提示框前的延遲時間 |
| popover-popup-delay |
0 |
顯示提示框前的延遲時間 |
| popover-trigger |
mouseenter |
顯示提示框的觸發事件 |
| popover-title |
|
標題 |
大部分屬性和tooltip也是一樣的,只是沒有popover-class,另外多了個popover-title。
需要注意的一點是,popover的全域配置和tooltip一樣,是使用$uibTooltipProvider來配置的。
AngularJs的UI組件ui-Bootstrap分享(八)——Tooltip和Popover