kelichao / framework7 Goto Github PK
View Code? Open in Web Editor NEW移动端UI框架F7的使用教程
移动端UI框架F7的使用教程
// 模板内容
var template = `
<div data-page="home" class="page">
<div class="page-content">
<div class="content-block">
<p>Here are the list of people i know:</p>
<ul>
{{#each people}}
<li>{{firstName}} {{lastName}}</li>
{{/each}}
</ul>
</div>
</div>
</div>`;
// 数据
var data = {
people : [
{
firstName: 'John',
lastName: 'Doe'
},
{
firstName: 'Mark',
lastName: 'Johnson'
},
]
};
// 编译模板这一步可能是将模板缓存,方便之后快速调用
var compiledTemplate = Template7.compile(template);
// 使用模板加载数据
var htmlStr = compiledTemplate(data);
//将得到的结果输出到指定区域
$("body").append(htmlStr);
// 初始化
var myApp = new Framework7();
// 添加视图
var mainView = myApp.addView('.view-main');
// 切换视图中的链接,用以替换内容
mainView.router.load({
url: "/index.html",
});
// 后退 :切换视图中的链接,用以替换内容
mainView.router.back({
url: "/demo.html",
});
注意, url, content, pageName 这三个参数,你只能同时使用一个。
加载方式详解
<a href="index.html" class="back no-animation">
// Init app
var myApp = new Framework7();
// Init main view
var mainView = myApp.addView('.view-main');
// 动态页面的写法
// HTML Content of new page:
var newPageContent = `<div class="page" data-page="my-page">
<div class="page-content">
<p>Here comes new page</p>
</div>
</div>`;
// 方法一
mainView.router.loadContent(newPageContent);
// 方法二
mainView.router.load({
content: newPageContent,
animatePages: false
});
// 启用内敛功能
var mainView = myApp.addView('.view-main', {
domCache: true //enable inline pages
});
另外页面的page需要加一个cached类才能够使用
<!-- About page -->
<div class="page cached" data-page="about">
<div class="page-content">
<p>About page</p>
</div>
</div>
dom中添加data-view属性
data-view=".right-view"
材料,准备工作
项目 | 验证安装完成 | 教程 |
---|---|---|
npm | npm -v | |
npm install -g cordova | cordova -v | cordova打包教程 |
jdk | javac(安装jdk主要是目录,推荐默认,会安装好jir跟jdk两个目录) | jdk安装 |
sdk | adb这个也是需要配环境变量的 | sdk环境 sdk下载 |
ant | ant -v |
1.安装cordova
npm install -g cordova
2.检查环境
$ cordova requirement android
3.创建app目录,文件夹取名为hello
$ cordova create hello
# 并进入hello目录
$ cd hello
4.创建app平台,以及实施打包
$ cordova platform add android --save
5.打包APP
$ cordova build
目录 : > hello2\platforms\android\build\outputs\apk
Page 回调函数可以用来为特定的页面执行特定的代码。Page 回调函数会被 Page 事件有很多优点。
例子
// 当Framework7把新页面(必须带有data-page属性)插入到DOM的时候会触发。
myApp.onPageBeforeInit(pageName, callback(page))
// pageName - string - 页面的 "data-page" 属性
// callback(page) - function - 要执行的回调. 会传入一个 Page Data 对象作为参数
用于触发
var total = myApp.onPageInit('home', function(page){
console.log("home页面被触发了");
});
total.trigger();// home页面被触发了
工具栏只提供纯UI空间,切换为active类
<!-- 工具栏开始 -->
<div class="toolbar tabbar tabbar-labels">
<div class="toolbar-inner">
<a href="#tab1" class="tab-link active">
<i class="icon demo-icon-1"></i>
<span class="tabbar-label">Label 1</span>
</a>
<a href="#tab2" class="tab-link">
<i class="icon demo-icon-2">
<span class="badge bg-red">5</span>
</i>
<span class="tabbar-label">Label 2</span>
</a>
<a href="#tab3" class="tab-link">
<i class="icon demo-icon-3"></i>
<span class="tabbar-label">Label 3</span>
</a>
<a href="#tab4" class="tab-link">
<i class="icon demo-icon-4"></i>
<span class="tabbar-label">Label 4</span>
</a>
</div>
</div>
<!-- 工具栏结束 -->
不需要页面写html,直接调用接口就可以。
$$('.message').on('click', function () {
myApp.addNotification({
// 主标题
title: '真是个酷炫狂拽的App',
// 小标题
subtitle: '来自土豆的消息',
// 内容
message: '地瓜地瓜,土豆呼叫地瓜。在9点方向发现如花,BalaBalaBala',
// 头像
media: '<img width="44" style="border-radius:100%" src="http://lorempixel.com/output/people-q-c-100-100-9.jpg">',
// 关闭按钮回调
onClose: function () {
myApp.alert('通知被关闭了~');
}
});
});
<div class="pages">
),而 Pages 必须是 View 的子元素(<div class="view">
)。 <div class="views">
<div class="view view-main">
<!-- Pages是page在同一个View中的容器,是必须的,所有的页面切换都在这里-->
<div class="pages">
<!--每一个Page都应该放在Pages容器中,Pages必须是View的子元素-->
<!-- data-page用于对应回调函数,非常有用 -->
<div class="page" data-page="home">
<div class="page-content">
<h2>我是Page的demo</h2>
<h3>data-page用于对应回调函数,非常有用 </h3>
<h4>每一个Page都应该放在Pages容器中,Pages必须是View的子元素</h4>
</div>
</div>
</div>
<!-- Pages结束 -->
</div>
<!-- View结束 -->
</div>
<!-- Views结束 -->
主要用于回调,每一个 page 都有一个 data-page 属性,存储了一个唯一的page名。这个属性不是必须的,但是强烈推荐使用。这个属性在 page 事件中或者在page 回调函数中会非常有用,可以用来帮助我们确定加载的是哪一个页面。
所有的可见的内容,比如列表和表单等,都应该放在 <div class="page-content">
中,她是 <div class="page">
的子元素。这样才能保证正确的样式,布局和滚动。
触发回调事件的方式
// Option 1. Using one 'pageInit' handler for all pages (recommended way):
$$(document).on('pageInit', function (e) {
// Do something here when page loaded and initialized
})
// Option 2. Using live 'pageInit' event handlers for each page (not recommended)
$$(document).on('pageInit', '.page[data-page="about"]', function (e) {
// Do something here when page with data-page="about" attribute loaded and initialized
})
用于确定加载到的页面到底是哪一个,可以在一个handler中处理不同的页面了:
// In page callbacks:
myApp.onPageInit('about', function (page) {
// "page" variable contains all required information about loaded and initialized page
})
// In page events:
$$(document).on('pageInit', function (e) {
// Page Data contains all required information about loaded and initialized page
var page = e.detail.page;
})
获得的page属性
IOS/Android模板有区别,分开使用。
DOM使用$$调用,API与JQuery完全一致
var $$ = Dom7;
初始化应用
var myApp = new Framework7();
<!-- 导航栏放在body內,可以放在page内部 --> -->
<div class="navbar">
<div class="navbar-inner">
<div class="left">
<a href="#" class="link">
<i class="icon icon-back"></i>
<span>Back</span>
</a>
</div>
<div class="center">Center</div>
<div class="right">
<a href="#" class="link">
<i class="icon icon-bars"></i>
<span>Menu</span>
</a>
</div>
</div>
</div>
<!-- 导航栏结束 -->
隐藏导航栏
// 全局选择,隐藏选中的导航栏
myApp.hideNavbar(".navbar");// showNavbar
显示导航栏
// 隐藏当前page导航栏
// 列如:
// 当前视图
var mainView = myApp.addView('.view-main');
mainView.hideNavbar();// showNavbar
<!-- Views 是应用主容器。一个应用中只能有一个 Views -->
<div class="views">
<!-- View 可以放在应用中的任何位置,所有的可见View都应该放在Views中。用来做页面切换的动画。-->
<!-- 主视图会有一个 view-main 的class,会默认把所有的链接加载的页面放进主视图中。 pushState hash navigation 的时候也是只在主视图中工作。 -->
<div class="view view-main">
<!-- Navbar-->
<!-- Pages -->
<div class="pages">
<div class="page" data-page="home">
<div class="page-content">
<h2>我是视图内容</h2>
<!-- 额外的视图外部需要包裹的是page容器 -->
<a href="test1.html">前往其他视图</a>
</div>
</div>
</div>
<!-- Pages结束 -->
<!-- Toolbar-->
</div>
<!-- View结束 -->
</div>
<!-- Views结束 -->
配套js需要的代码
// 初始化框架
var myApp = new Framework7({
// ...
});
// 添加视图,f7框架的视图都是需要注册的,事件不注册,就无法跳转
var mainView = myApp.addView('.view-main', {
dynamicNavbar: true
})
老版视图介绍
View 在应用中是一个独立的部分,她有自己的设置、页面切换和历史。每一个视图都可以有不同的导航栏、工具栏布局和不同的样式。所以View就像是嵌在应用中的另一个应用。这种功能可以让你来分别操作一个应用中的不同部分。
Views 是所有可见View的容器(不包括Modal和Panel)。Views 是你的应用主容器。一个应用中只能有一个 Views
<!-- Views -->
<div class="views">
<!-- Your main view -->
<div class="view view-main">
<!-- Navbar-->
<!-- Pages -->
<!-- Toolbar-->
</div>
<!-- Another view -->
<div class="view another-view">
<!-- Navbar-->
<!-- Pages -->
<!-- Toolbar-->
</div>
</div>
<!-- Views结束 -->
var myApp = new Framework7({
// ...
});
// Initialize views
// 初始化视图,
var mainView = myApp.addView('.view-main', {
dynamicNavbar: true,// 在当前View中是否使用动态导航栏
url: undefined,// View 默认的 url,如果没有定义,则就是当前文件的路径
domCache: false,// 是否要进行dom缓存
// 另一个View的CSS选择器,默认情况下,所有的链接都会被加载到当前的页面。
// 可以指定讲当前view中链接加载到另一个View中。
linksView: undefined
})
var anotherView = myApp.addView('.another-view');
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.