本文共 2777 字,大约阅读时间需要 9 分钟。
原文:
在当今这个时代,用户都希望Web应用程序无论在形状还是大小上,既能在桌面电脑,也能在移动设备上使用。使应用程序能适应不同的需求渐成趋势。幸运的是,Ext JS 5提供了所有支持应用程序以符合任何屏幕尺寸、形状和方向的工具。
要让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' } ]});
‘landscape’ - 如果设备方向是竖向的,则为true (在桌面设备总是为true)
‘portrait’ - 如果设备方向是横向的,则为true(在桌面设备总是为false)
‘tall’ - 无论任何设备,只要宽度小于高度,则为true
‘wide’ - 无论任何设备,只要宽带大于高度,则为true
‘width’ - viewport的宽度
height’ - viewport的高度
responsiveConfig: { 'width < 768 && tall': { visible: true }, 'width >= 768': { visible: false }}
在内部,框架会监控viewport的大小和方向的变化,并在任何这些事件发生时,重新计算所有的响应规 则。在配置中的任何匹配的规则都会调用修改方法(setter),这意味着,对于用在responsiveConfig中的配置项,它必须有一个修改方 法,如在以上示例中能使用visible,是因为Ext.Component有一个setVisible方法。
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 }});
作者:Phil GuerrantPhil 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.
转载地址:http://pnbul.baihongyu.com/