响应式Web设计基础
本文所有内容来自Responsive Web Design Fundamentals
手机、大屏手机、平板电脑、桌面电脑、游戏控制台、电视、甚至是可穿戴设备,如此多的设备也形成了多种多样的屏幕尺寸。屏幕的大小总在变,我们需要我们的网页今后能够适应任何屏幕尺寸
响应式Web设计,最初的定义(Ethan Marcotte in A List Apart)是让网页响应用户及其所用设备的需求。在响应式设计中,布局将会随着设备的屏幕尺寸和显示能力而改变。比如,在手机上,用户只看到包含内容的单列视图,而在平板电脑中则能看到两列
设置视口信息
网页若需要适配不同的设备,在其文档的head元素中,需要包含一个meta元素,这个meta元素视口控制信息。这个meta元素告诉浏览器如何控制页面的尺寸缩放
长话短说
- 使用meta元素,里面包含视口控制信息去控制浏览器视口的宽度和缩放
- 写入
width=device-width去使用设备的像素去匹配屏幕的宽度 - 写入
initial-scale=1去建立CSS像素与设备像素的1:1对等关系 - 保证你的页面在用户缩放的时候依旧可用
最佳实践
为了提供最佳的用户体验,手机浏览器一般以980px(这个值会可能在不同设备中略有不同)的宽度渲染页面,然后会尝试去减少文字大小以及缩放内容到屏幕大小来让内容看起来更加适于阅读。对于用户来说,这也意味着字体的大小可能会不一致,用户需要通过双击或手势缩放来放大网页,这样才能看到内容并与之交互
<meta name="viewport" content="width=device-width, initial-scale=1.0">
有一些浏览器会在横竖屏切换时保持页面宽度不变,他们仅仅会进行缩放,而不会让内容回流来适应屏幕。增加属性initial-scale=1告诉浏览器去建立CSS像素和设备像素的1:1对等关系,而无视设备的方向,这样网页就能适应横竖屏的宽度变化了我们可以使用meta标签来指定viewport信息,这里width=device-width表明页面将会以设备的像素大小来适配屏幕宽度。这样无论是在小屏幕手机上还是大屏幕显示器上,页面都可以为不同的屏幕尺寸进行内容的回流
使用一个逗号去区分属性保持老式浏览器也能获取到值
确定一个可访问的视口
除了使用initial-scale,也可以在视口控制信息中加入minimum-scale,maximum-scale和user-scalable等属性。这些值将限制用户缩放视口的比例,可能会降低网页的可访问性
使得内容适配视口
无论是手机还是桌面电脑,用户通常是垂直滚动页。也就是说,强迫用户水平滚动页面或者必须缩放才能看到整个页面,都会降低用户体验
长话短说
- 不要为元素设定大且固定的尺寸
- 内容的展现不应该依赖于一个特定的视口宽度
- 使用CSS的媒体查询来为不同的屏幕尺寸提供不同的样式
最佳实践
在开发手机网页中使用meta viewport元素进行开发时,很容易导致页面内容无法匹配某些特定的视口。比如,一张图片能够在较宽呃视口中完全显示,但在较窄的视口中则必须要水平滚动才能看到右边的部分。我们需要调整页面内容来适应视口的宽度,这样它们就不需要水平滚动了
由于不同设备基于CSS像素的尺寸和宽度不同(手机和平板之间不同,甚至不同的手机之间也不同),所以页面内容不能只依赖于一个特定的视口宽度。
如果元素设定了较大的绝对宽度,元素在窄设备中将由于太宽而只能显示一部分。取而代之,考虑使用相对宽度(如width: 100%)
为响应式使用CSS的媒体查询
媒体查询其实能在CSS样式中使用的过滤器,他们能够很轻易的根据设备的特点来改变渲染网页内容的CSS样式,这些特点包括设备的显示类型,宽高,横竖屏甚至是分辨率
长话短说
- 媒体查询可以根据设备特点来应用样式
- 使用
min-width而不是min-device-width来保证更多情况下能有好的体验 - 为元素使用相对大小防止破坏布局
最佳实践
比如,我们可以通过这样的方式加入打印时需要的样式:
<link rel="stylesheet" href="print.css" media="print">
除了在样式的link元素中增加media属性,还有两种其他方法在CSS文件在中使用媒体查询:@media和@import。处于效率考虑,推荐使用前两种方式
@media print {
/* print style sheets go here */
}
@import url(print.css) print;
根据视口大小使用媒体查询媒体查询中的逻辑不会互相冲突,并且符合媒体查询条件而引入的CSS样式也会根据CSS优先级标准作用与页面中
媒体查询为创建响应式的体验成为可能,通过媒体查询,我们能为小屏幕,大屏幕,或者两者之间来提供特定的样式表。媒体查询的语法允许我们根据设备的特点来创建匹配规则:
@media (query) {
/* CSS Rules used when query matches */
}
媒体查询提供了很多查询条件供我们使用,其中我们在响应式web设计中用的最多是min-width、max-width、min-height、max-height
- min-width: 匹配所有宽度大于设定值的浏览器
- max-width: 匹配所有宽度小于设定值的浏览器
- min-height: 匹配所有高度大于设定值的浏览器
- max-height: 匹配所有高度小于设定值的浏览器
- orientation=portrait: 匹配竖屏,也就是高度大于或等于宽度
- orientation=landscape: 匹配横屏,也就是宽度大于或等于高度
关于min-device-width
除了*-width,我们也可以在媒体查询中使用*-device-width,这两者有微妙且重要的差异。min-width检测的是浏览器的窗口的尺寸,而min-device-width检测的则是屏幕的尺寸
在手机上,这个差异一般不会有什么影响,毕竟用户不能自由调整窗口的尺寸。但在桌面上,用户能够自由控制窗口尺寸并希望网页内容能够很自然的适应窗口,所以,应当尽量避免使用*-device-width,否则网页将无法响应桌面浏览器窗口的缩放
使用相对单位
响应式设计的一个关键概念就是流动性和比例性,而不是使用固定宽度进行布局。计量时使用相对单位能够简化布局,并防止出现创建的组件对于视口过大的情况。
比如,将顶层宽度设为100%,使其宽度撑开到整个视口大小,它的宽度永远不会大于或小于视口大小。这个div无论在iPhone的320px、黑莓Z10的342px还是Nexus 5的360px下,都能横向填满屏幕
另外使用相对单位允许浏览器在用户缩放网页时重新渲染整个页面,而不会增加一个水平滚动条。
如何选择断点
尽管哦我们可以考虑基于设备类型来定义断点,但需要谨慎使用这种方式。基于特定的的设备、产品、品牌名称或操作系统定义断点,就算今天能正常使用,以后也会出现维护上的噩梦。取而代之的是,网页内容应该根据其自身来决定如何在容器中进行布局。
长话短说
- 基于网页内容创建断点,永远不要基于特定的设备、产品或品牌
- 以移动先行的思想设计网页,然后随着屏幕可用大小增加而渐进增强用户体验
- 保持每一行文字的最大宽度在70到80个字符左右
从小到大来挑选主要断点
首先,在较小的屏幕尺寸上设计网页,然后主键扩大屏幕大小直到必须要增加断点。这样断点的选取是基于网页内容,并且断点会尽可能的少。
必要时添加次要断点
除了显著影响布局的主要断点外,用于小范围调整的次要断点也非常有用。比如在主要断点中间,增加一些次要断点来调整元素的margin或padding,或者增加文本大小让他们在布局中显得更加自然
优化文本阅读
传统的可读性理论建议一个理想的列每一行应该包含70到80个字符(8~10个英文单词),也就是说,每当一行单词数量增加到10个时,我们就应该就应该加一个断点了
不要完全隐藏内容
当需要根据屏幕大小选择行的显示内容时,需要注意。不要简单的由于其无法适应屏幕就将其隐藏。屏幕的大小并不能说明用户想要什么。比如,在天气预报中移除了花粉浓度对于一个不外出或没有花粉过敏症呃人来说可能没什么,但对于患有花粉过敏症的人来说就很致命了
响应式Web设计基础的更多相关文章
- css014 响应式web设计
css014 响应式web设计 一. 响应式web设计基础知识 1.rwd的三大理念:a.用于布局的弹性网络, b.用于图片和视频的弹性媒体,c.为不同屏幕宽度创建的不同样式的css媒体查询. ...
- 响应式WEB设计的9项基本原则
响 应式Web设计对于解决多类型屏幕问题来说是个不错方案,但从印刷的角度来看,其却存在着很多的困难.没有固定的页面尺寸.没有毫米或英寸,没有任何物理 限制,让人感到无从下手.随着建立网站可用的各种小工 ...
- 最佳的 14 个免费的响应式 Web 设计测试工具
一旦你决定要搭建一个网站就应该已经制定了设计标准.你认为下一步该做什么呢?测试!我使用“测试”这个词来检测你网站对不同屏幕和浏览器尺寸的响应情况.测试在响应式网页设计的过程中是很重要的一步.如果你明白 ...
- <HTML5和CSS3响应式WEB设计指南>译者序
"不是我不明白,这世界变化快."崔健的这首歌使用在互联网领域最合适不过.只短短数年的功夫,互联网的浪潮还没过去,移动互联网的时代已经来临.人们已经习惯将越来越多的时间花在各种移动设 ...
- 如何通过CSS3 实现响应式Web设计
如何通过CSS3 实现响应式Web设计: 分为三个步骤:(1)允许网页宽度自动调整.首先在页面头部中,我们需要加入这样一行:<meta name="viewport" con ...
- [转]响应式WEB设计学习(1)—判断屏幕尺寸及百分比的使用
原文地址:http://www.jb51.net/web/70360.html 现在移动设备越来越普及,用户使用智能手机.pad上网页越来越普遍.但是传统的fix型的页面在移动终端上无法很好的显示.因 ...
- 响应式Web初级入门
本文来自我的前端博客,原文地址:http://www.hacke2.cn/about-responsive/ 跨终端时代的到来 当你乘坐各种交通工具(公交.地铁.轻轨.火车)时你会发现,人们都个个低下 ...
- CSS3-基于浮动的布局,响应式WEB设计,定位网页上的元素,设计打印页面的css技术
基于浮动的布局: 1.除非图片设置了宽度,否则始终应该要对浮动的图片设置一个宽度,这样可以让浏览器给其他内容腾出环绕的空间 2.当侧边栏的高度与主内容区的高度不一致的时候,可以用个margin进行调整 ...
- 推荐35个新鲜出炉的响应式 Web 设计实例
响应式设计的准则在于根据用户使用的屏幕的分辨率来改变网站的的布局.因此,视频或图像的大小和文本的数量,可以被视为是一个明显的变化.让你即使从智能手机浏览一个网站的时候能轻松地看到网站上的重要内容.今天 ...
随机推荐
- RabbitMQ介绍4 - 编程(C#客户端示例)
C#终端的说明文档: http://www.rabbitmq.com/dotnet-api-guide.html 这里介绍使用RabbitMQ的几种典型场景. 1. 简单direct模式( http: ...
- 常见数组&字符串API及其应用场景总结
数组API: String(arr):将arr中每个元素转化为字符串,逗号连接 场景:用于鉴别数据有没有修改等. ps:String是万能的 toString 只能转换除null和unde ...
- ruby的hash学习笔记例: 将字符串文本中的单词存放在map中
text = 'The rain in Spain falls mainly in the plain.'first = Hash.new []second = Hash.new {|hash,key ...
- 在Windows驗證網站設定部分匿名存取
最近接連遇到幾次的需求:供內部使用的ASP.NET網站,全站使用Windows驗證,使用者以網域AD帳號登入,但網站包含少數API性質的ASHX.ASPX或MVC Action,提供其他系統呼叫整合. ...
- Django 应用 Buildbot
Django作者之一 JACOB KAPLAN 所写的buildbot应用在Django系统. 全文总共分为两个部分 1,http://jacobian.org/writing/ci-is-hard/ ...
- 使用tcpdump+Wireshark(或Fiddler)做linux服务器的网络请求分析
我们的服务器上,一般都没有窗口界面,这时候要抓包,用tcpdump是最方便的.而分析网络请求时,wireshark又是相当方便的,这时候我们就需要把它们两个一起来使用了. tcpdump 抓取数据 命 ...
- App can入门
主干 主干可以认为是整个页面的整体框架布局 上图是截取与ZAKER(原生开发).正益无线(HTML5开发).ZAKER微博界面(原生开发)和HTML5中国(HTML5开发).参考上述界面我们看到大部分 ...
- [ZOJ 1010] Area (计算几何)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1010 题目大意:给你n个点,问你顺次连线能否连成多边形?如果能, ...
- Esfog_UnityShader教程_漫反射DiffuseReflection
这篇是系列教程的第三篇,最近工作比较紧,所以这个周六周日就自觉去加了刚回来就打开电脑补上这篇,这个系列的教程我会尽量至少保证一周写一篇的.如果大家看过我的上一篇教程<Esfog_UnitySha ...
- V$SGA_RESIZE_OPS.STATUS = ERROR, and MMAN / auto-tuning stops.
Oracle Server - Standard Edition - Version: 10.2.0.3This problem can occur on any platform. SYMPTOMS ...