HTML+CSS+JS 开发 Firefox OS 应用编程实战

也许你听说过Firefox OS或者Boot to Gecko(B2G),它是什么?一个OS!一个完全开源的、基于Firefox渲染引擎(Gecko)的操作系统,这意味着其应用将可以使用现代Web技术开发:HTML、CSS和JavaScript。目前这个项目叫做Gaia,一个小型的、基于Boot to Gecko技术的手机操作系统,但实际上并不限于手机——它已经被移植到了Raspberry Pi上了。

下面是一个关于Firefox OS的应用开发实践,只需要开发者有基本的HTML、CSS、JavaScript知识就可以了。

我没有Firefox手机怎么办?


当然没问题,最简单的方式是在计算机上运行一个模拟器。首先需要下载并安装Firefox Nightly(编者注:其实最新版Firefox已经支持该模拟器),之后拖拽安装该插件,最后打开相应链接就可以了。

一旦下载、安装完成,你看到的会是这样:

 

如果这个选项卡没有打开,你可以从菜单中装载它:Tools -> Web Developer -> Firefox OS Simulator。继续点击Stopped链接,Firefox OS就出现了。

解锁后你可以随便看看,已经预装了很多应用——其中我最喜欢的是CrystalSkull,非常绚丽,让人神魂颠倒……不好意思,跑题了。

你需要注意,目前Firefox OS和Gaia仍在开发中(该平台上大部分应用也是如此),所以如果出现了小的错误请容忍它。

所以,开始吧!


如果我们回到Firefox的插件安装页面,将会看到有两种为模拟器安装应用的选项,你可以通过本地应用或者URL链接。我们将会选择前者,所以,开始创建文件吧!

我们这里要开发的应用叫做Pocket Kitten,将会随机展示一张小猫的照片,每次点击设备的时候将会切换另一张小猫的图片。首先创建一个文件夹存放应用程序,再在其中创建两个子文件夹,一个用于存放CSS文件(样式),另一个用于存放JavaScript(js)。接下来创建第一个文件,manifest.webapp,以json格式编写应用相关的数据(如果你需要使用Web API的话还需要申请权限)。

  1. {
  2.  "name": "Pocket Kitten",

  3.  "description": "Calm yourself with a kitten",

  4.  "launch_path": "/index.html",

  5.  "developer": {

  6.    "name": "Ruth John",

  7.    "url": "http://www.rumyra.com"

  8.  },

  9.  "icons": {

  10.    "120": "/style/icons/pocket-kitten@2x.png",

  11.    "60": "/style/icons/pocket-kitten.png"

  12.  },

  13.  "orientation": "portrait-primary"

  14. }

我们还需要为应用创建一个icon。实际上是两个:第二个是为Retina屏幕准备的,是第一张图片分辨率的两倍。

简单起见,这里开发的是一个单页App,所以接下来创建我们唯一的HTML文件,index.html。我们所需要做的就是在HTML文件顶部设置应用名,并添加一只小猫的图片。

  1. <!DOCTYPE html> 
  2. <html>

  3.  <head>

  4.    <meta charset="utf-8" />

  5.    <meta http-equiv="pragma" content="no-cache" />

  6.    <title>Pocket Kitten</title>

  7.  

  8.    <link rel="stylesheet" type="text/css" href="style/pocket-kitten.css"/>

  9.    <script defer type="application/javascript" src="js/pocket-kitten.js"></script>

  10.  </head>

  11.  <body role="application">

  12.    <section role="region">

  13.      <header aria-level="1">

  14.        <h1>Pocket Kitten</h1>

  15.      </header>

  16.  

  17.      <figure class="show-kitten">

  18.        <div>

  19.          <img id="kitten-image" src="/style/images/fetching.gif" alt="A picture of a kitten" />

  20.          <span></span>

  21.        </div>

  22.        <figcaption>Tap to see a new little kitty</figcaption>

  23.      </figure>

  24.    </section>

  25.  </body>

  26. </html>

在Firefox中打开index.html文件,接下来我们将在浏览器中开发Pocket Kitten。如果我们将视图设置得和模拟器一样,将可以在添加CSS同时看到应用的样式。打开菜单Tools -> WebDeveloper -> Responsive Design View,从下拉列表中选择320x480。

接下来编写一些CSS文件,设计应用的样式。Gaia开发团队已经为我们提供了一个模式库——Gaia building blocks,实际上,利用开放的网络技术,我们可以把应用变成任何样子,这简直太棒了!

