`
webdev2014
  • 浏览: 711165 次
文章分类
社区版块
存档分类
最新评论

【翻译】Sencha Touch 2入门:创建一个实用的天气应用程序之二

 
阅读更多

原文地址:http://www.sencha.com/blog/getting-started-with-sencha-touch-2-build-a-weather-utility-app-part-2/

作者:Lee Boonstra
Lee is a technical trainer at Sencha. She’s located in Amsterdam and has experience in both front-end and back-end development. Lee spends her spare time developing web and mobile apps. She is writing a cookbook for O'Reilly about Sencha Touch.


在这三个部分的Sencha Touch教程中,将会创建一个简单的我是否需要带伞的实用应用程序,它会从worldweatheronline.com提供的Web服务中加载天气信息。基于天气代码,该应用程序可以预测需要不需要带伞。


在本教程的第二部分,将开始创建应用程序的主题。这需要使用到第一部分教程的代码,可以在这里下载。

以下是一些附加资源:
最终的应用程序代码——完整的解决方案样式表
一些教程好点子
要查看应用程序自定义主题的效果,可单击这里


本教程有以下要求:

  • Sencha Touch 2.3或者更高版本
  • Sencha Cmd 4.x
  • Ruby的Compass & Sass
  • 一个现代浏览器
  • 编辑器


扩展默认主题

这选哦使用默认主题生产一个自定义主题。从默认主题扩展是一个好主意,因为它包含了许多Sencha Sass变量和混入(mixins),这个可以在API文档中找到。



默认情况下,在使用Sencha Cmd创建应用程序的时候,已经创建了一个resources(资源)文件夹。在文件夹里,包含了空的Sass样式表app.scss。现在请打开app.scss。


//(1) Define your Sencha variables here

@import 'sencha-touch/default';
@import 'sencha-touch/default/all';

//(2) Define your custom Sass/CSS code and mixins here

在顶部(1)的位置,是用来定义自己的(Sencha)变量的,在这个位置之后可直接定义自己的混入。保持这样的顺序非常重要,否则变量将没有任何效果。导入的文件会使用到这些变量。


在导入(2),可以编写自己的样式规则和混入。

下面的代码就可以轻松的改变基本颜色:

$base-color: #42282E;

通过修改基本颜色,就可以设置所使用的大部分Sencha Touch组件的主配色方案。

下面来试验一下。在命令行使用Sencha Cmd运行以下命令:

sencha app watch

只有在Sencha Cmd4或更高版本才有sencha app watch命令。你可以对比一下它与Compass命令compass watch之间的区别。每次点击保存后,Sencha Cmd都会查看应用程序,当检测到变化时,只会执行最低限度的所需工作,以便重新生成Sass让应用程序及它的CSS保持是最新的。

在现代浏览器中打开http://localhost/dinmu就可预览应用程序了。

现在可以尽情来体验一下了。Sencha Touch包含了许多很好的Sass变量和混入,可以使用这些变量和混入来轻松定义自己的主题。Adobe Kuler是一个获取正确颜色组合的伟大工具。可以去以下地址来找寻一些配色方案: https://kuler.adobe.com/explore/most-popular/?time=month。下面将使用这些配色方案作为我是否需要带伞的应用程序的颜色变量。

下面是按钮、告警窗口和屏幕背景颜色的颜色:

$alert-color: #D6665A;
$confirm-color: #75A48B;
$page-bg-color: lighten(#D9CFB0,15%);
$form-bg-color: $page-bg-color;

另外,需要去掉所有渐变效果:

$base-gradient: 'none';


底部工具栏的ui是light。下面来创建一个混入来改变底部工具栏light皮肤的样式。这需要使用sencha-toolbar-ui,这个要在插入点(2)实现:

@include sencha-toolbar-ui('light', #DC9B74, 'none');


创建自定义CSS

下面来实现自定义CSS规则

首先来修改工具栏的标题文体:

.title {
    .x-title {
        line-height: 2.5em;
        text-shadow: none;
        letter-spacing: -1px;
    }
}

接着,是页脚文本的位置:

.footer {
    font-size: 0.6em;
    padding: 12px;
    text-align: right;
    letter-spacing: 0;
    a {
        color :#000;
    }
}

此外,还要为自定义模板定义样式。下面先来修改字体和字体颜色:

.textview {
    color: black;
    line-height: 1.2em;
    letter-spacing: -1px;
    padding: 0.8em;
    text-transform: uppercase;


    .yes {
        color: $alert-color;
    }
    .no {
        color: $confirm-color;
    }
    .temp {
        color: $confirm-color;
    }
}

接下来要编辑的是设置表单。在Sass样式表中,创建以下样式来调整设置表单的样式:

.x-form-fieldset {
    .x-form-fieldset-inner {
        border: none;
        background: $page-bg-color;
    }
    .x-form-fieldset-instructions .x-innerhtml {
        color: #000;
    }
}

.x-form-label {
    background-color: lighten(#DC9B74, 32%);
}
.x-toggle-field .x-form-label {
    background: none;
    border: none;
    margin-bottom: 20px;
}
.x-toggle {
    position: absolute;
    right: 0;
}

实现自定义字体


在Sencha的导入代码上,添加字体的导入代码。这里将使用Google的字体服务。有了这个字体服务,就从大量的托管字体系列内浏览并选择字体实现:

@import url(http://fonts.googleapis.com/css?family=Oswald:700);
@import url(http://fonts.googleapis.com/css?family=Lobster);


现在来设置字体。

对于工具栏标题,天以下规则到CSS类x-title:


font: {
    family: "Lobster";
    size: 1.2em;
}

对于模板视图,添加以下规则到CSS类.textview:

font: {
    family: "Oswald";
    size: 2em;
}

调整性能

如果希望优化Sencha Touch应用程序的性能,优化样式表可能是所需要做的最简单的事情,而且非常有效。下面来减少一下编译后的样式表的文件大小。

在使用Sencha Cmd创建应用程序时候,自动会将样式表编译为压缩文件。这是因为在resources/sass/config.rb文件中output_style的设置就是这样的。如果希望可读的样式,可以设置output_style的值为expanded,不过要注意,这时候,文件会比较大。

打开resources/sass/config.rb文件,可以看到以下语句:

output_style = :compressed

作为导入所有Sencha Touch框架混入的替代,可以只导入那些绝对必要的。这将会减少样式表的大小,从而实现更快的下载。

我通常会对所有导入混入的@import行进行注释。然后,列出所有自己所需的Sencha Touch混入,并确保Sencha Cmd能查看和编译我的Sass文件。

然后,我就开始一行行根据不需要的类进行注释。这其实很棘手,因为类可以能没有被直接使用,但来自于其他类的他们的子类,如+Class+或者+Panel+会使用到。而这正是我需要一行行移除的原因,以便在终端上检查到是否有编译错误。所有可用的Sencha Touch混入列表可以在touch/resources/themes/[theme-to-extend-from]/all.scss文件中找到。
使用以下导入来替换"@import 'sencha-touch/default/all';":

@import 'sencha-touch/default/src/_Class.scss';
@import 'sencha-touch/default/src/_Button.scss';
@import 'sencha-touch/default/src/_Panel.scss';
@import 'sencha-touch/default/src/_MessageBox.scss';
@import 'sencha-touch/default/src/_Toolbar.scss';
@import 'sencha-touch/default/src/carousel/_Carousel.scss';
@import 'sencha-touch/default/src/form/_Panel.scss';
@import 'sencha-touch/default/src/form/_FieldSet.scss';
@import 'sencha-touch/default/src/field/_Field';
@import 'sencha-touch/default/src/field/_Checkbox.scss';
@import 'sencha-touch/default/src/field/_Select.scss';
@import 'sencha-touch/default/src/field/_Slider.scss';
@import 'sencha-touch/default/src/field/_Spinner.scss';
@import 'sencha-touch/default/src/picker/_Picker.scss';
@import 'sencha-touch/default/src/slider/_Slider.scss';
@import 'sencha-touch/default/src/slider/_Toggle.scss';

由于不需要使用太多图标,索引不需要实现Pictos图标字体。在这种情况下,可以是自己的图标字体,这样可以节省一些额外的字节。

在Sass样式表顶部导入Sencha混入之前添加以下变量:

$include-pictos-font: false;
$include-default-icons: false;

现在,需要包含自定义图标字体。我是通过网站IcoMoon(http://www.icomoon.io)来创建图标字体的。它在教程的goodies-tutorial文件夹内。把字体文件夹dinmu复制到resources/sass/stylesheets/fonts/。

下面的语句可在google字体中导入dinmyu图标字体:

@font-face {
    font-family: 'Dinmu';
    src:url('stylesheets/fonts/dinmu/Dinmu.eot');
    src:url('stylesheets/fonts/dinmu/Dinmu.eot?#iefix') format('embedded-opentype'),
        url('stylesheets/fonts/dinmu/Dinmu.ttf') format('truetype'),
        url('stylesheets/fonts/dinmu/Dinmu.woff') format('woff'),
        url('stylesheets/fonts/dinmu/Dinmu.svg#Dinmu') format('svg');
    font-weight: normal;
    font-style: normal;
}

在所有导入的下面,创建一个图标混入来显示设置按钮:

@include icon('settings', 's', 'Dinmu');

在这之后,可以编写代码来为模板视图添加一些有趣的图标:

.rain:before,
.norain:before {
    font-family: 'Dinmu';
    speak: none;
    font-style: normal;
    font-weight: normal;
    font-variant: normal;
    text-transform: none;
    line-height: 1;

    padding-right: 10px;
    font-size: 60px;

    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

.norain:before {
    content: "\53";
    color: $confirm-color;
}
.rain:before {
    content: "\52";
    color: $alert-color;
}

这样,需要带伞吗主题就已经完成了!打开浏览器并运行http://localhost/dinmu。


为了改进应用程序,下一步将床一个生产生产并将该应用程序发布为一个原生PhoneGap应用程序。该主题将 在教程的第3部分讲述。

创建Sencha主题有趣吗?从12月开始,Sencha将开始提供高级Ext JS主题课程。这可参考一下遍布世界各地的开发课程或参加在线培训。


分享到:
评论

相关推荐

    Sencha Touch 2入门教程之MVC例子程序源代码

    总结来说,"Sencha Touch 2入门教程之MVC例子程序源代码"是一个帮助开发者了解如何在移动应用中利用MVC模式进行有效组织和管理的示例。通过这个登录界面例子,我们可以学习到如何定义模型、创建视图、设置控制器以及...

    sencha touch应用程序

    标题中的“sencha touch应用程序”指的是使用Sencha Touch框架开发的一个移动应用项目。 在描述中提到,这个应用程序需要在Web服务器上运行才能查看其效果。这是因为Sencha Touch应用通常是基于HTML5、CSS3和...

    一个完整的sencha touch 应用案例

    这个压缩包文件包含了创建一个完整的Sencha Touch 应用所需的基本元素,让我们逐一解析这些文件及其背后的含义。 1. **index.html**:这是应用程序的主入口文件,通常包含HTML结构以及Sencha Touch库和其他资源的...

    Sencha touch学习笔记一:用Sencha Cmd方式创建第一个应用

    Sencha Touch 是一款用于构建移动Web应用程序的JavaScript框架,它提供了丰富的组件库和强大的数据管理功能,使得开发者能够创建交互性极强、响应式的触屏应用。本篇学习笔记将聚焦于如何使用Sencha Cmd工具来创建你...

    sencha touch中文翻译文档

    Sencha Touch是一款强大的JavaScript框架,专门用于构建移动Web应用程序。它提供了一套完整的UI组件和交互功能,使得开发者能够创建出具有原生应用体验的触摸友好型应用。这个"Sencha Touch中文翻译文档"是针对...

    Sencha touch学习笔记二:自定义目录方式的创建第一个应用

    在本文中,我们将深入探讨如何使用Sencha Touch框架自定义目录结构来创建你的第一个应用程序。Sencha Touch是一款强大的JavaScript框架,专为构建移动Web应用程序而设计。它提供了丰富的UI组件和数据管理工具,使得...

    Sencha 和 Sencha Touch 简介

    Sencha Touch 是第一个专门设计为移动设备开发 web 应用的 JavaScript 框架,它基于 HTML5 和 CSS3 的 web 标准,全面兼容 Android 和 Apple iOS,通过 Sencha Touch 框架用户可以创建非常像移动设备本地应用的 web ...

    Sencha Touch2环境搭建

    2. **创建新项目** - 使用Sencha CMD创建一个新的Sencha Touch 2项目。在命令行中导航到Sencha CMD安装目录下的bin文件夹,然后运行: ``` sencha generate app AppName /path/to/your/project/folder ``` 将...

    Sencha Touch in Action

    Sencha Touch是一个利用HTML5、CSS3和JavaScript创建移动Web应用程序的框架,它是Sencha框架的一部分,专门针对触摸设备设计。本书的作者包括Jesus Garcia、Anthony DeMoss和Mitchell Simoens,他们都是在移动应用...

    sencha touch 登陆界面

    Sencha Touch 是一款专为移动设备设计的...通过以上步骤,你可以创建一个完整的Sencha Touch登录界面。对于初学者来说,理解这一过程有助于更好地掌握Sencha Touch的架构和组件使用,从而进一步提升开发能力。

    Sencha Touch2 MVC Demo (含源码/数据库)

    Sencha Touch 2 是一个流行的JavaScript框架,专为构建移动Web应用程序而设计。它提供了丰富的UI组件、数据管理和触摸事件处理,使得开发者可以创建与原生应用类似的交互体验。MVC(Model-View-Controller)架构模式...

    sencha touch2 up and running

    最后,书中还简要介绍了一个名为Eve的模块,它是一个基于Sencha Touch的示例应用程序。虽然在提供的摘录中没有详细内容,但从命名推测,Eve很可能是用于展示Sencha Touch应用架构和最佳实践的样例代码,对于希望了解...

    api.zip_sencha _sencha touch api_sencha touch2 api

    Sencha Touch 是一款用于构建移动Web应用程序的JavaScript框架,它为开发者提供了丰富的组件和功能,以便在各种设备上创建响应式、高性能的应用程序。标题中的"api.zip_sencha _sencha touch api_sencha touch2 api...

    Sencha Touch入门

    这段代码定义了一个应用程序的入口点,当应用程序启动时会弹出一个警告对话框,表明Sencha Touch已经成功加载。 创建基本的用户界面是构建移动应用的下一步。在Sencha Touch中,TabPanel是一个重要的组件,它允许...

    sencha touch项目源码

    Sencha Touch 是一款专为移动设备设计的前端框架,它提供了丰富的组件和API,用于构建交互式的、响应式的Web应用程序。这个项目源码是基于Sencha Touch开发的一个实例,通过研究这个项目,我们可以深入理解Sencha ...

    touch-docs-2.2.1.zip(senchaTouch 离线API参考文档)

    Sencha Touch 是一款专为移动设备开发的前端框架,它提供了丰富的组件和API,使得开发者可以轻松构建跨平台的触控应用。这个压缩包“touch-docs-2.2.1.zip”包含了Sencha Touch 2.2.1版本的离线API参考文档,对于...

    senchaTouch和fusioncharts结合的实例

    Sencha Touch 是一个流行的JavaScript框架,专门用于构建触摸优化的移动Web应用程序,而FusionCharts则是一款强大的数据可视化工具,提供丰富的图表类型和交互效果。 在深入探讨这个实例之前,我们首先来了解这两个...

    sencha touch2 ajax 获取数据

    Sencha Touch2是一个用于构建高性能、跨平台的移动应用的JavaScript库,它专注于触摸设备上的用户体验,提供了一系列丰富的UI组件和工具,使得开发者能够快速地创建出美观且功能强大的移动应用。 ### Sencha Touch2...

Global site tag (gtag.js) - Google Analytics