前端开发常见的几种布局方式

作为前端开发工程师,布局方式有多种,对于不同的场景可以使用不同的布局方式,那么我们就先来简单的来了解一下,那些前端开发必须了解的布局。

一. 静态布局(static layout)

      即传统的Web布局,网页上的所有元素尺寸一律使用px作为单位

1. 布局特点

      不管浏览器尺寸具体是多少,网页布局始终按照最初代码的布局来显示。常规的pc网站都是静态(定宽度)布局的,也就是设置了min-width,这样的话,如果页面小于这个宽度就会出现滚动条;如果大于这个宽度则内容居中外加背景,这种设计常见于pc端。

2.设计方法、

      pc:居中布局,所有样式使用绝对宽度/高度(px),设计一个Layout,在屏幕宽高有调整时,使用横向和竖向的滚动条来查询被遮掩部分;

      移动设备:另外建立移动网站,单独设计一个布局,使用不同的域名如wap.或m.。

在移动端开发中采用静态布局的两种方式:
      (1)在viewport meta标签上设置width=320,页面的各个元素也采用px作为单位,通过用js动态修改标签的initial-scale使得页面等比缩放,从而刚好占满整个屏幕。
      (2)在viewport meta标签上设置content="width=640,user-scalable=no",页面的各个元素也采用px作为单位,由于640px超出了手机宽度,浏览器会自动缩小页面至刚好全屏。

优点:这种布局方式对设计师和CSS编写来说都是最简单的。
缺点:不能根据用户的屏幕尺寸做出不同的表现。

当前,大部分门户网站、大部分企业的pc宣传站点都采用了这种布局方式。固定像素尺寸的网页是匹配固定像素尺寸显示器的最简单办法。但这种方法不是一种完全兼容未来网页的制作方法,我们需要一些适应未知设备的方法。
 

二、流式布局(Liquid Layout)

        流式布局的特点是页面元素的宽度按照屏幕分辨率进行适配调整,但是整体布局不变,代表栅格系统(网格系统)。网页中主要的划分区域尺寸使用百分数(搭配min-、max-属性使用)。例如,设置网页主体的宽度为80%,min-width为960px,图片也做类似处理(width:100%,max-width一般设为图片本身的尺寸,防止被拉伸而失真)。

1. 布局特点

      屏幕分辨率变化时,页面里元素的大小会变化但布局不变。(这就导致如果屏幕太大或者太小都会导致元素无法正常显示)。

2. 设计方法

      使用%百分比定义宽度,高度大都是用px来固定,可以根据可视区域(viewport)和父元素的实时尺寸进行调整,尽可能的适应各种分辨率。往往配合max-width/min-width等属性控制尺寸流动范围以免过大或者过小影响阅读。
这种布局方式在web前端开发的早期历史上,用来应对不同尺寸的pc屏幕(那时屏幕尺寸的差异不会太大),在当今的移动端开发也是常有的布局方式。但缺点明显:主要的问题是如果屏幕尺度跨度太大,那么在相对其原始设计而言过小或过大的屏幕上不能正常显示。因为宽度使用%百分比定义,但是宽度和文字大小都是用px固定,所以在大屏幕的手机下显示效果会变成有些页面元素宽度被拉的很长,但是高度、文字大小还是和原来一样(即,这些东西无法变得“流式”),显示非常不协调。

三、自适应布局(Adaptive Layout)

       自适应布局的特点是分别为不同的屏幕分辨率定义布局,即创建多个静态布局,每个静态布局对应一屏幕分辨率范围。改变屏幕分辨率可以切换不同的静态布局(页面元素位置发生改变),但在每个静态布局中,页面也暗示不随窗口大小的调整发生变化。可以把自适应布局看作是静态布局的一个系列。

1. 布局特点
      屏幕分辨率发生变化时,页面里面的元素位置会变化而大小不会变化。
2. 设计方法
      使用
@media媒体查询给不同尺寸和介质的设备切换不同的样式。在优秀的响应范围设计下可以给适配范围内的设备最好的体验,在同一个设备下实际还是固定布局。

