【翻译】使用Ext JS设计响应式应用程序
原文:Designing Responsive Applications with Ext JS

在当今这个时代,用户都希望Web应用程序无论在形状还是大小上,既能在桌面电脑,也能在移动设备上使用。使应用程序能适应不同的需求渐成趋势。幸运的是,Ext JS 5提供了所有支持应用程序以符合任何屏幕尺寸、形状和方向的工具。
responsiveConfig概述
要让Ext JS 5支持新的平板电脑,需要使用“responsiveConfig”,一个强大的新功能,可以让应用程序根据屏幕大小和方向进行动态响应。使用以下两个类其中之一就可以启用responsiveConfig:
- Ext.plugin.Responsive: 为Ext.Component添加响应能力
- Ext.mixin.Responsive: 为其他类添加响应能力
在组件中实现响应
处于性能原因,Ext JS组件默认是没有开启响应功能的,因此,如果要让组件启用响应功能,需要使用响应插件。将响应插件添加到类内,就可以让所以实例实现响应,或者将它添加到实例的配置对象中以咋单个组件实例中开启响应功能:
plugins: 'responsive'
一旦将响应插件添加到组件的配置对象,组件就会得到一个名为responsiveConfig的配置项。responsiveConfig只是一个包含响应条件的对象,可将满足条件的配置应当到显示,例如,假设应用程序中有一个标签面板,而预期标签栏在横向模式时显示在左边,在垂直模式时则显示在顶部,这时,可使用“landscape”和“portrait”作为responsiveConfig对象的键来动态设置面板的tabPosition配置项以响应设备方向的变化:
Ext.define('MyApp.view.Main', {
extend: 'Ext.tab.Panel',
plugins: 'responsive',
responsiveConfig: {
landscape: {
tabPosition: 'left'
},
portrait: {
tabPosition: 'top'
}
},
items: [
{ title: 'Foo' },
{ title: 'Bar' }
]
});
规则
在responsiveConfig对象中的每一个键,或规则,只是一个简单的javascript表达式。以下变量可用来作为responsiveConfig对象的规则:
- ‘landscape’ - 如果设备方向是竖向的,则为true (在桌面设备总是为true)
- ‘portrait’ - 如果设备方向是横向的,则为true(在桌面设备总是为false)
- ‘tall’ - 无论任何设备,只要宽度小于高度,则为true
- ‘wide’ - 无论任何设备,只要宽带大于高度,则为true
- ‘width’ - viewport的宽度
- height’ - viewport的高度
可以以不同的方式来组合这些变量来创建复杂的响应规则,例如,以下responsiveConfig会在viewport宽度少于768像素且高度大于它的宽度时隐藏组件:
responsiveConfig: {
'width < 768 && tall': {
visible: true
},
'width >= 768': {
visible: false
}
}
哪一个配置会被响应?
在内部,框架会监控viewport的大小和方向的变化,并在任何这些事件发生时,重新计算所有的响应规则。在配置中的任何匹配的规则都会调用修改方法(setter),这意味着,对于用在responsiveConfig中的配置项,它必须有一个修改方法,如在以上示例中能使用visible,是因为Ext.Component有一个setVisible方法。
让类响应
responsiveConfig通常是用于组件的,不过有时可能需要让类根据屏幕大小做出响应。对于非Ext.Component的类,可通过混入 Ext.mixin.Responsive来实现,例如,以下类的实例会在屏幕形状从tall变为wide时更新foo的值,反之亦然。
Ext.define('MyClass', {
mixins: ['Ext.mixin.Responsive'],
config: {
foo: null
},
responsiveConfig: {
wide: {
foo: 1
},
tall: {
foo: 2
}
},
constructor: function(config) {
this.initConfig(config);
},
updateFoo: function(foo) {
console.log(foo); // logs "1" or "2" as screen shape changes between wide and tall
}
});
试一试
为了确保使用Ext JS新的响应式设计特性所设计的真实应用程序能经得起考验,我们创建了一个利用responsiveConfig以适应桌面与平板等广泛屏幕尺寸和方向的应用程序,该应用程序可在这里下载。
试着调整桌面浏览器窗口的大小或旋转平板电脑,并观察以下应用程序的表现和布局变化:
在wide模式,主导航将会定位在左边,而咋top模式在定位在顶部。
在tall模式,标签的图标会对齐于顶部,而在wide模式会对齐于左边。
在tall模式,标签文本将会居中显示,而在wide模式将会对齐于左边。
在tall模式,屏幕对于导航栏来说会变得很窄,这时,将会显示溢出菜单工具,并将导航条目显示在菜单中。
我们确信Ext JS 5的这些新特性将会使跨设备应用程序的开发变得容易,我们希望你们去试一下。说不定,这会很有乐趣!
作者:Phil Guerrant
Phil is a Sencha software engineer who works on Ext JS. He has over 10 years of experience as a developer and specializes in HTML5 and web development, UI, and agile methodologies.
【翻译】使用Ext JS设计响应式应用程序的更多相关文章
- Glide.js:响应式 & 触摸友好的 jQuery 滑块插件
Glide.js 是一款响应式和对触摸友好的 jQuery 滑块.基于 CSS3 转换实现,并在低版本浏览器降级处理.Glide.js 简单,重量轻,快速,适用于智能手机,平板电脑和台式机.它支持 s ...
- 利用JS去做响应式布局
利用JS去做响应式布局 js动态改变布局方式 // 取浏览器可视区高宽 var lw = $(window).width(); var lh = $(window).height();// 页面加载完 ...
- 【翻译】Ext JS 5的平板支持
原文:Ext JS 5 Tablet Support Ext JS已被公认为桌面Web应用程序的领先框架.自从平板开始在全球挑战PC的销售,无论是个人还是企业,电脑横向的应用已经产生急剧的变化.Sen ...
- 【翻译】Ext JS最新技巧——2015-10-21
原文:Top Support Tips Kevin Cassidy:全宽度的字段错误信息 有考虑过让验证信息显示在表单字段的下面(msgTarget:'under'),但最后发现验证信息被压缩显示了吗 ...
- 【翻译】Ext JS——高效的编码风格指南
原文:ExtJS - Efficient coding style guide 作者:Raja 切勿使用"new"关键字:在Ext JS中,使用"new"关键字 ...
- 【翻译】Ext JS最新技巧——2014-10-30
原文:Top Support Tips Greg Barry:Ext JS 5的ExtraParams Ext JS 4同意用户直接将extraParams加入到一个链接,相似例如以下代码: Ext. ...
- 【翻译】Ext JS 6.2 早期访问版本发布
原文:Announcing Ext JS 6.2 Early Access 非常开心,Sencha Ext JS 6.2早期访问版本今天发布了.早期访问版本的主要目的是为了让大家进行测试并评估Ext ...
- 【翻译】Ext JS最新技巧——2016-3-4
原文:Top Support Tips Kevin Cassidy:Grid水印 Ext JS的Grid是一个便于在布局中显示信息的伟大工具.有些用户可能会希望将这些信息打印为会议资料或宣传材料,而且 ...
- 【翻译】Ext JS最新技巧——2014-8-13
原文:Top Support Tips Greg Barry:新的框架. 新的文档类型(Doctype) 在Ext JS 5,只支持IE8+,因此不再古力用户使用严格的HTML文档类型.现在,推荐使用 ...
随机推荐
- Android开发艺术探索第五章——理解RemoteViews
Android开发艺术探索第五章--理解RemoteViews 这门课的重心在于RemoteViews,RemoteViews可以理解为一种远程的View,其实他和远程的Service是一样的,Rem ...
- Android Studio精彩案例(二)《仿微信动态点击底部tab切换Fragment》
转载本专栏文章,请注明出处,尊重原创 .文章博客地址:道龙的博客 现在很多的App要么顶部带有tab,要么就底部带有tab.用户通过点击tab从而切换不同的页面(大部分情况时去切换fragment). ...
- [csdn markdown]使用摘记三 简便快捷的流程图
在线编写文字就可以实现复杂的流程图,再也不需要纠结了! 开始 操作流程 条件 结束 开始 st=>start: 开始 操作流程 st->op->cond 条件 cond=>co ...
- Dynamics CRM2016 Web API之Use custom FetchXML
CRM2016中新增的web api支持fetch xml了,之前使用FetchXML的场景是在后天代码中通过组织服务的retrieve multiple方法,但实际的应用效果有多大,还需要在实际的项 ...
- Sqoop-1.4.5用户手册
本文以Sqoop User Guide (v1.4.5)为主,对Sqoop-1.4.5的用户手册进行翻译,同时会结合一些实际操作中的注意事项一并写入.由于原文档很长,本文首先会以实际使用到的部分为主, ...
- 1.Cocos2dx 3.2中vector,ValueMap,Touch触摸时间的使用.iconv字符编解码
Cocos2dx3.2以后使用Vector<T>代替了CCArray.案例如下: 头文件:T02Vector.h #ifndef __T02Vector_H__ #define __ ...
- Gazebo機器人仿真學習探索筆記(二)基本使用說明
在完成Gazebo7安裝後,需要熟悉Gazebo,方便之後使用. 部分源代碼可以參考:https://bitbucket.org/osrf/gazebo/src/ 如果還沒有安裝請參考之前內容完成安裝 ...
- 2.2、Android Studio通过注解提升代码检测
使用像Lint这样的代码检测工具可以帮助你发现问题和提升代码,但是代码检测在有些地方很难应用.例如,Android的资源ID,使用一个int类型来表示字符.图像.颜色或者其他资源类型所以代码检测工具不 ...
- API创建员工地址
DECLARE ln_address_id PER_ADDRESSES.ADDRESS_ID%TYPE; ln_object_version_number PER_ADDRESSES.OBJECT_V ...
- Android开发优化之——使用软引用和弱引用
Java从JDK1.2版本开始,就把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期.这四种级别由高到低依次为:强引用.软引用.弱引用和虚引用. 这里重点介绍一下软引用和弱引用. 如果 ...