响应式新首页Device Adaptation小结分析

由于用户浏览器分辨率分布、运营维护成本、全站页面宽度规范等原因,2012年末一淘新首页对1200px、990px、750px(for ipad)这3个尺寸的响应不同布局,期望在ipad下横屏显示990px版本,竖版显示750版本,iphone下显示750版本。不同设备尺寸的不同 显示自然少不了viewport设置,目前W3C针对viewport的规范还处于草案阶段,有2种方式可以设置页面的 viewport,viewport meta标签和@viewport css方式。

一、viewport meta element

<meta name=“viewport” content=“width=device-width,initial-scale=1.0”>

该viewport meta支持以下6个属性,ios对viewport meta的实现对比W3C规范草案:

二、@viewport css

如:

@viewport { width: device-width; zoom: 2.0; }

w3c草案中@viewport 支持以下属性

viewport meta方式和@viewport是可以相互转化的,估计以后@viewport是要替代viewport meta的。如:

<meta name=“viewport” content=“width=480, initial-scale=2.0, user-scalable=1”>

可以转化成以下css @viewport { width: 480px; zoom: 2.0; user-zoom: zoom; }

而且@viewport可以和media query联用,天造地设的一双呀,这样可以针对不同的终端尺寸设置不同的viewport。

@viewport {

width: device-width;

} @media screen and (min-width: 400px) {

div { color: red; } }

@media screen and (max-width: 400px) {

div { color: green; }

}

不过,@viewport目前safari并不支持,Opera Mobile 11、ie10支持@viewport,但需要加私有前缀(-o-viewport、-ms-viewport),其他浏览器均不支持

ipad横版990px

ipad竖版750px

ipad横版

ipad竖版

iphone竖版

结果发现左右2边都有大片的空白,原因是safari默认viewport的width是980px,js检测当前viewport确实是 980px,1200、990、750待响应的三个尺寸在980的容器中,所以显示出是750px的设计在980px的容器中居中的效果。 这不是想要的效果,众所周知,ipad的分辨率是1024×768,所以其横版能显示990的设计效果,竖版显示750的设计效果,既然viewport 的默认宽度是980,那就试试改变viewport的width。 

ipad横版

ipad竖版

iphone竖版

viewport设置成width=device-width后,不管横版还是竖版viewport都是768px;理论上横版的最大分辨率为 1024,并没有显示990px的效果。测试发现,device-height为1024px,device-width的宽度并不会随着ipad横向还 是竖向而改变,想要横版viewport设置为device-height,竖版时设置为device-width,可以设置initial- scale,.

the same webpage when the initial scale is set to 1.0 on iPhone. Safari on iOS infers the width and height to fit the webpage in the visible area.The viewport width is set to device-width in portrait orientation and device-height in landscape orientation.

初始化不允许缩放设置后,并设置最大最小缩放比例,如果不设置,会导致横版切换到竖版时,页面出现横向滚动条,因为被放大了,设置最大缩放比例后ipad下能达到预期中的效果:

ipad横版 ipad横版

ipad竖版

不过iphone下的就只能看到页面左上角一小部分了,如何解决呢,继续下面的问题 iphone

<meta name=“viewport” content=“initial-scale=1, maximum-scale=2, minimum-scale=1” /> 上面的设置ipad上显示正常,因为initial-scale=1初始化的缩放比例是1,而iphone的此时的viewport width是320,所以只能显示页面左上角320×480的区域。 要实现iphone下面,全屏显示750的效果,根据上面的测试,设置<meta name=“viewport” content=“width=device-width” />即可

如何实现不同设备不同viewport设置呢?

方法1:服务端加个user agent的判断,如果是ipad就显示上面特殊的meta设置。

但是服务端判断user agent也有个缺点,不方便枚举出所有平板电脑的user agent,平板电脑日新月异,维护这么多user agent也是个头疼的事情,不过有个开源的机型库wurfl,目前一淘无线的项目中也使用这个库。

方法2:js判断user agent,切换meta,这个不如服务端判断好。

方法3:css @viewport,这是@viewport的天职;可惜safari还不支持。 针对一淘首页这种情况,应该针对小于750px的设备特殊设置@viewport即可

@media screen and (maxwidth 《 749px) {

@viewport {

width: device-width;

}

}

@viewport safari不支持,最后只能使用方法1在服务端判断设置不同的viewport meta。

iphone下设置<meta name=“viewport” content=“width=device-width” />是期望中的效果

但是拖动到下面发现页尾背景显示不全

页尾的实现大致如下:

<body>

<div id=“etao-footer”>

content

</div>

</body>

<style> #etao-footer {

background-color: #ccc;

}

</style>

The containing block in which the root element lives

is a rectangle called the initial containing block.

For continuous media, it has the dimensions of the viewport

and is anchored at the canvas origin; it is the page area

for paged media. The ‘direction’ property of the initial

containing block is the same as for the root element.

原因是没有给etao-footer定宽,对于根元素下面的containing block其宽度由viewport的尺寸决定。 iphone下viewport为320,所以看到的效果是background-color只平铺了320px的宽度,解决方法可以针对容器添加个 min-width:750px;所以viewport的设置可能会影响页面根元素的宽度,需要注意下。

结束语

设备适配设置meta viewport相关属性即可,不同设备适配需要服务端判断user agent,更好的设置方式是@viewport,但是safari不支持,所以目前还是meta viewport方式靠谱,设置viewport后可能对页面根元素宽度有影响。

时间: 2024-08-01 16:19:55

响应式新首页Device Adaptation小结分析的相关文章

设计师不应该错过的响应式设计框架(含优缺点分析)

