题外话
本来是想写篇关于Bootstrap的Scaffolding博文的,不过对于响应式Web设计不是很了解,所以就先有了这篇博文。
博客园原文地址:http://www.cnblogs.com/yhuang/archive/2012/03/29/responsive_web_design.html
目录
什么是响应式Web设计(Responsive Web design)?
initial-scale=1.0,maximum-scale=1.0
前言
现在使用移动设备人越来越多,移动版的Website随之也越来越重要;但是移动端设备的大小不一,屏幕分辨率各不相同,我们不可能为BlackBerry,iPhone, iPad等等每个都做单独的页面设计。所以我们需要的Website设计要能迎合多种device的要求并且兼容所有的屏幕分辨率,这种设计就叫响应式Web设计
什么是响应式Web设计(Responsive Web design)?
响应式Web设计是一种Web设计和开发能够根据屏幕大小、平台和方向对用户的行为和环境做出响应的设计。它包括了灵活的网格和布局,图像和智能使用CSS的media queries特性。当用户从Laptop切换到iPad上时,该网站应能自动地切换CSS规则以适应Device分辨率,图像尺寸和脚本执行。换句话说,响应式Web设计是具备能够自动响应用户喜好的技术。这将一劳永逸的满足对每个新上市的移动终端都要进行不同设计和开发的需求。
需要注意的是:响应式Web设计不仅仅是可调屏幕分辨率和可自动调整大小的图像,而且更是一种采用全新思考的Website设计方法。
响应式Web设计的用途
随着越来越多的设备而来的是各式各样的屏幕分辨率、定义和方向。每天都有正在开发的新屏幕尺寸的设备。每个设备都可以拥有不同的尺寸、功能、甚至颜色。有些是横向,有些是纵向,甚至还有些完全是正方形的。如图所示:
解决问题的关键就是Media queries和Viewports。下面的内容是关于如何最好的使用Media queries和Viewports的。但是我并不会深入的讲怎样增强响应的细节,如果感兴趣,可以查看这篇博文的最后一部分:“参考文章”。
/* Default wide-screen styles */
@media all and (max- 1024px) {
/* styles for narrow desktop browsers and iPad landscape */
}
@media all and (max- 768px) {
/* styles for narrower desktop browsers and iPad portrait */
}
@media all and (max- 480px) {
/* styles for iPhone/Android landscape (and really narrow browser windows) */
}
@media all and (max- 320px) {
/* styles for iPhone/Android portrait */
}
@media all and (max- 240px) {
/* styles for smaller devices */
}
<meta name="viewport" content="...">
initial-scale=1设置告诉浏览器初始化页面时不要对页面进行缩放。解决了没有使用viewport时出现的页面缩放问题。
但还是有bug,当我们把移动端设备从纵向转成横向时,你就会发现这个问题了。这是因为initial-scale只在页面完全加载后有作用。在我们把移动设备从纵向转成横向的过程中,浏览器就会认为页面不变,但scales会设置为1.5,为了使320px的页面适应480px。但是,因为我们在@media queries中设置了480px这个宽度,那么页面CSS规则也会是适应480px的。结果就是,页面CSS规则是适应480px的,另外scale还是1.5。这
个结果并不可怕,但是不可取。user-scalable=no
设置也会让用户不能缩放页面。所以一般情况下,不要使用以上俩个设置。- 使用viewport标签
- 使用media queries来选择最适合页面尺寸的CSS
- 在viewport标签里,使用width=device-width,initial-scale=1或者单独使用width=device-width
- 不要使用maximum-scale=1和user-scalable=no
- 不要使用width=<specific width>
- 不要使用@media all and (*-device- xxx)
参考文章
- Ethan Marcotte. 2010. Responsive Web Design. In A List Apart #306. ISSN: 1534-0295.
- Jeremy Keith. 2010. Responsive Enhancement. In adactio.
- Kayla Knight. 2011. Responsive Web Design: What It Is and How To Use It. In Smashing Magazine.
- Webkit based desktop browsers re-render the page correctly as you resize the browser, however they have a minimum width of 385px (on MacOSX) and I was unable to shrink the browser below this. Firefox 4 re-renders the page correctly until the width gets too narrow to fit the navigation toolbar. At that point the viewport width stays fixed even if you shrink the browser. The page is re-rendered if you type something (anything) into the URL bar. Opera 10/11 re-render correctly at all sizes.
- Peter Paul Koch. 2010. A tale of two viewports — part two. In Quirksmode.
- Using the Viewport on Safari. In Safari Web Content Guide.
- The viewport meta tag. In Safari HTML Reference.
- MDC. 2010. Using the viewport meta tag to control layout on mobile browsers. In Mozilla Developer Network.
- Peter Paul Koch. 2010. Combining meta viewport and media queries. In Quirksmode.
- Willison & Downe. Lanyrd.
- Lie et al. 2010. Media Queries. W3C Candidate Recommendation 27 July 2010.
- If you design your page for the narrow view and expect it to scale when rotated, then use width=device-width and nothing else. If, instead, you design your page for either width, then use width=device-width,initial-scale=1. This is the only way to get the android browser to render a page with the intended width. Mobile Safari will render the page exactly as if initial-scale=1 were specified alone. You will still end up with the zoom on rotate bug.
- David Calhoun. 2010. The viewport metatag (Mobile web part I).
最近的项目中,一直要使用到WebService,为了测试自己编写的WebService,就找了一个叫Storm的小工具。它帮了我很大的忙,所以我和大家分享一下。
是一款用于测试Web服务的免费并且开源的工具。是用F#编写的,如果感兴趣的话,你可以在codeplex上找到它的源码。
Storm特性:
- 可以测试.NET、Java等多种编程语言所写的Web服务;
- 动态调用Web服务方法,即使需要输入和复杂数据类型;
- 节约开发时间和花费(仅仅为测试Web服务而开发throw-away测试客户端太过浪费);
- 在一个UI中测试多个Web服务;
- 编辑、控制原始SOAP请求;
- 其它(自己探索,乐趣更多!)。
运行环境 : .NET 2.0及以上,F# 1.9.3.14 (可选)
Storm快速上手:
- 添加一个WebService(如下图一所示):点击添加,输入wsdl的endpoint url,比如
- http://www.deeptraining.com/webservices/weather.asmx
- http://api.google.com/GoogleSearch.wsdl - 选择一个Web方法:让storm分析这个web方法,然后给出调用这个方法所需的参数。
- 选择一个Web方法参数,并且输入必要的值。
- 点击GO(绿色箭头按钮):调用web方法。(结果如下图二所示)
图一: 添加WebServie
图二 : 调用WebServe方法返回结果
Storm快捷操作:
- 加载WebService并且测试它的方法
- 在工具栏中点击ADD
- 提供Wsdl的endpoint Url
- 点击GO(绿色箭头按钮)
- 选择一个Web方法或点击右键,并在新标签页中打开它
- 点击SEND
- 保存SOAP请求作为测试用例
- 打开WebService
- 在树视图中(闪电图标),选择一个Web方法
- 点击SEND
- 在SOAP输入框中,切换到“原始视图”或“XML视图”
- 编辑数据
- 点击SAVE。选择“Test Data”选项,填写测试用例的标签,附注等。点击OK
- 现在,原始的SOAP请求消息将是该项目的一部分
- 同样,你可以在SOAP响应输出框中用步骤4-7保存SOAP响应作为预期响应。
- 保存当前会话为storm项目
- 假设你已经打开了一个带或不带测试用例的WebService
- 点击工具栏中的SAVE按钮
- 填写项目名称,单击OK:将创建下列文件结构
{File} StormProject.stormproj
- {Folder} ServiceName
- {Folder} WebMethod
- {Folder} TestCaseName
- {File} TestInputLabel_testinput.xml
- {File} WebMethod_test.config
- {File} ServiceName_ws.config
- 载入已保存的Storm项目
- 创建一个storm项目
- 在工具栏中单击OPEN,选择已创建的storm项目文件
- 点击OK:加载WebService和所有测试用例。
- 执行已保存的测试用例
- 打开一个storm项目
- 右击一个测试用例节点。选择Run/EDIT:这将打开一个新标签页
- 根据需要编辑测试输入(点击Edit图标)
- 点击RUN来调用Web方法
- 如果是绿色,就意味着实际响应和预期响应一样
- 发送多个数组项
- 加载WebService
- 选择一个接受数组为输入参数的Web方法
- 点击“树视图”,编辑
- 点击RUN来调用Web方法
- 切换到“原始视图”。根据需要编辑SOAP请求,只要你喜欢,你可以添加任意多的数组项。但是要确保,你编辑后,SOAP请求还是正确的XML格式。(可以使用XML视图确认。)
- 发送多个成员数组项
- 加载WebService
- 选择一个接受类作为输入参数的Web方法(这个类含有数组成员)
- 点击“树视图”(闪电图标)
- 选择类:弹出对象编辑框
- 在对象编辑框中,选择数组成员
- 添加数组项