图片浏览器是一个像iOS图片浏览器一样用来展示图片的组件。图片可以被缩放或者平移 (可选)。
图片浏览器使用 幻灯片组件来展现图片。
创建一个图片浏览器实例
图片浏览器只需通过javaScript就可以被创建和初始化。我们需要使用App封装好的方法:
myApp.photoBrowser(parameters) - 带参初始化图片浏览器
- parameters - object - 图片浏览器参数对象(必选)。
- 该方法返回图片浏览器实例引用
示例:
- var myPhotoBrowser = app.photoBrowser({
- zoom: 400,
- photos: ['path/to/image1.jpg', 'path/to/image2.jpg']
- });
- myPhotoBrowser.open(); // 打开图片浏览器
图片浏览器参数
所有可用参数列表:
photos | array | [] | 照片的url数组或者是包含“url”(或者“html”)和“caption”属性的对象数组. |
initialSlide | number | 0 | 初始化时展示的图片序号 |
spaceBetween | number | 20 | 图片展现间隔距离(px) |
speed | number | 300 | 切换图片的时间间隔(ms) |
zoom | boolean | true | 是否启用图片的缩放和平移功能 |
maxZoom | number | 3 | 最大缩放倍数 |
minZoom | number | 1 | 最小缩放倍数 |
exposition | boolean | true | 图片点击时是否启用浏览模式 |
expositionHideCaptions | boolean | false | 是否在浏览模式中隐藏标题 |
swipeToClose | boolean | true | 是否可以通过上下滑动的方式来关闭图片浏览器 |
view | View instance | undefined | 如果想用page形式打开,则需要指定一个初始化的View实例,如果不指定,将默认在Main View中打开 |
type | string | 'standalone' | 定义图片浏览器的打开方式,可选参数有'standalone'(打开时将有一个自定义过渡效果的遮罩层),'popup'(打开一个popup),’page‘(将被放置于View中,作为一个新页面加载) |
loop | boolean | false | Set to "true" to enable continuous loop mode |
theme | string | 'light' | 图片浏览器颜色主题,可以为'light'或者'dark' |
captionsTheme | string | 标题的颜色主题,可以为light'或者'dark'。默认与"theme"相同 | |
navbar | boolean | true | 是否生成图片浏览器的导航栏 |
toolbar | boolean | true | 是否生成图片浏览器的工具栏 |
backLinkText | string | 'Close' | 图片浏览器的导航栏中返回链接的文本 |
ofText | string | 'of' | 图片的序号和总数之间的分割词,例如:"3 of 5" |
lazyLoading | boolean | false | 设置为true启用懒加载 |
lazyLoadingInPrevNext | boolean | false | 设置为 true,则会懒加载最近的图片(上一个和下一个) |
lazyLoadingOnTransitionStart | boolean | false | 默认情况下,图片浏览器在动画结束后开始懒加载。如果你希望在动画开始的时候就开始懒加载,你可以设置这个参数。 |
template | string | *见下面 | 图片浏览器的HTML模版 |
navbarTemplate | string | *见下面 | 导航栏的HTML模版 |
toolbarTemplate | string | *见下面 | 工具栏的HTML模版 |
photoTemplate | string | *见下面 | 单独图片元素的HTML模版 |
photoLazyTemplate | string | *Look below | Single lazy loading photo element HTML template |
objectTemplate | string | *见下面 | 单独对象元素的HTML模版 |
captionTemplate | string | *见下面 | 单独标题元素的HTML模版 |
onOpen(photobrowser) | function | 回调函数,当图片浏览器被打开的时候执行 | |
onClose(photobrowser) | function | 回调函数,当图片浏览器被关闭的时候执行 | |
onSwipeToClose(photobrowser) | function | 回调函数,当图片浏览器通过上下滑动的形式关闭时执行 | |
onSlideChangeStart(swiper) | function | 回调函数,当图片浏览器向前或者向后切换图片开始的时候执行,接受幻灯片的实例作为参数 | |
onSlideChangeEnd(swiper) | function | ||
onTransitionStart(swiper) | function | Callback function, will be executed in the beginning of transition. Receives swiper instance as an argument. | |
onTransitionEnd(swiper) | function | Callback function, will be executed after transition. Receives slider instance as an argument. | |
onClick(swiper, event) | function | 回调函数,当图片浏览器被点击/触碰的时候延迟300ms执行,接受幻灯片的实例和touchend事件两个对象作为参数 | |
onTap(swiper, event) | function | 回调函数,当图片浏览器被点击/触碰的时候执行,接受幻灯片的实例和touchend事件两个对象作为参数 | |
onDoubleTap(swiper, event) | function | 回调函数,当图片浏览器被连续两次触碰的时候执行,接受幻灯片的实例和touchend事件两个对象作为参数 | |
onLazyImageLoad(swiper, slide, image) | function | Callback function, will be executed when Photo Browser begins to load lazy loading photo | |
onLazyImageReady(swiper, slide, image) | function | Callback function, will be executed after lazy loading photo will be loaded |
图片浏览器方法及属性
当我们初始化图片浏览器之后,我们将会得到它的实例引用(比如myPhotoBrowser
), 并且包括很多有用的方法和属性:
myPhotoBrowser.swiper | 包含一个Swiper 实例,这个实例上有所有可用的Swiper 方法和属性 |
myPhotoBrowser.container | Dom7形式的图片浏览器HTML容器 |
myPhotoBrowser.exposed | 图片浏览器是否处于浏览模式 |
myPhotoBrowser.activeSlideIndex | 当前可见的幻灯片的序号 |
myPhotoBrowser.params | 传入的初始化参数对象 |
myPhotoBrowser.open(index); | 根据“index”参数的值打开图片浏览器,如果“index”参数没有被指定,则打开最后关闭的图片 |
myPhotoBrowser.close(); | 关闭图片浏览器 |
myPhotoBrowser.toggleZoom(); | 切换当前幻灯片的缩放形式 |
myPhotoBrowser.toggleExposition(); | 切换浏览模式 |
myPhotoBrowser.enableExposition(); | 启用浏览模式 |
myPhotoBrowser.disableExposition(); | 禁用浏览模式 |
图片数组
当我们初始化图片浏览器的时候,需要传递一个数组,包括图片或者是视频的相关信息,让我们看看这个数组的各种变形:
- //如果我们只需要图片的话,可以传递图片地址数组
- var photos = [
- 'image1.jpg',
- 'image2.jpg',
- 'image3.jpg',
- 'image4.jpg',
- ];
- //如如果我们需要标题的话,则需要包装成一个含有caption属性的对象:
- var photos = [
- {
- url: 'image1.jpg',
- caption: 'Caption 1'
- },
- {
- url: 'image2.jpg',
- caption: 'Caption 1'
- },
- // 这个是没有标题的
- {
- url: 'image3.jpg',
- },
- // 也可以不使用对象形式
- 'image4.jpg'
- ];
- //如果我们需要使用视频,则把包含视频元素的HTML片段或者是iframe放到“html”属性里:
- var photos = [
- {
- url: 'image1.jpg',
- caption: 'Caption 1'
- },
- // 带标题的视频
- {
- html: '<video src="video1.mp4"></video>',
- caption: 'Video Caption'
- },
- // 这个是没有标题的iframe
- {
- html: '<iframe src="..."></iframe>',
- },
- // 这个是没有标题的视频标签
- '<video src="video2.mp4"></video>'
- ];
示例
- <div class="page-content">
- <div class="content-block-title">Light Theme</div>
- <div class="content-block row">
- <div class="col-33"><a href="#" class="button pb-standalone">Standalone</a></div>
- <div class="col-33"><a href="#" class="button pb-popup">Popup</a></div>
- <div class="col-33"><a href="#" class="button pb-page">Page</a></div>
- </div>
- <div class="content-block-title">Dark Theme</div>
- <div class="content-block row">
- <div class="col-50"><a href="#" class="button pb-standalone-dark">Standalone</a></div>
- <div class="col-50"><a href="#" class="button pb-popup-dark">Popup</a></div>
- </div>
- </div>
- var myApp = new Framework7();
- var $$ = Dom7;
- var mainView = myApp.addView('.view-main', {
- dynamicNavbar: true
- });
- /*=== 默认为 standalone ===*/
- var myPhotoBrowserStandalone = myApp.photoBrowser({
- photos : [
- 'http://lorempixel.com/1024/1024/sports/1/',
- 'http://lorempixel.com/1024/1024/sports/2/',
- 'http://lorempixel.com/1024/1024/sports/3/',
- ]
- });
- //点击时打开图片浏览器
- $$('.pb-standalone').on('click', function () {
- myPhotoBrowserStandalone.open();
- });
- /*=== Popup ===*/
- var myPhotoBrowserPopup = myApp.photoBrowser({
- photos : [
- 'http://lorempixel.com/1024/1024/sports/1/',
- 'http://lorempixel.com/1024/1024/sports/2/',
- 'http://lorempixel.com/1024/1024/sports/3/',
- ],
- type: 'popup'
- });
- $$('.pb-popup').on('click', function () {
- myPhotoBrowserPopup.open();
- });
- /*=== 作为Page ===*/
- var myPhotoBrowserPage = myApp.photoBrowser({
- photos : [
- 'http://lorempixel.com/1024/1024/sports/1/',
- 'http://lorempixel.com/1024/1024/sports/2/',
- 'http://lorempixel.com/1024/1024/sports/3/',
- ],
- type: 'page',
- backLinkText: 'Back'
- });
- $$('.pb-page').on('click', function () {
- myPhotoBrowserPage.open();
- });
- /*=== Standalone Dark ===*/
- var myPhotoBrowserDark = myApp.photoBrowser({
- photos : [
- 'http://lorempixel.com/1024/1024/sports/1/',
- 'http://lorempixel.com/1024/1024/sports/2/',
- 'http://lorempixel.com/1024/1024/sports/3/',
- ],
- theme: 'dark'
- });
- $$('.pb-standalone-dark').on('click', function () {
- myPhotoBrowserDark.open();
- });
- /*=== Popup Dark ===*/
- var myPhotoBrowserPopupDark = myApp.photoBrowser({
- photos : [
- 'http://lorempixel.com/1024/1024/sports/1/',
- 'http://lorempixel.com/1024/1024/sports/2/',
- 'http://lorempixel.com/1024/1024/sports/3/',
- ],
- theme: 'dark',
- type: 'popup'
- });
- $$('.pb-popup-dark').on('click', function () {
- myPhotoBrowserPopupDark.open();
- });
- /*=== 有标题 ===*/
- var myPhotoBrowserPopupDark = myApp.photoBrowser({
- photos : [
- {
- url: 'http://lorempixel.com/1024/1024/sports/1/',
- caption: 'Caption 1 Text'
- },
- {
- url: 'http://lorempixel.com/1024/1024/sports/2/',
- caption: 'Second Caption Text'
- },
- // 这个没有标题
- {
- url: 'http://lorempixel.com/1024/1024/sports/3/',
- },
- ],
- theme: 'dark',
- type: 'standalone'
- });
- $$('.pb-standalone-captions').on('click', function () {
- myPhotoBrowserPopupDark.open();
- });
- /*=== 有视频 ===*/
- var myPhotoBrowserPopupDark = myApp.photoBrowser({
- photos : [
- {
- html: '<iframe src="//www.youtube.com/embed/lmc21V-zBq0?list=PLpj0FBQgLGEr3mtZ5BTwtmSwF1dkPrPRM" frameborder="0" allowfullscreen></iframe>',
- caption: 'Woodkid - Run Boy Run (Official HD Video)'
- },
- {
- url: 'http://lorempixel.com/1024/1024/sports/2/',
- caption: 'Second Caption Text'
- },
- {
- url: 'http://lorempixel.com/1024/1024/sports/3/',
- },
- ],
- theme: 'dark',
- type: 'standalone'
- });
- $$('.pb-standalone-video').on('click', function () {
- myPhotoBrowserPopupDark.open();
- });
图片浏览器模版
让我们来看看图片浏览器可用于初始化时的模版
图片浏览器主模版
您可以通过template
参数传递定制的HTML模板。这是一个示例:
- <div class="photo-browser photo-browser-{{theme}}">
- <div class="view navbar-fixed toolbar-fixed">
- {{#unless material}}{{#if navbar}}
- navbarTemplate
- {{/if}}{{/unless}}
- <div class="page no-toolbar {{#unless navbar}}no-navbar{{/unless}} toolbar-fixed navbar-fixed" data-page="photo-browser-slides">
- {{#if material}}{{#if navbar}}
- navbarTemplate
- {{/if}}{{/if}}
- {{#if toolbar}}
- toolbarTemplate
- {{/if}}
- <div class="photo-browser-captions photo-browser-captions-{{js "this.captionsTheme || this.theme"}}">
- {{#each photos}}{{#if caption}}
- captionTemplate
- {{/if}}{{/each}}
- </div>
- <div class="photo-browser-swiper-container swiper-container">
- <div class="photo-browser-swiper-wrapper swiper-wrapper">
- {{#each photos}}
- {{#js_compare "this.html || ((typeof this === \'string\' || this instanceof String) && (this.indexOf(\'<\') >= 0 || this.indexOf(\'>\') >= 0))"}}
- objectTemplate
- {{else}}
- {{#if @root.lazyLoading}}
- photoLazyTemplate
- {{else}}
- photoTemplate
- {{/if}}
- {{/js_compare}}
- {{/each}}
- </div>
- </div>
- </div>
- </div>
- </div>
导航栏模版
这是导航栏的示例模版,你可以通过navbarTemplate
参数传递:
- <div class="navbar">
- <div class="navbar-inner">
- <div class="left sliding">
- <a href="#" class="link close-popup photo-browser-close-link {{#unless backLinkText}}icon-only{{/unless}} {{js "this.type === \'page\' ? \'back\' : \'\'"}}">
- <i class="icon icon-back {{iconsColorClass}}"></i>
- {{#if backLinkText}}<span>{{backLinkText}}</span>{{/if}}
- </a>
- </div>
- <div class="center sliding">
- <span class="photo-browser-current"></span>
- <span class="photo-browser-of">{{ofText}}</span>
- <span class="photo-browser-total"></span>
- </div>
- <div class="right"></div>
- </div>
- </div>
其中:
-
<a class="photo-browser-close-link">
- 点击时将关闭图片浏览器,并且解绑所有的监听器 -
<span class="photo-browser-current">
- 图片浏览器将在该元素中插入当前的活动图片序号 -
<span class="photo-browser-total">
- 图片浏览器将在该元素中插入幻灯片总数
工具栏模版
这是工具栏的示例模版,你可以通过toolbarTemplate
参数传递:
- <div class="toolbar tabbar">
- <div class="toolbar-inner">
- <a href="#" class="link photo-browser-prev">
- <i class="icon icon-prev {{iconsColorClass}}"></i>
- </a>
- <a href="#" class="link photo-browser-next">
- <i class="icon icon-next {{iconsColorClass}}"></i>
- </a>
- </div>
- </div>
它其实就是一个标签栏,其中:
-
<a class="photo-browser-next">
-带有photo-browser-next类的链接,可以充当下一个按钮 -
<a class="photo-browser-prev">
- 带有photo-browser-prev类的链接,可以充当上一个按钮
图片元素模版
这是一张幻灯片的模版,你可以通过photoTemplate
参数传递;
- <div class="photo-browser-slide swiper-slide">
- <span class="photo-browser-zoom-container">
- <img src="{{js "this.url || this"}}">
- </span>
- </div>
Lazy Photo Element Template
Template example of single photo slide element that you can pass in photoLazyTemplate
parameter:
- <div class="photo-browser-slide photo-browser-slide-lazy swiper-slide">
- <div class="preloader {{@root.preloaderColorClass}}">{{#if @root.material}}{{@root.materialPreloaderSvg}}{{/if}}</div>
- <span class="photo-browser-zoom-container">
- <img data-src="{{js "this.url || this"}}" class="swiper-lazy">
- </span>
- </div>
Object Element Template
Template example of single object slide element that you can pass in objectTemplate
parameter:
- <div class="photo-browser-slide photo-browser-object-slide swiper-slide">{{js "this.html || this"}}</div>
Single Caption Template
Template example of sinble caption element. You can pass in captionTemplate
parameter:
- <div class="photo-browser-caption" data-caption-index="{{@index}}">
- {{caption}}
- </div>
相关推荐
Appium是一个用于移动端UI自动化测试的工具,它支持iOS和Android平台上的原生、移动Web和混合应用。 除了测试工具,文章还提及了性能测试相关的工具。Locust是一个基于事件的性能测试工具,它使用Python的协程来...
兼容性浏览器支持支持以下移动平台的主流浏览器:iOS 5 Android 2.3 同样支持以下桌面浏览器:Firefox (edge)Chrome (edge)Safari (edge)外部依赖Zepto 1.1 Underscore 1.6 Underscore.ext 0.3 安装通过 Bower 安装...
React Native是由Facebook开发的开源框架,它允许开发者用JavaScript和React语法构建原生的iOS和Android应用。通过React的声明式编程模型和组件化思想,开发者可以实现高效且可复用的代码,大大简化了移动应用的开发...
4. **Quasar Framework**:除了提供UI组件,还支持PWA(渐进式Web应用)和多平台应用开发,如iOS、Android原生应用。 四、H5页面构建流程 1. **需求分析**:明确页面目标、交互设计和视觉风格。 2. **原型设计**:...
"002appium手机自动化测试_TesterHome公开版.pdf"专注于移动应用自动化测试,Appium是一个跨平台的测试工具,支持iOS和Android平台。这份文档可能详细阐述了如何使用Appium进行手机应用测试。 8. **在Robot ...
完美支持android,iOS,各个手机浏览器,兼容PC主流浏览器快速入门,经典案例,连接文档,请移步至官网 mescroll的vue版本已整理,但react和angular版本还没有,期待哪位好心的神仙能拉动请求〜mescroll-uni: ...
由于 Bridge.NET 能够将 C# 代码编译为 JavaScript,因此开发者可以使用它来创建跨平台的应用程序,不仅支持桌面端(通过 Electron 等框架),还支持移动端(如 iOS、Android)和 Web 应用程序。这种跨平台能力使得...
9. **移动端开发**:针对iOS和Android平台的音视频开发有其特殊性,比如硬件加速、兼容性问题等,需要熟悉AVFoundation、Android Media Framework等框架。 10. **实践项目**:理论学习后,通过实际项目锻炼能力,...
Weex 是一个开源的移动端跨平台开发框架,由阿里巴巴集团贡献给 Apache 软件基金会。它允许开发者使用 JavaScript 来编写原生应用,支持 iOS、Android 以及 Web 平台,大大提升了开发效率和应用性能。在本项目中,...
也可能有移动端应用,如Android或iOS,利用 Xamarin 平台进行跨平台开发。 总的来说,C#.NET在线客服系统结合了前端Web技术和后端服务器处理,通过数据库存储关键信息,提供实时的客户支持服务。开发者通过C#编程...
根据描述,这个工具是一个“超强抓包工具”,它具有跨平台的特性,不仅能在个人电脑(PC)上运行,还能在移动设备上,包括Android和iOS系统。这意味着它可能是网络数据包分析工具,如Fiddler或Wireshark的一种变体,...
3. **手机版源码**:这表示系统有移动端支持,可能是iOS和Android。对于iOS,可能使用C#的跨平台框架Xamarin,而对于Android,可以使用Mono for Android。开发者可能利用 Xamarin.Forms 来实现跨平台用户界面,同时...
接着,我们来看看MAUI,这是一个全新的跨平台开发框架,允许开发者使用单一代码库创建可在iOS、Android、macOS和Windows上运行的应用程序。MAUI是Xamarin.Forms的后续产品,增加了对.NET 6的支持,提供更好的性能和...
Appium是一个开源的自动化测试框架,用于原生、移动web和混合应用的自动化测试,适用于iOS和Android平台。移动原生应用指的是使用iOS或Android软件开发工具包(SDK)开发的应用,移动web应用指的是使用移动浏览器...
的体验与迭代速度影响着用户的粘性,这同时也对从事移动开发人员提出更高要求,进而移动端框架也层出不穷。 上图显示的是传统的服务端架构和客户端 App 架构对比。传统的服务端架构中最底下是一个 OS,一般是 Linux...
- **Appium**:主要用于移动应用的自动化测试,支持Android和iOS平台。虽然Appium提供了广泛的设备和环境支持,但配置过程相对复杂。 - **Robot Framework**:一个通用的自动化测试框架,易于学习且具有很强的可扩展...
8. **app**:可能是一个移动端应用的源代码,用于开发iOS或Android版本的知识付费系统客户端,让用户能够在手机或平板上浏览和购买知识内容。 9. **framework**:这可能是系统所使用的框架代码,如Laravel、Django...
7. **移动应用**:如电子邮件客户端软件,可能需要了解C#或其他移动端开发语言,如Android或iOS SDK。 8. **系统集成**:比如网上物流管理系统,需要理解物流业务流程,可能涉及API接口开发,与其他物流服务提供商...