四、弹性布局(rem/em布局)

        css3引入的,flex布局;优点在于其容易上手,根据flex规则很容易达到某个布局效果,然而缺点是:浏览器兼容性比较差,只能兼容到ie9及以上;

       这类布局的特点是:包裹文字的各元素的尺寸采用em/rem做单位,而页面的主要划分区域的尺寸仍使用百分数或px做单位。早期浏览器不支持整页面按比例缩放,仅支持网页内文字尺寸的放大,这种情况下,使用rem/em做单位,可以使包裹文字的元素随着文字的缩放而缩放。

1. 布局特点

浏览器的默认字体高度一般为16px,即1rem:16px,但是1:16的比例计算不方便,为了使单位em/rem更直观,css编写者尝尝将页面根节点字体设为62.5%,比如选择用rem控制字体时,先需要设置根节点html的字体大小,因为浏览器默认字体大小是16px * 62.5% = 10px,这样1rem就是10px。
但是因为有些浏览器的默认不是16px,或者用户修改了浏览器默认的字体大小。如果我们将其设置为10px,一定会影响在这些浏览器上的效果,所以最好用绝大多数用户默认的16作为基数*62.5%得到我们需要的10px。

实际项目设置成font-size:62.5%可能会出现问题,因为chrome不支持小于12px的字体,计算小于12px的时候,会默认取12px计算,导致chrome的em/rem计算不准确。
针对这个现象,可以尝试设置html字体为100px,body修正为16px,这样0.1rem就是10px,而body的字体仍然是默认大小,不影响未设置大小的元素的默认字体大小。

响应式和弹性布局之间的对比:

      响应式布局:改变浏览器宽度,“布局”会随之变化,不是一成不变的,例如导航栏在大屏幕下是横排,在小屏幕下是竖排,在超小屏幕下隐藏为菜单。
      rem布局:改变浏览器宽度,页面所有元素的高度都等比例缩放,也就是大屏幕下导航栏是横的,小屏幕下还是横的,只不过变小了。

 

五、响应式布局(Responsive Layout)

        随着CSS3出现了媒体查询技术,又出现了响应式设计的概念。响应式设计的目标是确保一个页面在所有终端上(各种尺寸的pc、手机、手表、冰箱的web浏览器等等)都能显示出令人满意的效果,对css编写者而言,在现实上不拘泥于具体手法,但通常是糅合了流式布局+弹性布局,再搭配媒体查询技术使用。分别为不同的屏幕分辨率定义布局,同时,在每个布局中,应用流式布局的理念,即页面元素宽度随着页面窗口而自动适配。即:创建多个流体式布局,分别对应一个屏幕分辨率范围。可以把响应式布局看做是流式布局和自适应理念的融合。

1. 布局特点

      每个屏幕分辨率下面会有一个布局样式,即元素位置和大小都会改变。

2. 设计方法

      媒体查询+流式布局。通常使用@media媒体查询和网格系统(grid system)配合相对布局单位进行布局,实际上就是综合响应式、流动等上述技术通过CSS给单一网页不同设备返回不同样式的技术统称

优点:适用pc端和移动端。
缺点:(1)媒体查询是有限的,也就是可以枚举出来的,只能适应主流的宽高。(2)要匹配足够多的屏幕大小,工作量不小,设计也需要多个版本。

响应式与自适应的对比

      响应式与自适应的原理是相似的,都是检测设备,根据不同的设备采用不同的css,而且css都是采用的百分比,而不是固定宽度。不同点是响应式的模板在不同的设备上看上去是不一样的,会随着设备的改变而改变展示样式,而自适应不会,所有的设备看起来都是一套模板,不过是长度或者图片变小了,不会根据设备采用不同的展示样式,流式就是采用了一些设置,当宽度大于多少时怎么展示,小于多少时展示,而且展示的方式像水流一样,一部分一部分的加载,静态的就是采用固定宽度。

流式布局是用于解决类似的设备不同分辨率之间的兼容(一般分辨率差异较少);响应式用于解决不同设备之间不同分辨率之间的兼容问题(一般是指PC、平板、手机等设备之间较大的分辨率差异)。

总结:

如果只做pc端开发,那么静态布局是最好的选择;
如果做移动端开发,且涉及对高度和元素间距要求不高,那么弹性布局是最好的选择,一份css+一份js调节font-size;
如果pc,移动要兼容,而且要求很高,那么响应式布局是最好的选择,前提是设计根据不同的宽度做不同的设计,响应式根据媒体查询做不同的布局。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