因为这个例子比较小,所以只有一个CSS文件:style/pocket-kitten.css:

  1. html, body { 
  2.  margin: 0;

  3.  padding: 0;

  4.  font-size: 10px;

  5.  font-family: "Georgia", serif;

  6.  line-height: 1;

  7.  overflow: hidden;  

  8. }

  9.  

  10. section[role="region"] {

  11.  position: absolute;

  12.  top: 0;

  13.  left: 0;

  14.  width: 100%;

  15.  height: 100%;

  16.  border: 0;

  17.  background: url(images/document_bg.png);

  18.  overflow-x: hidden;

  19.  overflow-y: scroll;

  20.  background-image:

  21.    -moz-linear-gradient(top, rgba(141,186,196,0.5) 30%, rgba(178,220,230,0.5)),

  22.    url('images/gray_jean.png')

  23.  ;

  24. }

  25.  

  26. header {

  27.  text-align: center;

  28.  color: white;

  29.  padding: 1px 0px;

  30.  background-image:

  31.    -moz-linear-gradient(top, rgba(9,64,72,0.7), rgba(0,44,52,0.7)),

  32.    url('images/classy_fabric.png')

  33.  ;

  34. }

  35.  

  36. h1 {

  37.  font-weight: normal;

  38.  font-size: 24px;

  39.  font-style: italic;

  40.  text-shadow: 2px 2px 2px black;

  41. }

  42.  

  43. .show-kitten div {

  44.  margin: 20px auto;

  45.  height: 320px;

  46.  width: 240px;

  47.  overflow: hidden;

  48.  position: relative;

  49.  background:transparent url('images/fetching.gif') no-repeat left top;

  50.  border-radius: 10px;

  51.  box-shadow:

  52.    0px 0px 1px 4px rgba(222,249,255,1),

  53.    0px 0px 2px 4px rgba(0,0,0,0.5),

  54.    1px 1px 2px 4px rgba(0,0,0,0.5),

  55.    inset 0px 0px 2px 2px rgba(0,0,0,0.4)

  56.  ;

  57. }

  58.  

  59. /*box-shadow doesn't render on image, so hacking a covering span*/

  60. .show-kitten div span {

  61.  height: 320px;

  62.  width: 240px;

  63.  position: absolute;

  64.  top: 0px;

  65.  left: 0px;

  66.  box-shadow: inset 0px 0px 2px 2px rgba(0,0,0,0.4);

  67.  border-radius: 10px;

  68. }

  69.  

  70. .show-kitten figcaption {

  71.  font-size: 18px;

  72.  color:rgba(0,44,52,1);

  73.  text-shadow: 1px 1px 1px white;

  74.  margin: 20px 0px;

  75.  text-align: center;

  76. }

也许你已经注意到了,CSS文件里有三张背景图片,其中两个是背景纹理,另外一个是小猫照片的占位图:

在加入这些样式/图片文件后,你可以在浏览器中刷新Pocket Kitten来预览其样式。

现在先预览一下它在模拟器中的样子吧:

  1. 返回模拟器插件tab,点击‘Running’来停止模拟器;

  2. 点击Add Directory按钮,浏览Place Kitten文件夹并选择manifest.webapp file文件;

  3. 点击open,Pocket Kitten应用就被添加到模拟器屏幕中了;

  4. 接下来重新启动模拟器将会看到Pocket Kitten应用图标;

  5. 点击运行。

接下来需要添加触摸/点击操作来切换图片的功能。这需要创建一个JavaScript文件:pocket-kitten.js,将其保存在js文件夹中。这里我将使用一个外部Web Service——placekitten.com,可以根据URL中不同的参数提供不同的小猫图片,这意味着当用户没有数据连接时无法使用,需要返回相应的提示信息。

下面来看看用户没有数据连接时的警告应该怎么写:

  1. if (navigator.onLine == false) { 
  2.  alert('Oh nos! It seems you're not online :

  3.    (nSorry but this app only works if you are online,

  4. please connect and try again.

  5.    ');

  6. }

保存文件并关闭网络连接,点击Pocket Kitten旁边的‘Update’按钮,试试吧。测试完毕后你可以继续连接互联网。

为了从placekitten.com获取图片,需要在URL最后添加宽度和高度参数,不同的参数会返回不同的图片。下面的JavaScript代码将会生成随机的宽和高,因此会从placekitten.com获取一张随机的图片来代替HTML中的图片元素。

  1. //creates url and loads image 
  2. function setImage() {

  3.  //get value between 240 and 440 for the width

  4.  var imageWidth = Math.floor(Math.random() * (200 + 1)) + 240;

  5.  //get value between 320 and 520 for the height

  6.  var imageHeight = Math.floor(Math.random() * (200 + 1)) + 320;

  7.  

  8.  //Create image source url

  9.  var sourceUrl = 'http://placekitten.com/'+imageWidth+'/'+imageHeight;

  10.  //ge image element

  11.  var domElement = document.getElementById("kitten-image");  

  12.  

  13.  //set new image source

  14.  domElement.src = sourceUrl;

  15. }

  16.  

  17. //run once on app load

  18. setImage();

  19. //run when clicked/tapped

  20. document.body.addEventListener('click', function onKittenSmashed(evt) {

  21.  setImage();

  22. });

将这段代码加入JavaScript文件中,保存并返回模拟器插件页面,点击‘Update’按钮,模拟器将会重启并自动加载应用,此时你点击屏幕将会加载一张新的小猫照片。

回想一下,你刚刚编写完了一个Firefox应用。真的吗?实际上你刚刚开发的还是一个Web应用,这也正是你所要做的!

当然,至于怎么将这个应用装到手机里就太麻烦了,首先你需要有一台支持Firefox OS的Android手机,并安装Android SDK和Gaia……[详细]

其实,作者已经将这个项目托管在了GitHub上,你可以通过URL来安装:

Add URL "http://rumyra.github.com/Pocket-Kitten/"

(编译/王然 责编/张红月)

原文链接:12 Devs of Xma

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值