响应式页面重构 响应式页面重构学到的东西

文章描述:关于响应式页面

作为一个无线部门的人,不懂移动设备是不行的。而作为一个无线的重构,不会写响应式页面更是不行得。而我,一个无线的重构,在我最近做的一个移动端的项目之前,的确是不会写响应式页面的,所以,严格来说,在这个项目之前,我是一个不合格的无线重构人。

而这个项目,却让我快速地掌握了响应式页面重构的一些方法。下面就是通过这个项目来总结我在响应式页面重构学到的东西。

众所周知,所谓响应式页面,就是能够用一套样式,使你的页面能够在不同分辨率的屏幕下都有很好的表现形式。响应式Web设计,这个概念是Ethan Marctte 在A List Apart 发表的一篇文章“Responsive Web Design”中援引响应式建筑而得名:

响应式建筑(responsive architecture),物理空间应该可以根据存在于其中的人的情况进行相应。

根据我所阅读过一些文章及资料,我总结出响应式页面的几个关键组成部分:

1、页面头部的meta说明,可以通过viewport meta标签去让你的html页面的的宽度能根据设备分辨率让浏览器的可视宽度来适应,也可以在这里设置页面的缩放比例等等,这样在成比例的分辨率设备下,就可以更简单地实现响应式。

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

2、流体布局(fluid grid),所谓的流体布局,其实就是在你pc端实现的页面基础上,将一些元素的宽高由原来的固定多少像素(px)调整为百分比(%)或字体比例(em)(或布局方面的margin、padding、left、top等以px为单位的值),这也是当前实现响应式布局的两种主要实现方法。

第一种用百分比(%),就是以该元素的父容器的宽高为100%,其他元素的宽高相对于其父容器的比例,只要将具体的像素值相对于他的父容器的一个百分比折算即可。当然这种方法的换算有点复杂,因为很多相对的宽高折算的百分比系数是带小数的,所以这时候可能要你有足够的耐心才能实现。

在Ethan Marctte的Responsive Web Design这篇文章中给出的一个demo中,我们可以看到他的实际代码里:

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

.figure,

li#f-mycroft {

margin-right: 3.317535545023696682%; /* 21px / 633px */

width: 48.341232227488151658%; /* 306px / 633px */ }

第二种方法是用字号比例(em)去实现,其实方法是跟上面一样的,只不过我们将%换成了em,这种方法就是某元素具体的宽高(px)在当前基准字号(font-size)下折算出多少个em。eg: 一个在480分辨率下宽高为64px*64px的元素,其父容器的字号(font-size)为20px,那么它折算成em为单位就是3.2em*3.2em。当其父容器字号基准根据不同的分辨率变化的时候,该元素的宽高也能根据这个字号基准成比例的缩放,就能实现响应式变化。

从上面的两张实例图我们可以看到,同一个元素,宽高为3.2em*3.2em,在360px分辨率下,因为基准字号为15px,故解析出来的实际尺寸为48px*48px,而在480px分辨率下,基准字号为20px,故实际的尺寸为64px*64px。

3、流体图片(liquid image),在我所了解的很多资料中,对图片处理这块,如果要使图片能根据分辨率来适应,而且还不失真,好像挺困难的。但其实我们不用考虑的那么复杂,我们要做的只是让图片能根据不同分辨率自适应罢了,我们不管图片会不会因为被拉伸而失真,因为真的遇到这样的情况,我们可以考虑在不同分辨率下使用不同的图片,这样就简单多了。所以让图片尺寸自适应,我们只要不给图片设定具体的宽高尺寸,只要在样式中给该图片一个width:100%,这样图片就能根据它父容器的尺寸自动调整了。

4、媒体查询(media query),这个也是响应式页面的一个关键技术,根据不同的分辨率去调整一些不同的样式。

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

.column {

float:none;

}

}

通过上面的这样媒体查询结构,我们可以设定在不同分辨率下选用不同的样式来调整响应式页面。像前面第二点流体布局上,我们使用百分比或字号比例去实现流体布局的时候,第一种方法是可以不用媒体查询直接实现流体布局的,就是元素的宽高能自适应不同分辨率屏幕。

