移动优先的响应式布局

前面的话

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

 

设计原则

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

  渐进增强(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 抽屉式】

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/370113.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python中英文字符和中文字符存储长度不同_Django如何正确截取中英混合字符串及表单中限制中文字符中长度...

中文字符和英文字符所占的字节长度是不一样&#xff0c;一个是2个字节&#xff0c;一个是1个字节&#xff0c;这给我们用英文的web框架开发中文app带来了麻烦。比如Django自带过滤器truncatewords并不支持截取中文&#xff0c;另外模型中CharField中的max_length选项用于限制中…

使用RESTful客户端API进行GET / POST

互联网上有很多如何使用RESTful Client API的东西。 这些是基础。 但是&#xff0c;尽管该主题看起来微不足道&#xff0c;但仍然存在一些障碍&#xff0c;尤其是对于初学者而言。 在这篇文章中&#xff0c;我将尝试总结我的专业知识&#xff0c;以及我如何在实际项目中做到这…

南昌互联网行业协会筹办者祝真和华罡团队-2014年12月江西IDC排行榜

&#xfeff;&#xfeff;他出自军营&#xff0c;拥有一身正气。 他在南昌创业&#xff0c;立意卓越。 从站点開始、到微营销、到线上教育&#xff0c;全面开花。 他在朋友圈看到不对的内容&#xff0c;就会即时批评。 他对朋友&#xff0c;又是很的和蔼可亲。 他就是南昌华罡网…

Linux下查看某个进程的网络带宽占用情况

说明&#xff1a; 1、可能查看某个进程的带宽占用需要明确知道PID、进程名字、发送速度、接收速度。 2、很遗憾&#xff0c;在Linux原生的软件中没有这样的一款&#xff0c;只能额外装&#xff0c;最符合以上的情况就只有nethogs。 3、nethogs可以指定网卡&#xff0c;但是不能…

android中的add方法,Android入门之addWindow

前面说到&#xff0c;应用程序添加窗口时&#xff0c;会在本地创建一个ViewRoot&#xff0c;然后通过IPC(进程间通信)调用WmS的Session的addWindow请求WmS创建窗口&#xff0c;下面来看看addWindow方法。addWindow方法定义在frameworks/base/services/java/com.android.server.…

CSS属性速查表

前面的话 本文将按照布局类属性、盒模型属性、文本类属性、修饰类属性这四个分类&#xff0c;对CSS常用属性进行重新排列&#xff0c;并最终设置为一份stylelintrc文件 布局类 1、定位 positionz-indextopbottomleftright 2、浮动 floatclear 3、多列布局 columnscolumns-width…

我应该使用32位还是64位JVM?

这是我在企业软件开发生涯中多次遇到的问题。 我不得不每隔一段时间就提供有关配置特定新环境的建议。 而且&#xff0c;很多时候&#xff0c;手头的问题与“我应该使用32位或64位JVM”有关。 老实说&#xff0c;一开始我只是掷硬币。 而不是给出合理的答案。 &#xff08;对不…

python安装pyecharts清华_基于Python安装pyecharts所遇的问题及解决方法

最近学习到数据可视化内容&#xff0c;老师推荐安装pyecharts&#xff0c;于是pip install 了一下&#xff0c;结果...掉坑了&#xff0c;下面是我的跳坑经验&#xff0c;如果你有类似问题&#xff0c;希望对你有所帮助。第一个坑:这个不难理解&#xff0c;缺少pyecharts-jupyt…

C语言内存分配

C语言内存分配 C语言的内存分配主要有5个区域&#xff1a; 1、栈区&#xff1a;在运行函数时&#xff0c;函数内的局部变量&#xff08;不包含static变量&#xff09;、函数返回值的存储单元在栈区上创建。函数运行结束时这些存储单元自己主动被释放。栈区内存分配运算内置于处…

在Ajax方式产生的浮动框中,点击选项包含某个关键字的选项

#!usr/bin/env python #-*- coding:utf-8 -*- """ author: sleeping_cat Contact : zwy24zwy163.com """ #在Ajax方式产生的浮动框中&#xff0c;点击选项包含某个关键字的选项 #通过模拟键盘下箭头进行选择悬浮框选项from selenium imp…

android studio点击图片,如何在Android Studio中的模拟器图库中添加图像?

如何在Android Studio中的模拟器图库中添加图像&#xff1f;我正在开发图像过滤器应用程序。 但是&#xff0c;如果我没有任何图像&#xff0c;就无法真正尝试。我知道我可以在电话中对其进行测试&#xff0c;但这并不相同&#xff0c;因为我需要错误消息和其他内容。我只想从A…

移动端学习目录

前面的话 iphone4发布是几年前的事情&#xff0c;而如今早已是移动互联网的时代。人们不再正襟危坐在电脑前&#xff0c;而更愿意把时间耗费在手机上&#xff0c;随时随地地享受互联网。在移动端可以使用最新最炫的前端技术&#xff0c;而不用再考虑老版本IE的兼容性。当前&…

实践中的构建者模式

我将不深入讨论该模式&#xff0c;因为已经有大量的帖子和书籍对此进行了详细的解释。 相反&#xff0c;我将告诉您为什么以及何时应该考虑使用它。 但是&#xff0c;值得一提的是&#xff0c;这种模式与《 四人帮》一书中介绍的模式有些不同。 虽然原始模式着重于抽象化构造步…

python计算汽车的平均油耗_用python对汽车油耗进行数据分析

原标题&#xff1a;用python对汽车油耗进行数据分析- 从http://fueleconomy.gov/geg/epadata/vehicles.csv.zip下载汽车油耗数据集并解压- 进入jupyter notebook(ipython notebook)并新建一个New Notebook- 输入命令[python]view plaincopyimportpandas as pdimportnumpy as np…

git常用命令2

##一、git常用命令 ###1、 push文件 * 打开cmd窗口 * 输入f:&#xff0c;进入f:&#xff08;自己随便在自己的电脑上找个位置就行了&#xff0c;这里的f:&#xff0c;表示的是f盘&#xff09; * 然后输入mkdir workSpace&#xff0c;会自动在f盘下生成一个workSpace文件夹 * 然…

android移动应用基础教程源代码,Android移动应用基础教程 【程序活动单元Activity】...

本章目录一、Activity的生命周期1、生命周期状态2 、生命周期方法3、横竖屏切换时的生命周期二、Activity的创建配置和关闭1、Activity的创建2、配置Activity3、开启和关闭Activity三、Intent与IntentFilter1、Intent介绍1.1 意图的概念1.2 显式意图1.3 隐式意图2、IntentFilte…

elasticsearch中cluster和transport知识

elasticsearch cluster 概述 elasticsearch节点间通信的基础transport转载于:https://www.cnblogs.com/wzj4858/p/8126033.html

Python中使用subplot在一张画布上显示多张图

subplot(arg1, arg2, arg3) arg1: 在垂直方向同时画几张图arg2: 在水平方向同时画几张图arg3: 当前命令修改的是第几张图 t np.arange(0,5,0.1) y1 np.sin(2*np.pi*t) y2 np.sin(2*np.pi*t) plt.subplot(211) plt.plot(t,y1,b-.) plt.subplot(212) plt.plot(t,y2,r--) plt.s…

Java 8:从PermGen到元空间

您可能已经知道&#xff0c;现在可以下载JDK 8 Early Access 。 这使Java开发人员可以尝试Java 8的一些新语言和运行时功能。这些功能之一是完全删除自Oracle自JDK 7发行以来就宣布的Permanent Generation&#xff08;PermGen&#xff09;空间。例如&#xff0c;自JDK 7起&…

oracle symonym_ORACLE SYNONYM详解

以下内容整理自Oracle 官方文档一 概念A synonym is an alias for any table, view,materialized view, sequence, procedure, function, package, type, Java classschema object, user-defined object type, or another synonym. Because a synonymis simply an alias, it re…