消息组件为你的App提供了可视评论和消息系统。
消息组件布局
- ...
- <div class="page">
- <div class="page-content messages-content">
- <div class="messages">
- <!-- 时间戳 -->
- <div class="messages-date">Sunday, Feb 9 <span>12:58</span></div>
- <!-- 发送的消息 (默认为绿色背景,在右边) -->
- <div class="message message-sent">
- <!-- Bubble with text -->
- <div class="message-text">Hello</div>
- </div>
- <!-- 另一条发送的消息 -->
- <div class="message message-sent">
- <!-- 文本气泡 -->
- <div class="message-text">How are you?</div>
- </div>
- <!-- 接收的信息(默认为灰色背景,在左边) -->
- <div class="message message-with-avatar message-received">
- <!-- Sender name -->
- <div class="message-name">Kate</div>
- <!-- 文本气泡 -->
- <div class="message-text">I am fine, thanks</div>
- <!-- 发送者头像 -->
- <div style="background-image:url(http://lorempixel.com/output/people-q-c-100-100-9.jpg)" class="message-avatar"></div>
- </div>
- <!-- 另一个时间戳 -->
- <div class="messages-date">Sunday, Feb 3 <span>11:58</span></div>
- <!-- Sent message with image -->
- <div class="message message-pic message-sent">
- <!-- Bubble with image -->
- <div class="message-text"><img src="http://lorempixel.com/300/300/"></div>
- <!-- Message label -->
- <div class="message-label">Delivered 2 days ago</div>
- </div>
- </div>
- </div>
- </div>
- ...
消息组件的页面布局:
-
"messages-content"
- 消息容器,应该加到"page-content"类上 -
"messages"
- 消息气泡的容器,必需 -
"messages-date"
- 单个时间戳容器,包含会话日期和时间(在<span>标签中) -
"message"
- 单条消息
单条消息的内部结构:
-
"message-name"
- 发送者名称 -
"message-text"
- 文本气泡 -
"message-avatar"
- 发送者头像 -
"message-label"
- 气泡下的文本标签
单条消息容器的一些附加class
-
"message-sent"
- 标识一条被用户发送过的消息,它会位于容器的右侧并且拥有绿色的背景 -
"message-received"
- 标识一条被用户接收的消息,它会位于容器的左侧并且拥有灰色的背景 -
"message-pic"
- 为单条带<img>的消息添加类,除了image,该条消息不可以包括其他元素 -
"message-with-avatar"
- 包含头像 -
"message-with-tail"
- 包含一个小尾巴
单条消息的一个附加的class
-
"message-hide-name"
- 隐藏名字 -
"message-hide-avatar"
- 隐藏头像 -
"message-hide-label"
- 隐藏消息标签 -
"message-last"
- 如果这是一个发送者连续会话的最后一条,则带有一个小尾巴并且有更大的底部留白 -
"message-first"
- 如果这是一个发送者会话的第一条,则带有发送者的名称
In such default layout - new messages will appear on bottom of the page. If you need to have new messages on top of the page you need to use newMessagesFirst:true parameter when initializing Messages
Messages Auto Layout
消息自动布局
Framework7 may add all required additional classes (like "message-pic", "message-with-avatar", "message-with-tail", etc) to each message automatically. For this case we need to use autoLayout:true parameter when initializing Messages
- ...
- <div class="messages-date">Sunday, Feb 9 <span>12:58</span></div>
- <div class="message message-sent">
- <div class="message-text">Hello</div>
- </div>
- <div class="message message-sent">
- <div class="message-text">How are you?</div>
- </div>
- <div class="message message-received">
- <div class="message-name">Kate</div>
- <div class="message-text">I am fine, thanks</div>
- <div style="background-image:url(http://lorempixel.com/output/people-q-c-100-100-9.jpg)" class="message-avatar"></div>
- </div>
- <div class="messages-date">Sunday, Feb 3 <span>11:58</span></div>
- <div class="message message-sent">
- <div class="message-text"><img src="http://lorempixel.com/300/300/"></div>
- <div class="message-label">Delivered 2 days ago</div>
- </div>
- ...
That is all, Framework7 will add all required classes to these messages. You just need to keep "message-sent", "message-received" classes
Initialize Messages with JavaScript
Now, when we have Messages' HTML, we need to initialize it. We need to use related App's method:
myApp.messages(messagesContainer, parameters) - initialize Messages with options
- messagesContainer - HTMLElement or string (with CSS Selector) of Messages container HTML element. Required.
- parameters - object - object with Messages parameters. Optional.
- Method returns initialized Messages instance
For example:
- var myMessages = app.messages('.messages', {
- autoLayout: true
- });
Messages Parameters
Let's look on list of all available parameters:
autoLayout | boolean | true | Enable Auto Layout to add all required additional classes (like "message-pic", "message-with-avatar", "message-with-tail", etc) to each message automatically |
newMessagesFirst | boolean | false | Enable if you want to use new messages on top, instead of having them on bottom |
messages | array | Array with initial messages. Each message in array should be presented as object with message parameters | |
messageTemplate | string | * Look bellow | Single message Template7 template |
Message Template
You can modify message template by passing your custom Template7-formatted template. By default it is:
- {{#if day}}
- <div class="messages-date">{{day}} {{#if time}}, <span>{{time}}</span>{{/if}}</div>
- {{/if}}
- <div class="message message-{{type}} {{#if hasImage}}message-pic{{/if}} {{#if avatar}}message-with-avatar{{/if}} message-appear-
- {{#if name}}<div class="message-name">{{name}}</div>{{/if}}
- <div class="message-text">{{text}}</div>
- {{#if avatar}}<div class="message-avatar" style="background-image:url({{avatar}})"></div>{{/if}}
- {{#if label}}<div class="message-label">{{label}}</div>{{/if}}
- </div>
Messages Methods & Properties
After we initialize Messages we have its initialized instance in variable (like myMessages
variable in example above) with helpful methods and properties:
myMessages.params | Object with passed initialization parameters |
myMessages.container | Dom7 element with messagebar container HTML element. |
myMessages.addMessage(messageParameters, method, animate); |
Add new message to the end or to the beginning depending on methodparameter
|
myMessages.appendMessage(messageParameters, animate); | Add new message to the end (to the bottom) |
myMessages.prependMessage(messageParameters, animate); | Add new message to the beginning (to the top) |
myMessages.addMessages(messages, method, animate); | Add multiple messages per once.
|
myMessages.removeMessage(message); | Remove message
|
myMessages.removeMessages(messages); | Remove multiple messages
|
myMessages.scrollMessages(); | Scroll messages to top/bottom depending on newMessagesFirst parameter |
myMessages.layout(); | Apply messages auto layout |
myMessages.clean(); | Clean/remove all the messages |
myMessages.destroy(); | Destroy messages instance |
Single Message Parameters
Let's look on single message parameters object that we should use to addMessage, appendMessage and prependMessage methods:
text | string | 消息文本,也可以使用HTML字符串,如果你想要添加图片消息,则应该传递<img src="..."> 。必选
|
|
name | string | 发送者名称。可选 | |
avatar | string | 发送者头像url。可选 | |
type | string | 'sent' | 消息类型,'sent'或'received'。可选 |
label | string | Message label. Optional | |
day | string | 日期,例如 - 'Today', 'Monday', 'Yesterday', 'Fri', '22.05.2014'。可选 | |
time | string | Time string, for example - '22:45', '10:30 AM'. Optional |
Initialize Messages with HTML
If you don't need to use Messages methods and properties you can initialize it using HTML without JavaScript. You can do that just by adding additional "messages-init" class to .messages
. In this case we may pass required parameters using data- attributes.
- ...
- <div class="page-content messages-content">
- <!-- Additional "messages-init" class-->
- <div class="messages messages-init" data-auto-layout="true" data-new-messages-first="false">
- <div class="messages-date">Sunday, Feb 9 <span>12:58</span></div>
- <div class="message message-sent">
- <div class="message-text">Hello</div>
- </div>
- ...
- </div>
- </div>
- ...
Parameters that used in camelCase, for example autoLayout, in data- attributes should be used as hypens-case as data-auto-layout
Access to Messages's Instance
If you initialize Messages using HTML it is still possible to access to Messages's instance. It is "f7Messages" property of messages's container HTML element:
- var myMessages = $$('.messages')[0].f7Messages;
- // Now you can use it
- myMessages.layout();
Example
- <div class="page toolbar-fixed">
- <div class="page-content messages-content">
- <div class="messages">
- <div class="messages-date">Sunday, Feb 9 <span>12:58</span></div>
- <div class="message message-sent">
- <div class="message-text">Hello</div>
- </div>
- <div class="message message-sent">
- <div class="message-text">How are you?</div>
- </div>
- <div class="message message-received">
- <div class="message-name">Kate</div>
- <div class="message-text">I am fine, thanks</div>
- <div style="background-image:url(http://lorempixel.com/output/people-q-c-100-100-9.jpg)" class="message-avatar"></div>
- </div>
- <div class="messages-date">Sunday, Feb 3 <span>11:58</span></div>
- <div class="message message-sent">
- <div class="message-text">Nice photo?</div>
- </div>
- <div class="message message-sent message-pic">
- <div class="message-text"><img src="http://lorempixel.com/300/300/"></div>
- <div class="message-label">Delivered</div>
- </div>
- <div class="message message-received">
- <div class="message-name">Kate</div>
- <div class="message-text">Wow, awesome!</div>
- <div style="background-image:url(http://lorempixel.com/output/people-q-c-100-100-9.jpg)" class="message-avatar"></div>
- </div>
- </div>
- </div>
- </div>
- var myApp = new Framework7();
- var $$ = Dom7;
- // 会话flag
- var conversationStarted = false;
- // Init Messages
- var myMessages = myApp.messages('.messages', {
- autoLayout:true
- });
- // Init Messagebar
- var myMessagebar = myApp.messagebar('.messagebar');
- // Handle message
- $$('.messagebar .link').on('click', function () {
- // Message text
- var messageText = myMessagebar.value().trim();
- // Exit if empy message
- if (messageText.length === 0) return;
- // Empty messagebar
- myMessagebar.clear()
- // 随机消息类型
- var messageType = (['sent', 'received'])[Math.round(Math.random())];
- // 接收的消息的头像和名称
- var avatar, name;
- if(messageType === 'received') {
- avatar = 'http://lorempixel.com/output/people-q-c-100-100-9.jpg';
- name = 'Kate';
- }
- // Add message
- myMessages.addMessage({
- // Message text
- text: messageText,
- // 随机消息类型
- type: messageType,
- // 头像和名称
- avatar: avatar,
- name: name,
- // 日期
- day: !conversationStarted ? 'Today' : false,
- time: !conversationStarted ? (new Date()).getHours() + ':' + (new Date()).getMinutes() : false
- })
- // 更新会话flag
- conversationStarted = true;
- });
相关推荐
Framework7 是免费开源的 HTML 移动端框架,用来开发混合移动端应用或者 iOS 7 的 Web 应用,并且带有 iOS 7 的原生外观和感觉。Framework7 也是独立的原型应用工具。
Vue.js 是一个轻量级的前端JavaScript框架,以其易学易用、高效和灵活性著称,而Framework7则是一个模仿iOS和Android原生界面的Web App框架。 在这个"vue-framework7-master"项目中,我们可以看到以下关键组成部分...
MobSF是Mobile Security Framework的缩写,是一个移动端应用安全问题检出的框架和工具,它适用于Android/iOS/Windows,能够执行动态和静态的恶意软件的分析和检测。支持Android和iOS以及Windows移动应用,无论是二...
Framework7是一款强大的HTML5移动应用框架,专为构建原生感觉的iOS和Android应用而设计。这个1.6.4版本的压缩包包含了用于开发移动端Web应用的所有必要资源和文件,使得开发者能够利用HTML、CSS和JavaScript技术创建...
其中,`Framework7`是一个流行的开源移动应用框架,它模仿了原生iOS和Android的UI设计,提供了丰富的组件和交互效果,使得开发者能够构建出与原生应用相似的体验。`Vue.js`是一个轻量级的前端MVVM(Model-View-...
Appium是一个用于移动端UI自动化测试的工具,它支持iOS和Android平台上的原生、移动Web和混合应用。 除了测试工具,文章还提及了性能测试相关的工具。Locust是一个基于事件的性能测试工具,它使用Python的协程来...
这个项目采用的技术栈是ASP.NET MVC和WebAPI作为后端开发框架,用于提供服务和数据接口,而Android Studio则用于构建Android客户端,iOS端虽然没有详细描述,但通常也会使用Swift或Objective-C进行开发。 描述中...
**Flutter** 是一款由Google推出的跨平台移动应用开发框架,旨在通过一套代码库就能开发出高质量的iOS和Android应用。该框架的核心优势在于其高效的开发速度、优秀的性能表现以及强大的跨平台能力。 #### 二、关键...
一个简单粗暴的移动端 Web UI 框架。CMUI 是一个专攻移动网页的 UI 框架,它提供了丰富的组件和简洁的接口,开箱即用。CMUI 帮助开发者摆脱样式细节和兼容性困扰,从而腾出更多精力投入到业务开发中。兼容性浏览器...
React Native是由Facebook开发的开源框架,它允许开发者用JavaScript和React语法构建原生的iOS和Android应用。通过React的声明式编程模型和组件化思想,开发者可以实现高效且可复用的代码,大大简化了移动应用的开发...
Framework7是一个开源免费的HTML移动端框架,可以用来开发混合移动应用(原生和HTML混合)或者开发iOS&Android风格的WEB APP,也可以用来作为原型开发工具,可以迅速创建一个应用的原型。Framework7 1.6.4 更新日志:...
移动安全框架MSF(Mobile Security Framework - MobSF)是一个全面的、开源的渗透测试和安全分析平台,专门针对移动应用,如Android和iOS应用程序。它为安全专家提供了自动化静态和动态分析工具,帮助他们在开发周期...
Framework7 是由Ilya Krasheninnikov开发的,它支持HTML5、CSS3和JavaScript技术,可以构建iOS和Android风格的应用。框架的核心特性包括页面路由、组件库、交互动画以及可定制的主题。 二、项目结构 在"framework7...
在移动应用开发领域,Xamarin 和 Prism 是两个强大的工具,它们结合使用可以为开发者提供一套高效、跨平台的解决方案,支持构建高质量的Android、iOS和Windows应用程序。让我们深入探讨一下如何利用Xamarin和Prism...
Framework7则是一款流行的移动应用UI框架,它提供了一套完整的iOS和Android风格的组件,包括导航栏、侧滑菜单、表单元素等,使得开发者可以快速构建出原生感观的应用界面。当Aurelia与Framework7结合时,开发者可以...
Framework7 是一款强大的移动端 UI 框架,提供了丰富的组件和布局选项,可帮助开发者构建出高度仿原生的 iOS 和 Android 应用界面。其组件库包括滑动导航、侧滑菜单、下拉刷新、上拉加载更多等,能够满足多种应用...
Framework7 是一款强大的HTML5移动应用框架,模仿原生iOS和Android的界面风格,提供了丰富的组件和API,使得开发者能够用HTML、CSS和JavaScript构建出与原生应用体验相近的Web应用。它特别适合构建单页应用(SPA)和...
7. **移动端开发**:在移动端,C#通过Xamarin或Unity3D支持iOS和Android应用开发。学习如何使用这些工具和技术,结合C#编写跨平台的移动应用,是现代开发者的必备技能。 8. **单元测试与持续集成**:TDD(Test-...
Rexxar 是一个针对移动端的混合开发框架。现在支持 Android 和 iOS 平台。Rexxar-iOS 是 Rexxar 在 iOS 系统上的客户端实现。 通过 Rexxar,你可以使用包括 javascript,css,html 在内的传统前端技术开发移动应用。...
Framework7是一款开源的HTML5移动应用框架,它允许开发者使用Web技术(HTML, CSS, JavaScript)来构建原生iOS和Android应用,其设计灵感来源于苹果的Swift和Objective-C。该框架提供了丰富的组件和交互效果,使得...