但第二种方法用字号比例(em)去实现流体布局的时候,我们就必须要结合媒体查询了,因为我们的字号比例是根据基准字号来实现的,就是说在基准字号一定的情况下,该元素的大小就是固定的,而我们要实现该元素尺寸自适应,就只能通过调整基准字号来实现了。通过媒体查询,我们可以让在基准字号font-size在不同分辨率下不一样,这样其子元素相对于该字号的比例em算出来的像素px就不一样了,这样就能实现响应式了。

所以我们兼容不同的分辨率的时候,可以先在某个分辨率下,实现完美的重构,然后将所有元素具体的尺寸(px)折算为em(根据父容器的font-size),然后再通过媒体查询,调整不同分辨率下的基准字号font-size就能实现具体的响应式了。

当然媒体查询的功能是根据不同的分辨率适配不同的样式,我们可以通过上面的做法是实现流体布局,还可以通过媒体查询来细调具体的页面在不同分辨率下的不同表现形式。

在我具体的项目过程中,采用媒体查询主要是调整不同分辨率下的基准字号的大小,具体如下面的代码所示:

body,section,button,h1,p,.layer,.downall_btn,.introduce,.playlist,.recom_picbox{font-size:20px;}

/* for 800 px width screen */

@media only screen and (max-device-width:800px),only screen and (max-width:800px){

body,section,button,h1,p,.layer,.downall_btn,.introduce,.playlist,.recom_picbox{font-size:33.34px;}

}

/* for 720 px width screen */

@media only screen and (max-device-width:720px),only screen and (max-width:720px){

body,section,button,h1,p,.layer,.downall_btn,.introduce,.playlist,.recom_picbox{font-size:30px;}

}

前面设置通用字号为20px,当分辨率超过我媒体查询到的最大屏幕宽度的时候就适配该基准字号,下面分别通过媒体查询为分辨率为800px和720px的设备详细调整基准字号,(当然在这里你可以增加更多的样式去调整不同分辨率下的具体表现)使页面在两个分辨率下都能有比较好的表现。可以发现,在800px的分辨率设备中,我的基准字号设置为33.34px,在720px的分辨率设备下的基准字号为30px。

原文链接:http://cued.xunlei.com/log057

为什么在800px分辨率下基准字号就为33.34px,在720px分辨率下基准字号为30px呢,这是因为我是先以480px分辨率下基准字号为20px去实现的,那么在800px或720px下的基准字号就根据设备分辨率的比例去算出。 这里只给出两个分辨率的例子,其他不同分辨率下的实现方法一样。

通过上面的几点关键技术,我们就可以实现具体的响应式页面了。看完这篇文章,是不是觉得响应式页面其实也没有想象中那么难呢?那么,有空自己去试试吧,只有自己动手实现后才能真正理解其中的奥秘哦!

时间: 2024-08-07 10:37:38

响应式页面重构 响应式页面重构学到的东西的相关文章

Web设计的8个趋势:单页面、响应式设计等

中介交易 SEO诊断 淘宝客 云主机 技术大厅 本文译自网站设计公司weavora.com,介绍了在他们眼里8个Web设计趋势:单页面.用照片做背景.色块设计.超大号的图片.聚焦简洁.响应式设计.视差滚动.强调字体,每个趋势后面都附了数个案例,相信对网站设计师会有一定的参考价值. 单页面 单个长页面的设计一度不受人待见(无论是客户还是设计师),但现在整个互联网随处可见.一个合理的解释是,用户现在早已习惯于使用鼠标滚轮了,比起在多个页面间来回查看,用滚轮上下浏览要省事得多. 包括苹果在内的一些知名

什么是响应式布局、响应式布局该如何设计

