AngularJs的UI组件ui-Bootstrap之Tooltip和Popover


Posted in Javascript onJuly 13, 2018

tooltip和popover是轻量的、可扩展的、用于提示的指令。对于移动端来讲,这两个指令虽然可以正常工作,但是从用户体验的角度并不推荐使用。

先说tooltip,tooltip有三种使用方式:

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

(2)uib-tooltip-html 定义提示的html字符串,该字符串不会编译为html内容(需要使用$sce.trustAsHtml编译为html内容)。需要注意内容安全,防止脚本攻击

(3)uib-tooltip-template 定义提示的html内容,该内容需要放在一个span或者div标签中

代码为:

<!DOCTYPE html>
<html ng-app="ui.bootstrap.demo" xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <link href="/Content/bootstrap.css" rel="external nofollow" rel="stylesheet" />
  <title></title>

  <script src="/Scripts/angular.js"></script>
  <script src="/Scripts/ui-bootstrap-tpls-1.3.2.js"></script>
  <script>

    angular.module('ui.bootstrap.demo', ['ui.bootstrap']).controller('TooltipDemoCtrl', function ($scope, $sce) {
      $scope.htmlTooltip = $sce.trustAsHtml('代码示例 <code>id:5</code>');

      $scope.text = "一些文本";
    });
  </script>
  <script type="text/ng-template" id="myTooltipTemplate.html">
    <div>使用模板的提示框<strong>markup</strong>{{ text }}</div>
  </script>
</head>
<body style="padding:30px">
  <div ng-controller="TooltipDemoCtrl">
    <div class="form-group"><button tooltip-placement="right" uib-tooltip="文本提示框" type="button" class="btn btn-default">按钮</button></div>
    <div class="form-group"><a href="#" rel="external nofollow" uib-tooltip-html="htmlTooltip">使用html的提示框</a></div>
    <div class="form-group"><input type="text" uib-tooltip-template="'myTooltipTemplate.html'" value="模板提示框"/></div>
  </div>
</body>
</html>

效果分别为:

AngularJs的UI组件ui-Bootstrap之Tooltip和Popover

AngularJs的UI组件ui-Bootstrap之Tooltip和Popover

AngularJs的UI组件ui-Bootstrap之Tooltip和Popover

以上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来配置的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript中数组array及string的方法总结
Nov 28 Javascript
基于JavaScript实现跳转提示页面
Sep 24 Javascript
JavaScript交换两个变量值的七种解决方案
Dec 01 Javascript
Angularjs 实现动态添加控件功能
May 25 Javascript
requirejs按需加载angularjs文件实例
Jun 08 Javascript
ionic3 懒加载
Aug 16 Javascript
Javascript中的getter和setter初识
Aug 17 Javascript
React-Native中props具体使用详解
Sep 04 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
Apr 17 Javascript
Vue.js 使用v-cloak后仍显示变量的解决方法
Nov 19 Javascript
JavaScript函数定义方法实例详解
Mar 05 Javascript
layui动态渲染生成select的option值方法
Sep 23 Javascript
详解Angular-ui-BootStrap组件的解释以及使用
Jul 13 #Javascript
Bootstrap标签页(Tab)插件切换echarts不显示问题的解决
Jul 13 #Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
Jul 13 #Javascript
微信小程序实现tab页面切换功能
Jul 13 #Javascript
php中and 和 &amp;&amp;出坑指南
Jul 13 #Javascript
vue项目base64字符串转图片的实现代码
Jul 13 #Javascript
angular 组件通信的几种实现方式
Jul 13 #Javascript
You might like
PHP设计模式之解释器模式的深入解析
2013/06/13 PHP
设置php页面编码的两种方法示例介绍
2014/03/03 PHP
JavaScript小技巧 2.5 则
2010/09/12 Javascript
用jquery实现自定义风格的滑动条实现代码
2011/04/26 Javascript
Javascript模块化编程(三)require.js的用法及功能介绍
2013/01/17 Javascript
jquery显示和隐藏div特效实例
2013/02/27 Javascript
2014年最火的Node.JS后端框架推荐
2014/10/27 Javascript
jquery中ready()函数执行的时机和window的load事件比较
2015/06/22 Javascript
推荐三款不错的图片压缩上传插件(webuploader、localResizeIMG4、LUploader)
2017/04/21 Javascript
收藏AngularJS中最重要的核心功能
2017/07/09 Javascript
javascript+jQuery实现360开机时间显示效果
2017/11/03 jQuery
vue 页面加载进度条组件实例
2018/02/05 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
2018/03/28 jQuery
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
2019/11/01 Javascript
vue element 中的table动态渲染实现(动态表头)
2019/11/21 Javascript
以911新闻为例演示Python实现数据可视化的教程
2015/04/23 Python
Python中map和列表推导效率比较实例分析
2015/06/17 Python
Python 实现 贪吃蛇大作战 代码分享
2016/09/07 Python
pycharm运行和调试不显示结果的解决方法
2018/11/30 Python
python全栈开发语法总结
2020/11/22 Python
eDreams加拿大:廉价航班、酒店和度假
2019/03/29 全球购物
联想印度官方网上商店:Lenovo India
2019/08/24 全球购物
linux面试题参考答案(9)
2016/01/29 面试题
测试时代收集的软件测试面试题
2013/09/25 面试题
教师找工作推荐信
2013/11/23 职场文书
总裁办公室主任职责
2014/01/02 职场文书
大学老师推荐信
2014/02/25 职场文书
我的老师教学反思
2014/05/01 职场文书
优秀应届毕业生自荐书
2014/06/29 职场文书
党员干部群众路线个人整改措施
2014/09/18 职场文书
2014年公务员退休工资改革方案
2014/10/01 职场文书
幼儿园托班教育随笔
2015/08/14 职场文书
OpenCV3.3+Python3.6实现图片高斯模糊
2021/05/18 Python
Python内置数据结构列表与元组示例详解
2021/08/04 Python
最新最全的手机号验证正则表达式
2022/02/24 Javascript
MySQL中JOIN连接的基本用法实例
2022/06/05 MySQL