【翻译】使用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.


转载于:https://www.cnblogs.com/muyuge/p/6333662.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/432459.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java各种的不好_译文《最常见的10种Java异常问题》

封面&#xff1a;洛小汐译者&#xff1a;潘潘知彼知己&#xff0c;方能百战不殆。前言本文总结了有关Java异常的十大常见问题。目录检查型异常(checked) vs. 非检查型异常(Unchecked)异常管理的最佳实践箴言为什么在try代码块中声明的变量不能在catch或者finally中被引用&#…

Hadoop 开源调度系统zeus(二)

紧跟之前Hadoop 开源调度系统zeus(一) 本节主要介绍一下zeus的架构&#xff1a; 先给一个zeus的架构图 无论Master还是Worker都有一套WEB UI&#xff0c;无论从哪个上面去看&#xff0c;看到的结果都是一样的&#xff0c;实际上一般仅仅看主 Master&#xff1a;调度内核&#x…

python十条建议_十条建议帮你提高Python编程效率

程序员的时间很宝贵&#xff0c;Python这门语言虽然足够简单、优雅&#xff0c;但并不是说你使用Python编程&#xff0c;效率就一定会高。要想节省时间、提高效率&#xff0c;还是需要注意很多地方的。今天就与大家分享资深Python程序员总结的10点建议&#xff0c;帮助大家大幅…

Django:快速搭建简单的Blog

一&#xff0c;创建项目 1, 为blog创建名为mysite的工程项目&#xff1a; django-admin.py startproject mysite2, 项目结构如下&#xff1a; mysite├── manage.py└── mysite├── __init__.py├── settings.py├── urls.py└── wsgi.pymanage.py ----- Django项目…

java se好用吗_利用 Java SE 7 更好地管理资源

2011 年 5 月发布作者&#xff1a;Julien Ponge本文介绍 Java 7 针对自动资源管理问题给出的解决办法&#xff0c;即 Coin 项目中提出的新语言结构 try-with-resources 语句。&#xff1a;示例源文件 (zip) 简介典型的 Java 应用程序可以处理多种类型的资源&#xff0c;如文件、…

法线贴图Nomal mapping 原理

法线贴图多用在CG动画的渲染以及游戏画面的制作上&#xff0c;将具有高细节的模型通过映射烘焙出法线贴图&#xff0c;贴在低端模型的法线贴图通道上&#xff0c;使之拥有法线贴图的渲染效果&#xff0c;却可以大大降低渲染时需要的面数和计算内容&#xff0c;从而达到优化动画…

Javascript引擎单线程机制及setTimeout执行原理说明

setTimeout用法在实际项目中还是会时常遇到。比如浏览器会聪明的等到一个函数堆栈结束后才改变DOM&#xff0c;如果再这个函数堆栈中把页面背景先从白色设为红色&#xff0c;再设回白色&#xff0c;那么浏览器会认为DOM没有发生任何改变而忽略这两句话&#xff0c;因此我们可以…

解决VS命令提示符 “Setting environment for using Microsoft Visual Studio. 此时不应有“系列错误

一、起因 最近在玩Boost库。当然首先是要进行Boost库的安装和配置。于是浅墨Google了一下boost库的安装配置攻略&#xff0c;下载了最新版1.55的boost库&#xff0c;就愉悦地开始进行配置了。 当进行到第五步&#xff0c;要在VS命令提示符中运行bootstrap.bat的时候&#xff0c…

yii2多语言设置

yii2的多语言切换功能 1.页面添加语言切换按钮&#xff0c;如下图&#xff1a; 代码如下&#xff1a; <ul> <li> <a href"javascript:;" οnclick"changeLanguage(en_US);"> <span><?php echo …

APP安全环节缺失,手游运营商怎样应对APP破解困境