android系统启动流程之zygote(Native)启动分析

zygote有一部分运行在native,有一部分运行在java层,它是第一个进入java层的进程 zygote在启动时,在init.${ro.zygote}.rc脚本中,里面描述了zygote是如何被启动的, 当init进程解析到zygote.rc文件时,将根据解析出来的命…

No117.精选前端面试题,享受每天的挑战和学习

文章目录 断点续传怎么做的秒传怎么实现var let const 块级作用域ts Partial Omit 怎么实现的箭头函数有哪些限制箭头函数为什么不能作为构造函数promise常用apiMap和Object的区别vue怎么实现双向绑定 断点续传怎么做的 断点续传是指在文件下载或上传过程中,当连接…

【微信小程序遇到的坑】实现跨行跨列的表格

由于微信小程序组件中不带table标签&#xff0c;所以只能自己制作一个table表格&#xff0c;并且是实现跨行跨列的复杂表格。 直接上代码&#xff0c;即可预览效果 wxml <view class"table"><view class"tr tr_title">上午8:30-11:45</vi…

50.服务程序SERVICE_STATUS、SERVICE_STATUS_HANDLE、RegisterServiceCtrlHandler、SetServiceStatus、SERVICE_TABL

我得先总结一下步骤&#xff1a; 一、在main函数中的操作 1.先创建一个main主函数&#xff0c;在main主函数中创建创建一个服务程序入口函数列的结构体并将其初始化 机构体SERVICE_TABLE_ENTRY DispatchTable[2]; 假设定义的服务入口函数是(LPSERVICE_MAIN_FUNCTION)ServiceMa…

使用 SAP WebIDE 将 SAP UI5 应用部署到 ABAP 系统时遇到的关于传输请求的错误

有朋友遇到一个在 webide 里部署 SAP UI5 应用到 ABAP Repository 里时出错的问题&#xff1a; 错误消息&#xff1a; Failed to get transports for the selected package. Request POST /webidedispatcher/destinations/LND500/sap/bc/adt/cts/transportchecks failed: Forbi…

【操作记录】CLion 中引入 Gurobi 并使用 C++ 编程

文章目录 一、前言二、具体操作2.1 创建项目2.2 修改编译工具2.3 修改 CMakeLists.txt2.4 修改 main.cpp2.5 运行测试 一、前言 虽然C编程大部分人都会选择使用VS&#xff0c;但是作为 IDEA 的长期用户&#xff0c;我还是比较习惯 JetBrains 风格的编译器&#xff0c;所以就选…

7.11英语学习及笔记

《花木兰》 Based on a Chinese legend, the film follows the story of the titular hero – a young woman who poses as a man in order to take her ailing father’s place in the Imperial army, after the threat of the invading Huns requires a man from every house…

针对韩国开展的一系列韩文类恶意文档定向攻击行动分析 part-1

?点个关注&#xff0c;你的支持是我更新最大的动力? 最近朝鲜APT组织的攻击事件层出不穷&#xff0c;基于看到一篇很好的文章&#xff0c;特此结合文章对朝鲜相关组织进行分析。 Financial Security Institute对近期一系列投放韩文类恶意文档的定向攻击行动命名为“DOKKAEBI…

跨国邮件诈骗团伙案例

如果某天你收到了这样一封邮件&#xff0c;啊&#xff0c;大体意思就是这人身患绝症且有一笔遗产&#xff0c;你是个幸运儿要你继承。 重点来了啊&#xff0c;他会伪造证件然后让你相信并按照对方的思路来&#xff0c;给他你的身份信息&#xff0c;例如身份证照片&#xff0c;你…

springboot+vue+Elementui图书馆自习室座位预约系统

随着学校的人数的扩招,图书馆的座位资源短缺问题日益严重&#xff0c;特别是在临近考试时&#xff0c;座位占座情况尤为明显。起大早、摞书本、放水杯&#xff0c;甚至粘上纸条……宣誓主权&#xff0c;在图书馆里&#xff0c;很多学生办法用尽&#xff0c;只为了能获得“一席之…