文章简介:今天就和大家来讲讲响应式布局这件小事,包含什么是响应式布局.响应式布局的优点和缺点以及响应式布局该怎么设计(通过CSS3 Media Query实现响应布局). 讲到响应式布局,相信大家都有一定的了解,响应式布局是今年很流行的一个设计理念,随着移动互联网的盛行,为解决如今各式各样的浏览器分辨率以及不同移动设备的显示效果,设计师提出了响应式布局的设计方案.今天就和大家来讲讲响应式布局这件小事,包含什么是响应式布局.响应式布局的优点和缺点以及响应式布局该怎么设计(通过CSS3 Media

网页易用性设计:合理地扩大页面链接响应区域

网页制作Webjx文章简介:口碑网UED Team 合理地扩大页面链接响应区域可以提高网页的易用性.同时还要兼顾到链接的交互一致性以及视觉上的平衡,就需要做一些特殊的处理. 实例一:一张图配一个链接. 常规的做法有以下几种: 第一种是最常规的,只有链接可点,但整张图不可点,点起来还蛮累的. 第二种是把整张图作为一个链接,链接响应区域是够大,但其实那个链接就比较尴尬,不够优雅. 第三种是弄两链接,文本链接之外,图本身再配个链接.这个比以上两种都好一些,但仍然不够理想,因为两个链接的交互一致性不够,

jquery实现页面百叶窗走马灯式翻滚显示效果的方法

 这篇文章主要介绍了jquery实现页面百叶窗走马灯式翻滚显示效果的方法,实例分析了jQuery操作百叶窗翻滚效果的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了jquery实现页面百叶窗走马灯式翻滚显示效果的方法.分享给大家供大家参考.具体如下: 1. 这里的代码需要jquery1.3以上的支持,如下所示: 代码如下: jQuery.fn.extend(( function($){ var l = 4,//卷动行数 t=5000,//卷动完一次后,隔多长时间下次开

代码-asp.net页面执行超时,页面无响应

问题描述 asp.net页面执行超时,页面无响应 碰到一个问题,不知道如何解决,求大侠指点. 具体描述如下: 由于存储过程执行时间太长,需要一分多钟,然后asp.net页面就一直处于等待状态,没有响应. function函数收不到回发的数据,没有任何提示. 附上handler页面代码及前台js代码. handler页面部分代码: try { SQLCollector sqlc = new SQLCollector(); sqlc.RunProcedure(strProcName, paras,

jquery实现页面百叶窗走马灯式翻滚显示效果的方法_jquery

本文实例讲述了jquery实现页面百叶窗走马灯式翻滚显示效果的方法.分享给大家供大家参考.具体如下: 1. 这里的代码需要jquery1.3以上的支持,如下所示: 复制代码 代码如下: jQuery.fn.extend((     function($){         var l = 4,//卷动行数             t=5000,//卷动完一次后,隔多长时间下次开始卷动             rt=500,//每个n卷动过去的耗时             n="li",

Web页面的响应能不能阻塞 “2分钟” ???

问题描述 Web页面的响应能不能阻塞"2分钟"???protectedvoidBt_Current_Click(objectsender,EventArgse){//问题:怎么样才能让点击按钮,2分钟后再执行下面的代码???如果是Winform可以使用Thread.sleep(),但是如果是asp.net应该怎么做呢???这里需要两分钟的时间等待后台Winform程序,将数据处理到数据库中.//2分钟后出现执行下面的代码DateTimeDATime=DateTime.Now.AddMi

页面重构-html页面弹出html页面

问题描述 html页面弹出html页面 在html页面点击按钮,然后弹出一个页面,在弹出页面点击提交按钮后,重新回到以前html 页面,并把刚才提交的数据显示出来. 谢谢大神的帮助啊 解决方案 html页面弹出密码框jQuery+css+html实现页面遮罩弹出框.net 如何弹出一个html页面. 解决方案二: 页面的话用iframe做 解决方案三: http://v3.bootcss.com/javascript/#popovers 用这个方式去做一个模态框,然后在里面进行提交,提交之后,在

代码重构(三):数据重构规则

在<代码重构(一):函数重构规则(Swift版)>和<代码重构(二):类重构规则(Swift版)>中详细的介绍了函数与类的重构规则.本篇博客延续之前博客的风格,分享一下在Swift语言中是如何对数据进行重构的.对数据重构是很有必要的,因为我们的程序主要是对数据进行处理.如果你的业务逻辑非常复杂,那么对数据进行合理的处理是很有必要的.对数据的组织形式以及操作进行重构,提高了代码的可维护性以及可扩展性. 与函数重构与类重构类似,对数据结构的重构也是有一定的规则的.通过这些规则可以使你更