AngularJs的UI組件ui-Bootstrap分享(八)——Tooltip和Popover


tooltip和popover是輕量的、可擴展的、用於提示的指令。對於移動端來講,這兩個指令雖然可以正常工作,但是從用戶體驗的角度並不推薦使用。

 先說tooltip,tooltip有三種使用方式:

(1) uib-tooltip 定義提示的文本

(2)uib-tooltip-html 定義提示的html字符串,該字符串不會編譯為html內容(需要使用$sce.trustAsHtml編譯為html內容)。需要注意內容安全,防止腳本攻擊

(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分享(一)

AngularJs的UI組件ui-Bootstrap分享(二)——Collapse

AngularJs的UI組件ui-Bootstrap分享(三)——Accordion

AngularJs的UI組件ui-Bootstrap分享(四)——Datepicker Popup

AngularJs的UI組件ui-Bootstrap分享(五)——Pager和Pagination

AngularJs的UI組件ui-Bootstrap分享(六)——Tabs

AngularJs的UI組件ui-Bootstrap分享(七)——Buttons和Dropdown

AngularJs的UI組件ui-Bootstrap分享(八)——Tooltip和Popover

AngularJs的UI組件ui-Bootstrap分享(九)——Alert

AngularJs的UI組件ui-Bootstrap分享(十)——Model

AngularJs的UI組件ui-Bootstrap分享(十一)——Typeahead

AngularJs的UI組件ui-Bootstrap分享(十二)——Rating

AngularJs的UI組件ui-Bootstrap分享(十三)——Progressbar

AngularJs的UI組件ui-Bootstrap分享(十四)——Carousel



免責聲明!

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



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