SQLite3 极简教程 Go 使用 SQLite 内存模式操作数据结构

SQLite 简介 关键词: RDBMS (embedded), C SQLite is a database engine written in the C language. It is not a standalone app; rather, it is a library that software developers embed in their apps. SQLite是一个开源的、内嵌式的关系型数据库。它最初发布于2000年,…

致--所有努力生活的人们(暑假学习总结与考研宣誓)

致--所有努力生活的人们 确定专业和院校科研任务关于英语的学习退游喜欢的女孩备战数模比赛学习智能算法计算机素养的锻炼basketball对未来的展望 虽然文章写的虽然不是很好&#xff0c;但是很用心有诚意&#xff0c;我保证读完你会充满慢慢能量的&#xff01; 本blog记录了暑假…

有书共读:《穷查理宝典》

1. 写在前面 最近有幸参加了Datawhale举办的一些读书会活动&#xff0c;里面有很多伙伴分享自己读过的一些好书并分享自己的读书心得和感悟&#xff0c;体会非常的深刻&#xff0c; 也学习到了很多的知识&#xff0c; 所以受到了一些伙伴的影响&#xff0c;最近也开始在闲暇的…

以“人民的名义”劝你快去读点书

“我之前看一个调查&#xff0c;说中国人的读书量远低于世界平均水平&#xff1b;而且趋于图片化、碎片化&#xff0c;缺乏深度。这年头&#xff0c;你们还有个读书会&#xff0c;算是难得了”&#xff0c;陆亦可对赵东来说。“而且我们读的还是闲书&#xff0c;没有任何经济利…

第三讲,三维空间刚体运动

一个刚体在三维空间中的运动是如何描述的。我们当然知道这由一次旋转加一次平移组成。平移确实没有太大问题&#xff0c;但旋转的处理是件麻烦事。我们将介绍旋转矩阵、四 元数、欧拉角的意义&#xff0c;以及它们是如何运算和转换的。 1.向量&#xff0c;坐标系和旋转矩阵 点…

两独立样本的非参数检验(Mann-Whitney U 秩和检验)

原文地址&#xff1a;SPSS学习笔记之——两独立样本的非参数检验&#xff08;Mann-Whitney U 秩和检验&#xff09;作者&#xff1a;王江源 一、概述 Mann-Whitney U 检验是用得最广泛的两独立样本秩和检验方法。简单的说&#xff0c;该检验是与独立样本t检验相对应的方法&…

不止基因编辑 当所有技术都可能成为毒药

基因技术、纳米技术、机器人技术的新潘多拉之盒即将开启&#xff0c;你我却毫无查觉。我们不单受到大规模杀伤性武器的威胁&#xff0c;还有技术知识产生的大规模杀伤力。这一邪恶的力量&#xff0c;正由国家力量支持的大规模杀伤性武器&#xff0c;转向极端的个人。——Bill J…

市场的霸主:对冲基金世界的超额回报大师

《市场的霸主&#xff1a;对冲基金世界的超额回报大师》 基本信息 作者&#xff1a; (美)马妮特.阿胡贾(Maneet Ahuja) 译者&#xff1a; 毕崇毅 郑磊 出版社&#xff1a;机械工业出版社 ISBN&#xff1a;9787111425441 上架时间&#xff1a;2013-5-29 出版日期&#xff1a;201…

革命性新疗法后 第三例艾滋病治愈病例可能出现了!

伦敦病人的例子说明&#xff0c;柏林病人被治愈并非出于侥幸&#xff0c;而是可以被复制的。 艾滋病患者通常要终身每日服用病毒抑制药物。一旦停药&#xff0c;病毒就会在两三周内卷土重来。 新浪科技讯 北京时间3月12日消息&#xff0c;据国外媒体报道&#xff0c;一名德国艾…

SPSS学习笔记(三)方差分析ANOVA(F检验)

目录 一、单因素ANOVA 分析 过程 结果及分析 二、双因素ANOVA 案例及分析 过程 结果及分析 一、单因素ANOVA 单因素方差分析是两个样本平均数比较的引伸&#xff0c;它是用来检验多个平均数之间的差异&#xff0c;从而确定一种因素对试验结果有无显著性影响的统计方法…