2013年手游行业的规模与收入均实现了大幅增长&#xff0c;发展势头强劲。然而&#xff0c;在手游快速发展的同一时候&#xff0c;因为监管、审核等方面存在着漏洞&#xff0c;手机游戏软件被破解后注入恶意代码、盗取用户財产、窃取用户设备信息的现象屡见不鲜。手游被破解后黑…

linux php cpu,获取Linux服务器性能CPU、内存、硬盘等使用率 PHP

数据库配置文件&#xff1a; conn.phpdefine("MONITORED_IP", "172.16.0.191"); //被监控的服务器IP地址 也就是本机地址define("DB_SERVER", "172.16.7.2"); //存放数据的服务器IP地址define("DB_USER", "roo…

信息论与编码matlab实验报告,信息论与编码实验程序与结果图(matlab).doc

信息论与编码实验程序与结果图(matlab).doc 1信源熵实验程序&#xff1a;clc;closeall;clear;linwidd1fontt20p00;pd1;N20plinspace(p0,pd,N);I-log2(p);plot(p,I, k );title( I-log2(p)函数图 );xlabel( p );ylabel( I );clc;closeall;clear;linwidd1fontt20p00;pd1;N20plinsp…

OpenGL: 实现立体显示

立体显示原理&#xff1a;设没有立体显示的模型视图矩阵ModelView为Mv,投影矩阵为Mp&#xff0c;则、物体空间的任何一点为P&#xff0c;则变换到屏幕坐标P*MpMvP&#xff1b;注意前面已经说过opengl里面坐标列优先&#xff0c;所以矩阵都是右乘。 左眼和右眼的变换都是由中间的…

数学 之 hdu 4861

// [7/23/2014 Sjm] /* 对于此题&#xff0c;举出数据找规律&#xff0c;即可AC。。。 不过悲催的WA了好多次&#xff0c;后来发现竟把"YES"打印成"Yes"了。。。。 注释掉的代码是用来找规律的。。。 */ 1 #include <iostream>2 #include <cs…

centos 6 安装mysql,CentOS6.5安装MySQL教程(完整教程)

Step 1&#xff1a;检测系统是否安装MYSQL# yum list installed | grep mysql顺便提下如果yum有如下提示不能用的情况&#xff1a;yum在自动更新原因是yum在自动更新 只要关掉它就OK了解决方案&#xff1a;直接输入# rm -f /var/run/yum.pid或者&#xff1a;# /etc/init.d/y…

php通过条件来定义const,php用const出错是什么原因

大家都知道define是定义常量的,如果在类中定义常量呢&#xff1f;当然不能用define&#xff0c;而用const&#xff0c;如下例&#xff1a;<?php //在类外面通常这样定义常量define("PHP","phpernote.com");class MyClass{ //常量的值将始终保持不变。在…

UE4角色Location远距离时动画抖动问题(float精度不够)解决方案

正题&#xff1a;关于UE4引擎当角色Location超过9999.999后&#xff0c;角色动画更新抖动问题的解决思路。 前提&#xff1a; 1.UE4引擎中距离单位是厘米(cm)&#xff0c;也就说我们制作好1.8米的角色在UE4中为180个虚幻单位。这样做个人愚见是为了提高浮点值&#xff08;float…

android Handler的使用(一)

Handler的使用(一) Handler基本概念&#xff1a; Handler主要用于异步消息的处理&#xff1a;当发出一个消息之后&#xff0c;首先进入一个消息队列&#xff0c;发送消息的函数即刻返回&#xff0c;而另外一个部分逐个的在消息队列中将消息取出&#xff0c;然后对消息进行出来…

现实地形导入UE4全流程

制作地形方法很多&#xff0c;今天给大家分享一种原创野套路。此方法特点是将现实中的地形于UE4中呈现&#xff0c;而不是手动绘制地形。首先从地理空间数据云获得指定区域的地理数据&#xff0c;然后使用GlobalMapper更准确选出区域并把数据转换成WorldMachine可识别的格式&am…