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 相关文章推荐
创建一个复制UBB软件信息的链接或按钮的js代码
Jan 06 Javascript
Prototype Object对象 学习
Jul 12 Javascript
根据鼠标的位置动态的控制层的位置
Nov 24 Javascript
javascript 用记忆函数快速计算递归函数
Mar 15 Javascript
JS Loading功能的简单实现
Nov 29 Javascript
jQuery在iframe中无法弹出对话框的解决方法
Jan 12 Javascript
原生JavaScript实现瀑布流布局
Jun 28 Javascript
浅谈jQuery中的checkbox问题
Aug 10 Javascript
echarts学习笔记之箱线图的分析与绘制详解
Nov 22 Javascript
给localStorage设置一个过期时间的方法分享
Nov 06 Javascript
node实现socket链接与GPRS进行通信的方法
May 20 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
Jun 10 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远程连接MYSQL数据库非常慢的解决方法
2008/07/05 PHP
php版小黄鸡simsimi聊天机器人接口分享
2014/01/26 PHP
PHP生成数组再传给js的方法
2014/08/07 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
2014/08/21 PHP
Symfony核心类概述
2016/03/17 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
2016/04/28 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
2016/11/03 PHP
实例化php类时传参的方法分析
2020/06/05 PHP
用CSS+JS实现的进度条效果效果
2007/06/05 Javascript
基于jQuery替换table中的内容并显示进度条的代码
2011/08/02 Javascript
ExtJs中gridpanel分组后组名排序实例代码
2013/12/02 Javascript
获取鼠标在div中的相对位置的实现代码
2013/12/30 Javascript
jquery实现动态操作select选中
2015/02/11 Javascript
js获取时间精确到秒(年月日)
2016/03/16 Javascript
JS &amp; JQuery 动态添加 select option
2016/06/08 Javascript
从零开始做一个pagination分页组件
2017/03/15 Javascript
JS实现给json数组动态赋值的方法示例
2020/03/19 Javascript
ionic 3.0+ 项目搭建运行环境的教程
2017/08/09 Javascript
JS判断数组那点事
2017/10/10 Javascript
Vue中JS动画与Velocity.js的结合使用
2019/02/13 Javascript
JQuery表单元素取值赋值方法总结
2020/05/12 jQuery
Python 自动补全(vim)
2014/11/30 Python
利用django如何解析用户上传的excel文件
2017/07/24 Python
python实现求特征选择的信息增益
2018/12/18 Python
使用PYTHON解析Wireshark的PCAP文件方法
2019/07/23 Python
wxPython修改文本框颜色过程解析
2020/02/14 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
2020/06/12 Python
如何理解python对象
2020/06/21 Python
办公室文秘自我鉴定
2013/09/21 职场文书
电视购物广告词
2014/03/19 职场文书
保险公司早会主持词
2014/03/22 职场文书
物理学专业自荐信
2014/06/11 职场文书
护理专业求职信
2014/06/15 职场文书
民族团结演讲稿范文
2014/08/27 职场文书
如何使用Python实现一个简易的ORM模型
2021/05/12 Python
Windows 11上手初体验:任务栏和开始菜单等迎来大改
2021/11/21 数码科技