前面的话

  随着移动互联网的兴起,不同设备的分辨率相差较大,如果在不同的设置上显示同一个页面,则用户体验差。响应式网页设计是一种方法,使得一个网站能够兼容多个终端,而不用为每个终端制作特定的版本。它使得一个网站可以在任何类型的屏幕上,都可以被轻松地浏览和使用。采用响应式设计,在不同设备中,网站会重新排列,展现出不同的设计风格,以完美的适配任何尺寸的屏幕

设计原则

  关于响应式设计,有渐进增加和优雅降级两个设计原则

  渐进增强(progressive enhancement),是指基本需求得到满足、实现,再根据不同浏览器及不同分辨率设备的特点,利用高级浏览器下的新特性提供更好的体验。比如,圆角、阴影、动画等

  优雅降级(graceful degradation)则正好相反,现有功能已经开发完备,但需要向下兼容版本和不支持该功能的浏览器。虽然兼容性方案的体验不如常规方案,但保证了功能可用性

  移动优先的响应式布局采用的是渐进增强原则,制作响应式网站时,先搞定手机版,然后再去为更大设备去设计和开发更复杂的功能。特征是使用min-width匹配页面宽度。从上到下书写样式时,首先考虑的是移动设备的使用场景,默认查询的是最窄的情况,再依次考虑设备屏幕逐渐变宽的情况

  由简入繁易,由繁入简难。如果是桌面优先,布局端是桌面端代码,只有在media中,才是手机端代码,加载了多余的桌面端代码。如果是图片文件,则下载的无用资源更多

  无论从界面设计还是代码执行效率的角度而言,移动优先都有明显优势

三要素

  响应式设计包括三个要素:弹性布局、媒体查询和弹性图片

  弹性布局和媒体查询已经在其他博客中详细介绍,下面来重点介绍下弹性图片

  弹性图片,也称为响应式图片,是指图片能够跟随父容器宽度变化而变化,同时宽度受限于父容器,不可按照图片原始尺寸展现

  因此,最简单的响应式图片设置max-width为100%即可

img{
max-width: 100%;
}

  只有一张图片的情况下,采用上面代码即可。如果提供了高清图,要根据设备大小加载不同的图片,则需要额外的处理。有如下几种处理方式

  1、采用picture元素,IE浏览器、android4.4.4-浏览器不兼容

<picture>
<source media="(min-width:50em)" srcset="img/l.jpg">
<source media="(min-width:30em)" srcset="img/m.jpg">
<img src="img/s.jpg" alt="#">
</picture>

  2、采用img元素的srcset和sizes属性,IE浏览器、android4.4.4-浏览器不兼容

<img
src="img/480.png"
srcset="img/480.png 480w,img/800.png 800w, img/1600.png 1600w"
sizes="(min-width:800px) 800px,100vw"
/>

  3、采用js,根据window的resize事件,修改图片的路径

function makeImageResponsive(){
var width = $(window).width();
var img = $('.content img');
if(width <=480){
img.attr('src','img/480.png');
}else if(width <=800){
img.attr('src','img/800.png');
}else{
img.attr('src','img/1600.png');
}
}
$(window).on('resize load',makeImageResponsive);

  4、后端配置,前端传递给后端当前设备的一些特征,后端通过这些特征决定做怎样的响应。但目录两个后端响应式解决方案Responsive_Images和Adaptive-Images都不再维护

优缺点

【优点】

  1、减少工作量,网站、设计、代码、内容都只需要一份

  2、节省时间

  3、解决了设备之间的差异化展示

  4、搜索优化 

  5、更好的用户体验

【缺点】

  1、需要加载更多的样式和脚本资源,加载速度受到影响

  2、设计比较难精确定位和控制

  3、老版本浏览器兼容不好

响应模式

  下面介绍四种响应模式

【Column Drop 列下沉】

  手机上每一个大块单独占据一行,随着屏幕尺寸拉伸会在同一行上形成多个 column 列

【Mostly Fulid 基本流体式】

  基本上跟 Column Drop 一样,但是有一点点“固定布局“的特点:当到达一定宽度后,主体内容部分不再变宽,成为固定宽度

【Layout Shifter 变换式】

  变换式,也就是不必遵循原有内容顺序,可以根据最佳展示需要来调整大块顺序

【Off Canvas 抽屉式】

  抽屉式,屏幕不够宽的时候,隐藏,通过按钮呼出。足够宽的屏幕上,始终显示

