操作表是一个上滑面板,用来向用户展示进行一个任务所需的选项。
你也可以使用它来提示用户,确认潜在的危险操作。
操作表包含一个可选的标题和至少一个按钮,每个按钮都对应一个操作。
注意,不建议在大屏幕(iPad)上使用操作表。在大屏幕上,你应该使用弹出框。
创建并弹出操作表
操作表是动态元素,只能使用Javascript来创建并弹出它。让我们看一下创建操作表相关的App方法:
myApp.actions(groups) - 创建并弹出操作表,其包含指定数量群组的按钮
或者
myApp.actions(buttons) - 创建并弹出操作表,其包含一个群组,群组包含指定数量的按钮
- groups - array. 一组群组,每个群组包含若干按钮
- buttons - array. 一组按钮,这种情况下,只有一个群组
- 这个方法返回动态创建的操作表HTML元素
每个在buttons中的按钮应该作为一个对象,其包含如下参数:
text | 字符串 | 按钮上的文本(可以是HTML字符串) | |
bold | 布尔值 | false | 可选,若为真,则按钮上文本加粗 |
color | 字符串 | 可选,按钮颜色,待选颜色有10种 | |
bg | string | Optional. Button background color, one of 10 default colors | |
label | 布尔值 | true | 可选,若为真,它会成为标题,而不是按钮 |
disabled | boolean | false | Optional. Set to "true" if you want to make button disabled |
onClick | 函数 | 可选,当用户点击该按钮时,会调用这个函数 |
让我们来看一下例子
- <body>
- ...
- <div class="page-content">
- <div class="content-block">
- <p><a href="#" class="ac-1">One group, three buttons</a></p>
- <p><a href="#" class="ac-2">One group, title, three buttons</a></p>
- <p><a href="#" class="ac-3">Two groups</a></p>
- <p><a href="#" class="ac-4">Three groups</a></p>
- <p><a href="#" class="ac-5">With callbacks on click</a></p>
- </div>
- </div>
- ...
- </body>
- var myApp = new Framework7();
- var $$ = Dom7;
- //- One group, three buttons
- $$('.ac-1').on('click', function () {
- var buttons = [
- {
- text: 'Button1',
- bold: true
- },
- {
- text: 'Button2'
- },
- {
- text: 'Cancel',
- color: 'red'
- },
- ];
- myApp.actions(buttons);
- });
- //- One group, title, three buttons
- $$('.ac-2').on('click', function () {
- var buttons = [
- {
- text: 'Do something',
- label: true
- },
- {
- text: 'Button1',
- bold: true
- },
- {
- text: 'Button2',
- },
- {
- text: 'Cancel',
- color: 'red'
- },
- ];
- myApp.actions(buttons);
- });
- //- Two groups
- $$('.ac-3').on('click', function () {
- var buttons1 = [
- {
- text: 'Do something',
- label: true
- },
- {
- text: 'Button1',
- bold: true
- },
- {
- text: 'Button2',
- }
- ];
- var buttons2 = [
- {
- text: 'Cancel',
- color: 'red'
- }
- ];
- var groups = [buttons1, buttons2];
- myApp.actions(groups);
- });
- //- Three groups
- $$('.ac-4').on('click', function () {
- var buttons1 = [
- {
- text: 'Share',
- label: true
- },
- {
- text: 'Mail',
- },
- {
- text: 'Messages',
- }
- ];
- var buttons2 = [
- {
- text: 'Social share',
- label: true
- },
- {
- text: 'Facebook',
- },
- {
- text: 'Twitter',
- }
- ];
- var buttons3 = [
- {
- text: 'Cancel',
- color: 'red'
- }
- ];
- var groups = [buttons1, buttons2, buttons3];
- myApp.actions(groups);
- });
- //- With callbacks on click
- $$('.ac-5').on('click', function () {
- var buttons = [
- {
- text: 'Button1',
- onClick: function () {
- myApp.alert('Button1 clicked');
- }
- },
- {
- text: 'Button2',
- onClick: function () {
- myApp.alert('Button2 clicked');
- }
- },
- {
- text: 'Cancel',
- color: 'red',
- onClick: function () {
- myApp.alert('Cancel clicked');
- }
- },
- ];
- myApp.actions(buttons);
- });
把操作表转换成 Popover
因为不建议在手机上使用Popover,不建议在平板上使用操作表,所以我们提供了方法你可以用操作表的拓展语法在平板上自动把操作表转换成Popover:
myApp.actions(target, groups) - 创建并打开一个包含指定多组按钮的操作表(在平板电脑上是Popover)
or
myApp.actions(target, buttons) - 创建并打开一个包含指定一组按钮的操作表(在平板电脑上是Popover)
- target - HTMLElement or string (CSS选择器)触发元素,用来对Popover进行定位. 必须
- groups - array. 多组按钮组,每个按钮组里面包含多个按钮。
- buttons - array. 一组按钮。
- var myApp = new Framework7();
- var $$ = Dom7;
- $$('.something').on('click', function (e) {
- var target = this;
- var buttons = [
- {
- text: 'Button 1'
- },
- {
- text: 'Button 2'
- }
- ];
- myApp.actions(target, buttons);
- });
关闭操作表
默认情况下,操作表会在以下情况下自动关闭:
- 点击任意一个按钮
- 点击窗口之外的遮罩(可以通过
modalActionsCloseByOutside
这个应用初始化参数配置)
也可以使用适当的App方法来手动关闭操作表:
myApp.closeModal(actionSheet) - 关闭弹出窗口
- actionSheet - 表示要关闭的操作表的HTML元素或者(包含CSS选择器的)字符串。可选,如果没有指定,任何打开的操作表都会被关闭
操作表事件
操作表和任意模态框拥有相同的事件
open | 操作表元素<div class="actions-modal"> | 当操作表开始弹出动画的时候,事件触发 |
opened | 操作表元素<div class="actions-modal"> | 当操作表完成弹出动画的时候,事件触发 |
close | 操作表元素<div class="actions-modal"> | 当操作表开始结束动画的时候,事件触发 |
closed | 操作表元素<div class="actions-modal"> | 当操作表完成结束动画的时候,事件触发 |
操作表模板
如果你希望能自定义操作表的模板,你可以在初始化App的时候传入一个 modalActionsTemplate
参数。这个参数值是一个 Template7 模板字符串,这个模板会被 Template7 编译,编译的时候会传入一个 groups
参数。
比如模板可能会是这样的:
- <!-- This template equalt to default layout -->
- <div class="actions-modal">
- <!-- this is a single group -->
- {{#each this}}
- <div class="actions-modal-group">
- <!-- now this represents a single button -->
- {{#each this}}
- {{#if label}}
- <span class="actions-modal-label">{{text}}</span>
- {{else}}
- <div class="actions-modal-button {{#if color}}color-{{color}}{{/if}} {{#if bold}}actions-modal-button-bold{{/if}}">{{text}}</div>
- {{/if}}
- {{/each}}
- </div>
- {{/each}}
- </div>
Action Sheet To Popover Template
If you use convertation of Action Sheet to Popover, then you may customize Popover template by passingmodalActionsToPopoverTemplate
parameter on App initialization. This parameter accepts Template7 formatted HTML string that will be compiled by Template7 with passed groups
context.
Here is the default template:
- <div class="popover actions-popover">
- <div class="popover-inner">
- {{#each this}}
- <div class="list-block">
- <ul>
- {{#each this}}
- {{#if label}}
- <li class="actions-popover-label {{#if color}}color-{{color}}{{/if}} {{#if bold}}actions-popover-bold{{/if}}">{{text}}</li>
- {{else}}
- <li><a href="#" class="item-link list-button {{#if color}}color-{{color}}{{/if}} {{#if bg}}bg-{{bg}}{{/if}} {{#if bold}}actions-popover-bold{{/if}} {{#if disabled}}disabled{{/if}}">{{text}}</a></li>
- {{/if}}
- {{/each}}
- </ul>
- </div>
- {{/each}}
- </div>
- </div>
相关推荐
在网页开发中,为了提供更好的用户体验,工具提示(Tooltip)和弹出悬浮窗是不可或缺的元素。jQuery弹出悬浮插件WebUI-Popover就是这样一款轻量级的解决方案,它为开发者提供了便捷的方式来创建功能丰富的提示和弹出...
- 在Web开发中,可以使用HTML、CSS和JavaScript实现,如Bootstrap框架提供了Popover插件。 - 在移动端,特别是微信小程序(WeApp)中,可以使用wx.createSelectorQuery()来获取元素位置,然后动态计算Popover的...
在iOS应用开发中,Popover(弹出视图)是一种常见的用户界面元素,它可以在屏幕上以一个半透明的矩形窗口形式展示内容,通常用于显示详细信息或者提供一系列选择。Swift作为苹果公司推荐的iOS开发语言,封装Popover...
react-native-popover, 用于响应本机的<Popover/> 组件 react-native-popover 用于响应本机的<Popover> 组件。 这仍然是一个正在进行中的工作,只处理最简单的情况,想法和贡献是非常受欢迎的。 安装npm i --save ...
gtk-recurrence-popover是一个基于GTK+框架的库,专为处理日历事件的周期性或重复显示而设计。GTK+(GIMP Toolkit)是一个跨平台的图形用户界面工具包,广泛用于Linux和其他类Unix系统,以及Windows和macOS。在gtk-...
《Python库:gtk-recurrence-popover-1.0.0》 在信息技术领域,Python作为一门...在实际开发过程中,不断探索和学习新的库是提升工作效率的关键,而gtk-recurrence-popover正是这样一把利器,等待开发者去发掘和运用。
在前端开发领域,AngularJS作为一个强大的MVC框架,被广泛用于构建复杂的单页应用。本项目“ns-popover”是针对AngularJS设计的一个弹出框指令,旨在为用户提供高效、灵活的气泡提示功能。本文将深入探讨ns-popover...
react-popover >= 0.5.0支持React 16,而react-popover < 0.5.0适用于React 15.xx ,可能更低。 目前尚无计划使用向后移植的修补程序来支持该库的较早版本,并且不欢迎为此目的使用PR,因为这会增加作者的维护...
总的来说,jQuery弹出悬浮插件WebUI-Popover以其强大的功能和易用性,成为网页开发中不可或缺的工具。通过深入理解其工作原理和使用方法,开发者能够更高效地创建出富有吸引力和用户体验良好的网页应用。无论你是...
经过测试并可以在iOS和Android上使用。 可以在Web上运行,但不受官方支持。 它完全用TypeScript编写,但是即使JS线程很忙,它也使用来响应动画。 <Popover>能够处理动态内容并在显示时适应屏幕尺寸的变化,并且会...
在iOS应用开发中,Swift和React Native是两种广泛使用的编程语言和框架。Swift是Apple官方推出的用于构建iOS、iPadOS、macOS等平台应用程序的编程语言,而React Native则是Facebook开发的一个开源框架,允许开发者...
PopoverView是Android平台上的一个自定义控件,它旨在实现类似iOS中的UIPopoverController的效果。在iOS中,UIPopoverController用于展示一个大型视图,通常用作其他小视图的操作选择器,它会以一种优雅的方式从指定...
React本机简单弹出 react-native-simple-popover提供了一个简单的popover实现,并支持自动popover放置。安装 $ npm install react-native-simple-popover该软件包不提供本机模块,不需要链接和重建应用程序。原料药...
React简单的弹出窗口基于完全控制的Popover组件。 安装 $ npm install react-simple-popover用法import Popover from 'react-simple-popover' ;import React , { Component } from 'react' ;class PopoverDemo ...
Angular-popover.zip,角cdk弹出,无默认样式,使用@angular/materialmaterial扩展用于角弹出的示例,...它专注于良好的移动开发、模块化和改进的依赖注入。angular的设计目的是全面解决开发人员的web应用程序工作流。
import Popover from 'vue-js-popover' Vue . use ( Popover ) 用: < button v-popover:foo >Toggle popover</ button > < popover xss=removed> Hello </ popover> 或者: < button v-popover...
纯JS popover组件,用于本机 关于本模块 原始的现在已过时,因此我决定发布自己的模块,以避免在package.json中使用github url。 在重写过程中有些东西丢失了,但是现在它使用了Modal和本机动画驱动程序,并且还具有...
7. **布局管理**: 为了适应不同尺寸的屏幕,如iPhone和iPad,开发者可能使用Auto Layout或Size Classes来确保视图在不同设备上正确布局。 通过研究这个项目,开发者不仅可以学习到如何创建一个弹出式的日历视图,还...
安装安装npm模块: npm install ngx-popover --save 如果您使用的是system.js,则可能要将其添加到map和package config中: { " map " : { " ngx-popover " : " node_modules/ngx-popover " }, " packages " : { " ...