前端响应式布局原理与方案(详细版)响应式布局指的是同一页面在不同屏幕尺寸下有不同的布局。传统的开发方式是PC端开发一套,

响应式设计与自适应设计的区别:响应式开发一套界面,通过检测视口分辨率,针对不同客户端在客户端做代码处理,来展现不同的布局和内容;自适应需要开发多套界面,通过检测视口分辨率,来判断当前访问的设备是pc端、平板、手机,从而请求服务层,返回不同的页面。

CSS3媒体查询可以让我们针对不同的媒体类型定义不同的样式,当重置浏览器窗口大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面。

如何确定媒体查询的分割点也是一个开发中会遇到的问题,下面是市场上的移动设备和电脑屏幕分辨率的分布情况,可以发现不同品牌和型号的设备屏幕分辨率一般都不一样

如果我们选择600px,900px,1200px,1800px作为分割点,可以适配到常见的14个机型:

当然这只是其中的一种分割方案,我们还可以这样划分:480px,800px,1400px,1400px

而作为曾经典型的响应式布局框架,Bootstrap是怎么进行断点的呢?

上面的分割方案不一定满足项目中的实际需求,我们可以先用跨度大的分割点进行分割,如果出现不适配的情况可以再根据实际情况增加新的分割点。

不管是移动优先还是PC优先,都是依据当随着屏幕宽度增大或减小的时候,后面的样式会覆盖前面的样式。因此,移动端优先首先使用的是min-width,PC端优先使用的max-width。

移动优先:

/*iphone678*/body{background-color:yellow;}/*iphone5*/@mediascreenand(max-width:320px){body{background-color:red;}}/*iphoneX*/@mediascreenand(min-width:375px)and(-webkit-device-pixel-ratio:3){body{background-color:#0FF000;}}/*iphone678plus*/@mediascreenand(min-width:414px){body{background-color:blue;}}/*ipad*/@mediascreenand(min-width:768px){body{background-color:green;}}/*ipadpro*/@mediascreenand(min-width:1024px){body{background-color:#FF00FF;}}/*pc*/@mediascreenand(min-width:1100px){body{background-color:black;}}PC优先:

/*pcwidth>1024px*/body{background-color:yellow;}/*ipadpro*/@mediascreenand(max-width:1024px){body{background-color:#FF00FF;}}/*ipad*/@mediascreenand(max-width:768px){body{background-color:green;}}/*iphone678plus*/@mediascreenand(max-width:414px){body{background-color:blue;}}/*iphoneX*/@mediascreenand(max-width:375px)and(-webkit-device-pixel-ratio:3){body{background-color:#0FF000;}}/*iphone678*/@mediascreenand(max-width:375px)and(-webkit-device-pixel-ratio:2){body{background-color:#0FF000;}}/*iphone5*/@mediascreenand(max-width:320px){body{background-color:#0FF000;}}2.百分比布局通过百分比单位,可以使得浏览器中组件的宽和高随着浏览器的高度的变化而变化,从而实现响应式的效果。Bootstrap里面的栅格系统就是利用百分比来定义元素的宽高,CSS3支持最大最小高,可以将百分比和max(min)一起结合使用来定义元素在不同设备下的宽高。

子元素的height或width中使用百分比,是相对于子元素的直接父元素,width相对于父元素的width,height相对于父元素的height;子元素的top和bottom如果设置百分比,则相对于直接非static定位(默认定位)的父元素的高度,同样子元素的left和right如果设置百分比,则相对于直接非static定位(默认定位的)父元素的宽度;子元素的padding如果设置百分比,不论是垂直方向或者是水平方向,都相对于直接父亲元素的width,而与父元素的height无关。跟padding一样,margin也是如此,子元素的margin如果设置成百分比,不论是垂直方向还是水平方向,都相对于直接父元素的width;border-radius不一样,如果设置border-radius为百分比,则是相对于自身的宽度,除了border-radius外,还有比如translate、background-size等都是相对于自身的;

从上述对于百分比单位的介绍我们很容易看出如果全部使用百分比单位来实现响应式的布局,有明显的以下两个缺点:

REM是CSS3新增的单位,并且移动端的支持度很高,Android2.x+,ios5+都支持。rem单位都是相对于根元素html的font-size来决定大小的,根元素的font-size相当于提供了一个基准,当页面的size发生变化时,只需要改变font-size的值,那么以rem为固定单位的元素的大小也会发生响应的变化。因此,如果通过rem来实现响应式的布局,只需要根据视图容器的大小,动态的改变font-size即可(而em是相对于父元素的)。

rem响应式的布局思想:

rem布局的缺点:

在响应式布局中,必须通过js来动态控制根元素font-size的大小,也就是说css样式和js代码有一定的耦合性,且必须将改变font-size的代码放在css样式之前

/*上述代码中将视图容器分为10份,font-size用十分之一的宽度来表示,最后在header标签中执行这段代码,就可以动态定义font-size的大小,从而1rem在不同的视觉容器中表示不同的大小,用rem固定单位可以实现不同容器内布局的自适应。*/functionrefreshRem(){vardocEl=doc.documentElement;varwidth=docEl.getBoundingClientRect().width;varrem=width/10;docEl.style.fontSize=rem+'px';flexible.rem=win.rem=rem;}win.addEventListener('resize',refreshRem);REM布局也是目前多屏幕适配的最佳方式。默认情况下我们html标签的font-size为16px,我们利用媒体查询,设置在不同设备下的字体大小。

用视口单位度量,视口宽度为100vw,高度为100vh(左侧为竖屏情况,右侧为横屏情况)。例如,在桌面端浏览器视口尺寸为650px,那么1vw=650*1%=6.5px(这是理论推算的出,如果浏览器不支持0.5px,那么实际渲染结果可能是7px)。

那么vw或者vh很类似百分比单位。vw和%的区别为:

从对比中我们可以发现,vw单位与百分比类似,单确有区别,前面我们介绍了百分比单位的换算困难,这里的vw更像"理想的百分比单位"。任意层级元素,在使用vw单位的情况下,1vw都等于视图宽度的百分之一。

使用视口单位来实现响应式有两种做法:

对于设计稿的尺寸转换为为单位,我们使用Sass函数编译

//iPhone6尺寸作为设计稿基准$vm_base:375;@functionvw($px){@return($px/375)*100vw;}无论是文本还是布局宽度、间距等都使用vw作为单位

.mod_banner{position:relative;padding-top:percentage(100/700);//使用padding-topheight:0;overflow:hidden;img{width:100%;height:auto;position:absolute;left:0;top:0;}}2.搭配vw和rem虽然采用vw适配后的页面效果很好,但是它是利用视口单位实现的布局,依赖视口大小而自动缩放,无论视口过大还是过小,它也随着时候过大或者过小,失去了最大最小宽度的限制,此时我们可以结合rem来实现布局

给根元素大小设置随着视口变化而变化的vw单位,这样就可以实现动态改变其大小

限制根元素字体大小的最大最小值,配合body加上最大宽度和最小宽度

//rem单位换算:定为75px只是方便运算,750px-75px、640-64px、1080px-108px,如此类推$vm_fontsize:75;//iPhone6尺寸的根元素大小基准值@functionrem($px){@return($px/$vm_fontsize)*1rem;}//根元素大小使用vw单位$vm_design:750;html{font-size:($vm_fontsize/($vm_design/2))*100vw;//同时,通过MediaQueries限制根元素最大最小值@mediascreenand(max-width:320px){font-size:64px;}@mediascreenand(min-width:540px){font-size:108px;}}//body也增加最大最小宽度限制,避免默认100%宽度的block元素跟随body而过大过小body{max-width:540px;min-width:320px;}5.图片响应式这里的图片响应式包括两个方面,一个就是大小自适应,这样能够保证图片在不同的屏幕分辨率下出现压缩、拉伸的情况;一个就是根据不同的屏幕分辨率和设备像素比来尽可能选择高分辨率的图片,也就是当在小屏幕上不需要高清图或大图,这样我们用小图代替,就可以减少网络带宽了。

图片自适应意思就是图片能随着容器的大小进行缩放,可以采用如下代码:

img{display:inline-block;max-width:100%;height:auto;}inline-block元素相对于它周围的内容以内联形式呈现,但与内联不同的是,这种情况下我们可以设置宽度和高度。max-width保证了图片能够随着容器的进行等宽扩充(即保证所有图片最大显示为其自身的100%。此时,如果包含图片的元素比图片固有宽度小,图片会缩放占满最大可用空间),而height为auto可以保证图片进行等比缩放而不至于失真。如果是背景图片的话要灵活运用background-size属性。

那么为什么不能用width:100%呢?因为这条规则会导致它显示得跟它的容器一样宽。在容器比图片宽得多的情况下,图片会被无谓地拉伸。

如果浏览器不支持srcset,则默认加载src里面的图片。

但是你会发现实际情况并不是如此,在Mac上的Chrome它会同时加载srcset里面的那张2x的,还会再去加载src里面的那张,加载两张图片。顺序是先把所有srcset里面的加载完了,再去加载src的。这个策略比较奇怪,它居然会加载两张图片,如果不写src,则不会加载两张,但是兼容性就没那么好。这个可能是因为浏览器认为,既然有srcset就不用写src了,如果写了src,用户可能是有用的。而使用picture就不会加载两张

另外使用source,还可以对图片格式做一些兼容处理:

现在的css,UI框架等都已经考虑到了适配不同屏幕分辨率的问题,实际项目中我们可以直接使用这些新特性和框架来实现响应式布局。可以有以下选择方案:

在实际项目中,我们可能需要综合上面的方案,比如用rem来做字体的适配,用srcset来做图片的响应式,宽度可以用rem,flex,栅格系统等来实现响应式,然后可能还需要利用媒体查询来作为响应式布局的基础,因此综合上面的实现方案,项目中实现响应式布局需要注意下面几点:

THE END
1.初入博客园PC尺寸兼容`ME1.PC端设计稿尺寸 宽:1920 高:1080(最小) 一般内容区域:1200 2.PC端实际尺寸 按屏幕宽度大小排序(主流的用紫色标明) 分辨率 比例 | 设备尺寸 1024*500 (8.9寸) 1024*768 (4:3 | 10.4寸、12.1寸、14.1寸、15寸) 1280*800(16:10 | 15.4寸) ...https://www.cnblogs.com/show-me-code/p/9891070.html
2.PC端弹窗设计十全大补盒子UI相比于移动端,PC端在页面空间上具有得天独厚的优势,可以进行更多的信息展示和任务处理。但更多的页面信息展示也暗示着需要更少的页面跳转,以避免页面频繁刷新导致的卡顿等体验不佳的问题。 在这类型产品的设计中通常会使用弹窗来实现快捷轻量化的完成任务,减少任务操作的成本。本文将分成四个部分一一阐述~ ...https://www.boxui.com/ued/design-idea/55839.html
3.WEB移动端.md·素晴/web基础移动端浏览器我们主要对webkit内核进行兼容 我们现在开发的移动端主要针对手机端开发 现在移动端碎片化比较严重,分辨率和屏幕尺寸大小不一 学会用谷歌浏览器模拟手机界面以及调试2.视口**视口(viewport)**就是浏览器显示页面内容的屏幕区域。视口可以分为布局视口、视觉视口和理想视口。https://gitee.com/huichi-chen/web-basic/blob/master/WEB%E7%A7%BB%E5%8A%A8%E7%AB%AF.md
4.消息卡片设计规范开发指南开发文档PC 端消息卡片为可自适应窗口宽度的宽版样式。 规则:卡片宽度跟随窗口自适应,最宽 605px,最窄 302px。 适配示意: Mobile 端 Mobile 端消息卡片为窄版样式,尺寸固定为 302px。 3.2 结构 卡片由以下元素构成: 标题区:可选; 内容区:必选,由组件搭建形成。 间距规则 整体内容和卡片边框上下左右的间距为 12px;...https://open.feishu.cn/document/tools-and-resources/design-specification/message-card-design-specifications
5.产品设计规范3.4如应用有pc端使用场景,应同时开发pc端;不允许仅有oa管理后台的web版微应用管理后台,而没有pc端微应用管理后台. 3.5 pc端微应用所有页面在容器内打开,避免跳转至外部浏览器打开; 3.6整体功能体验中,产品体验应该是稳定健康的,用户可感知流程步骤和页面跳转的目的性. 3.7微应用需要考虑不同角色用户的页面展示主次...https://open.dingtalk.com/document/isvapp/gyazy3
6.关于Web响应式设计Web程序员海军常见PC 端适配代码 /* 适配各种屏幕尺寸 */@media (min-width: 1024px){body,html{font-size: 18px}}@media (min-width: 1100px) {body,html{font-size: 20px}}@media (min-width: 1280px) {body,html{font-size: 22px;}}@media (min-width: 1366px) {body,html{font-size: 24px;}}@media...https://xie.infoq.cn/article/19e62034824fb8abd6f1702a2
1.PC端网页尺寸设计一最近要写UI设计规范,先研究一下网页设计里的尺寸问题。 一、分辨率 网页设计的尺寸主要和两个因素有关,一个是电脑显示器的分辨率,还有浏览器的分辨率,其实还有一些操作系统,Wi...https://www.jianshu.com/p/406aac2f2707
2.PC端所有的屏幕的尺寸pc端界面尺寸pc端ui图片尺寸_聊聊PC端页面适配 weixin_34675606的博客 4002 目也pc端有适配的需求:目前我们pc项目的设计稿尺寸是宽度1920,高度最小是1080。适配目标:1.在不同分辨率的电脑上,网页可以正常显示2.放大或者缩小屏幕,网页可以正常显示对于宽度的适配对于宽度适配:首先设置html,body{width:100%;overflow-x:hidden;}...https://blog.csdn.net/github_36629330/article/details/53428075
3.网页宽度到底该怎么定?这篇全面好文告诉你!优设网对于任何网页设计的项目,宽度设定的标准都是不同的,而在选择宽度的过程里,需要考虑 2 个核心因素: 1. 设备因素 设备因素即确认项目主要展示的屏幕设备是哪一种,它们对应的分辨率是多少。最粗略的划分,可以将设备划分成 PC 端和移动端。这两者受制与显示的尺寸,系统的限制,在设计和操作上都有比较大的区别。 https://www.uisdc.com/web-page-width
4.网页设计中选择1440还是1920?最佳建议来啦!常见的网页设计尺寸有 1280×800 、1600×900 、1440×90、1366×768、1920×1080 、2560×1440。其中,最经常使用的只有 1920×1080、1366×768、1440×900,而在这 3 种 网页设计尺寸中,通常情况下会更建议选择 1440 ,但这并不代表这 1920 不适合进行网页设计,只是 1440 更方便调整,适配性更高! https://js.design/special/article/web-design-size.html
5.pc端设计规范图(pc端设计稿布局尺寸规范)pc端设计图尺寸选择及布局适配 在设计PC端页面时,设计图的尺寸至关重要。通常情况下,设计图会以1920*1080作为默认尺寸,以适应自适应布局的需求。 然而,需要注意以下几点: 浏览器和框架占用空间:浏览器顶部导航栏和页面框架会占据一定空间,导致实际可展示内容区域缩小。 https://www.iotsj.com/kuaixun/6686.html
6.网站建设中pc端与移动端之间的六大区别一、屏幕尺寸 随着移动互联网的不断发展,智能手机更新换代很快,而随着更新设备的屏幕也在不断的增大,但是有一点你不得不承认,就算智能手机的屏幕再大,它总归不能超出pc端的电脑屏,这点是移动端和pc端最显著的区别,而这也是pc端的优势。因为pc端的屏幕大,所以能够容纳的内容以及可设计的范围自然会比移动端高,容...https://www.cdcxhl.com/news/185765.html
7.这些PC端的UI设计技巧,是你的误区吗?当然不是,低调性冷淡风,不是苹果就千万不要轻易尝试,我们普通用户的视觉冲击里,还是低调复杂轻奢风更能吸引眼球,譬如基于用户不同的需求,当位置的按钮尺寸不一样(这还不麻烦嘛),加上设计几个相对固定的尺寸比例,可以更好的控制用户整个视觉和体验。 另外,从运营的角度来看,对用户的注意点进行引导,还可以通过对内...https://www.douban.com/note/629825307/
8.淘宝pc端banner图尺寸是多少?备案帮助中心在当今电商行业中,淘宝商城是一个非常重要的平台。为了吸引更多的用户,提升产品和品牌的曝光度,拥有一款吸引人的淘宝PC端banner图至关重要。然而,对于普通用户来说,设计软件可能有一定的门槛。在这种情况下,我们可以使用凡科快图来解决这个问题。 一、淘宝PC端banner图尺寸 ...https://kt.fkw.com/news/1266802
9.品销宝图片尺寸多少?无线端和PC端模板分别是什么?pc端展示一般有两个部分,一个是店铺介绍部分,另一部分为内容展示部分,而尺寸的话一般为1070pxX180px, 内容展示的这一版一般有好几种模板,不限制哪种,喜欢哪个就选哪个,而它的模板一般有四种: 第一种的设计尺寸为428x178,这种模板最好是要配合着文案和视觉效果来做的,文案的设计也要注意排版,不要乱七八糟的...https://www.kaitao.cn/article/20181208181841.htm
10.天猫宝贝详情页尺寸是多少(天猫淘宝详情页尺寸)天猫淘宝设计尺寸标准 淘宝店: pc端 淘宝主图:800*800 宝贝主图大小不能超过3MB;700*700 以上图片上传后宝贝详情页自动提供放大镜功能。第五张图发商品白底图可增加手淘首页曝光机会! 详情页:宽750px高不限(单张不能超过500k) PC端750px(首次上传PC端详情页可直接生成移动端,不用二次修改尺寸也可直接使用) ...https://m.musicheng.com/news/i339619.html
11.PC端与移动端的产品,在设计上有什么区别–PingCodePC端与移动端的产品设计存在显著差异,主要体现在用户界面(UI)适配性、交互设计(IXD)、加载速度优化、以及内容布局和功能性。特别是在用户界面(UI)适配性方面,设计师必须考虑不同设备的屏幕尺寸和分辨率,以确保用户体验的一致性和舒适度。 对于用户界面(UI)适配性,移动端产品必须适应不同尺寸的屏幕,特别关注触控操作...https://docs.pingcode.com/ask/322089.html
12.产品拍照设计FAQ:亚马逊主图详情尺寸规格详解亚马逊没有明确区分主图和A+(详情)在PC端和移动端的尺寸区别,目前默认PC端实现。https://www.szmairun.com/a/20220527/392.html
13.网页pc设计尺寸规范.docx网页pc设计尺寸规范 网页pc设计尺寸规范 篇一:标准网页的宽度、字体、字号等的设计原则 标准网页的宽度、字体、字号等的设计原则 标准字体字号: 中文网页一般文字正文都采用宋体12号(12px)字体,因为这个字体是系统对于浏览器特别优化过的字体。虽然12px-20px的宋体字都还能看,但是宋体12px是最漂亮的,也是最普遍应用...https://max.book118.com/html/2018/1120/7061105162001160.shtm
14.完整版高仿真实战项目(UE&UI)原型设计(PC端+手机端)一、PC端(PC端高保真管理系统完整版): 1.尺寸:1920 x 1080、1600×900、1440×900、1366×768 2.登陆用户名:11 3.登陆密码号:123456 4.主要特点:功能齐全、架构完整、界面规范、交互全面、立体高保真(包括PC端+手机端两个原型)、动态效果多样、文本说明简介详细。 https://www.axure.com.cn/78164/
15.移动端和PC端的区别,新闻,助力企业品牌升级移动端和PC端在多个方面存在显著的区别,这些区别主要体现在设备特性、操作方式、屏幕尺寸、网络环境、功能设计以及使用场景等方面。以下是详细的对比分析: 一、设备特性 移动端:主要指智能手机和平板电脑等便携式设备。这些设备轻便易携,方便用户随时随地使用。它们通常搭载iOS或Android等移动操作系统,具备丰富的传感器功能...http://www.tjliancai.com/n-5/194.html