Ethan Marcotte称响应式设计是基于网格建立一个网站.Marcotte定义这项技术后,响应式设计框架开始出现,主要是css和JavaScript的结合.许多框架都是开源的,可以免费下载和快速定制. 当下最火热的框架就是Bootstrap和 Foundation了. 随着响应式设计框架越来越火,一个巨大的争议出现了:为什么一个专业的设计师还需要用这些框架呢? 许多人宣称响应式框架是可怕的,因为他们根本不懂一点点html和css的知识.下面是另一些具有标志性的反对使用框架的意见: 设计师可

《响应式Web设计实践》一1.2 小结

1.2 小结 工业的发展正在逐步影响响应式设计.在我统计过的站点中,几乎有一半的站点使用了自己专有的体验--和我们早在21世纪头几年使用的解决方案一样,而不是提供响应式站点. 响应式设计并不是一个有缺陷的方法论,只有在它被误用为一个附加的功能而非首要原则的时候,才会导致一种臃肿的.违反直觉的体验.同样,只有当我们将注意力集中到响应式的某一个方面,特别是前端特效时,我们才会失去对我们的响应式站点性能的敏锐观察力.然而,性能是响应式设计的一个重要的方面,作为交互的一个重要方面,需要慎重计划和设计.当

移动网站新趋势:描述响应式设计的优缺点

[搜狐IT消息]7月17日消息,科技博客Business Insider旗下研究机构BI Intelligence发布报告,描述了响应式设计的优缺点. 作为一种能够缩放适应不同大小的屏幕的网页设计做法,响应式设计(Responsive Design)正日益成为最受推崇的移动网页优化方式.在谷歌公司于2012年中期指出,响应式设计是优化移动网站的最佳方式之后,这种设计做法的地位得到了进一步巩固. 随着iPhone.iPad和Android手机的普及,网站主办方发现,网站在移动端应当带来与桌面端类似

vue2.0源码分析之理解响应式架构

分享前啰嗦 我之前介绍过vue1.0如何实现observer和watcher.本想继续写下去,可是vue2.0横空出世..所以 直接看vue2.0吧.这篇文章在公司分享过,终于写出来了.我们采用用最精简的代码,还原vue2.0响应式架构实现 以前写的那篇 vue 源码分析之如何实现 observer 和 watcher可以作为本次分享的参考. 不过不看也没关系,但是最好了解下Object.defineProperty 本文分享什么 理解vue2.0的响应式架构,就是下面这张图 顺带介绍他比rea

移动网站新趋势:响应式设计

[搜狐IT消息]7月17日消息,科技博客Business Insider旗下研究机构BI Intelligence发布报告,描述了 响应式设计的 优缺点. 作为一种能够 缩放适应不同大小的屏幕的网页设计做法,响应式设计(Responsive Design)正日益成为最受推崇的移动网页优化方式.在谷歌公司于2012年中期指出,响应式设计是优化移动网站的最佳方式之后,这种设计做法的地位得到了进一步巩固. 随着iPhone.iPad和Android手机的普及,网站主办方发现,网站在移动端应当带来与桌面

《响应式Web设计性能优化》一2.4 小结

2.4 小结 本章探讨了Web性能以及Web运行时性能.我们关注了页面内容是怎样从Web服务器到浏览器的,以及在传输与内存渲染过程中存在的潜在瓶颈.还关注了在运行时表示Web应用执行情况的性能指标,这是性能的另一个关键点:不仅要看内存传输到终端用户有多快,还要看传输过去后应用的可用性. 我们使用了一些工具来量化和追踪两种类型的性能. 最重要的是,我们对本书剩余部分将要着重讲到的概念有了共同的认知.当我们谈及诸如降低页面负载以及HTTP请求数或者避免页面重绘这些概念时,可以翻回本章再看上下文. 第

网站分析:设计响应式导航菜单的五大法则

中介交易 SEO诊断 淘宝客 云主机 技术大厅 摘要:本文把目光聚集在更具挑战性的响应式Web设计:响应式导航菜单设计,这里提供了五大法则,让你无论在大屏幕还是小屏幕上都能轻松高效地设计响应式导航菜单. 响应式Web设计(Responsive Web design)的理念是,页面的设计与开发应当根据用户行为以及设备环境(系统平台.屏幕尺寸.屏幕定向等)进行相应的响应和调整.响应式设计允许你在不同的平台上,创建独一无二的用户体验,与此同时,只要最少的维护工作. 已经有不少文章涉及响应式设计,这些文

移动网站新趋势:响应式设计

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断淘宝客 站长团购 云主机 技术大厅 [搜狐IT消息]7月17日消息,科技博客Business Insider旗下研究机构BI Intelligence发布报告,描述了响应式设计的优缺点. 作为一种能够缩放适应不同大小的屏幕的网页设计做法,响应式设计(Responsive Design)正日益成为最受推崇的移动网页优化方式.在谷歌公司于2012年中期指出,响应式设计是优化

CSS3和HTML5网页设计:响应式网页图片设计

文章简介:HTML5与CSS响应式图片. 随着 Retina 屏幕的逐渐普及,网页中对图片的适配要求也越来越高.如何让图片在放大了两倍的 Retina 屏幕显示依然清晰,曾经一度困扰着网页开发者,好在 CSS3 与 HTML5 已经着力在改变这种现状.那么到底什么是响应式图片呢? 什么是响应式图片? 响应式图片是指:用户代理根据输出设备的分辨率不同加载不同类型的图片,不会造成带宽的浪费.同时,在改变输出设备类型或分辨率时,能及时加载对应类型的图片. CSS 响应式图片 对于很多 IOS 开发者来