原文地址: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 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 app watch
$alert-color: #D6665A; $confirm-color: #75A48B; $page-bg-color: lighten(#D9CFB0,15%); $form-bg-color: $page-bg-color;
$base-gradient: 'none';
@include sencha-toolbar-ui('light', #DC9B74, 'none');
下面来实现自定义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; } }
.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; }
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
@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';
$include-pictos-font: false; $include-default-icons: false;
@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; }
为了改进应用程序,下一步将床一个生产生产并将该应用程序发布为一个原生PhoneGap应用程序。该主题将 在教程的第3部分讲述。
创建Sencha主题有趣吗?从12月开始,Sencha将开始提供高级Ext JS主题课程。这可参考一下遍布世界各地的开发课程或参加在线培训。