移动优先的响应式布局相关推荐

  1. 移动端WEB开发之响应式布局(响应式开发原理、bootstrap、阿里百秀案例)

    移动端WEB开发之响应式布局 1.1 响应式开发原理 就是使用媒体查询针对不同宽度的设备进行布局和样式的设置,从而适配不同设备的目的. 设备的划分情况: <!DOCTYPE html> & ...

  2. CSS3 @media媒体查询 适配不同尺寸设备的响应式布局(清晰详解)

    随着宽屏的不断普及,CSS3出现了@media媒体查询技术 一.了解@Media 相关知识 1.了解Media Queries Media Queries能在不同的条件下使用不同的样式,使页面在不同在 ...

  3. 媒体查询-响应式布局-BFC

    媒体查询-响应式布局-BFC 1 回顾 1.1 多列布局 设置给包裹元素的属性:column-countcolumn-widthcolumnscolumn-gapcolumn-rule-widthco ...

  4. 响应式布局及bootstrap(实例)

    说明: 这几天公司要求网站实现响应式布局,所以对响应式布局进行了相对全面的了解,并做了几个实例. 转载请注明源地址,谢谢^_^,http://www.cnblogs.com/liu-zhen/p/44 ...

  5. html怎么做成响应式的,怎么用html5完成响应式布局?

    怎么用html5完成响应式布局?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 怎么用5完成响应式布局? 步骤1 建立空 ...

  6. CSS3与页面布局学习笔记(四)——页面布局大全(负边距、双飞翼、多栏、弹性、流式、瀑布流、响应式布局)

    一.负边距与浮动布局 1.1.负边距 所谓的负边距就是margin取负值的情况,如margin:-100px,margin:-100%.当一个元素与另一个元素margin取负值时将拉近距离.常见的功能 ...

  7. 响应式布局(响应式网页的构成bootstrap框架)

    一.响应式布局 1.概念 响应式又叫自适应网页,可以根据网页窗口的调整而自动布局,不会导致页面效果的错乱,主要是针对移动端浏览器:通过响应式布局,可以使一套代码同时兼容多个尺寸的屏幕 2.响应式网页的 ...

  8. html响应式布局ipad,响应式布局(Responsive design)

    意在实现不同屏幕分辨率的终端上浏览网页的不同展示方式.通过响应式设计能使网站在手机和平板电脑上有更好的浏览阅读体验. 步骤 1.布局及设置meta标签 当创建一个响应式网站,或者非响应式网站变成响应式 ...

  9. Bootstrap实战 - 响应式布局

    一.介绍 响应式布局就是一个网站能够兼容多个终端,而不是为每个终端做一个特定的版本.这个概念是为解决移动互联网浏览而诞生的. 导航栏与轮播在大部分网站的头部占很高的比重,特别是导航栏,扮演着网站地图的 ...

最新文章

  1. 解决Windows 程序界面闪烁问题的一些经验
  2. 关于uWSGI服务器的安装和启动(一)
  3. ASP.NET中使用一般处理程序ashx作为后台处理实现响应get和post请求
  4. 405: HTTP method GET is not supported by this URL
  5. CSS之创建等高列布局之二
  6. 深度优化LNMP之MySQL
  7. 性能调优从哪方面入手?
  8. python菜单栏_Python(Tkinter)创建的菜单不会显示
  9. FP Growth算法简介+实例
  10. matlab小波具体频段,一种小波包分解节点与对应频段检索及编程方法
  11. java随机产生long_java生成随机数
  12. c语言playsound参数,通达信playsound函数
  13. Gigabit Ethernet
  14. 0xbc指令 st75256_st75256 - 涂Sir的个人空间 - OSCHINA - 中文开源技术交流社区
  15. 测绘资质申请标准及好处
  16. 移动应用性能测试简介
  17. 汇编踩过的坑(error A1010,A2085 ,divide error,A2070,注意事项)
  18. 前端代码 录音样式 类似微信发送语音
  19. 计算机u盘能直接拨出吗,u盘可以直接从电脑上拔下来吗
  20. 计算机软件著作权申请时间线

热门文章

  1. Verilog HDL中位运算符、逻辑运算符和缩减运算符的区别
  2. .net 把一个对象赋值给一个参数_Java GC回收算法-判定一个对象是否可以回收
  3. 修改weblogic端口的方法
  4. Coder-Strike 2014 - Finals (online edition, Div. 2) A. Pasha and Hamsters
  5. 简单小程序代码_小程序该如何运营
  6. Java中throw和throws的区别
  7. PostgreSQL学习手册(数据表)
  8. android onitemclicklistener 参数,android – OnItemClickListener从模型中获取数据
  9. elif else if oracle_关于Oracle if elsif else
  10. linux pap认证,配置PPP PAP 认证