自适应布局和响应式布局

news2024/9/24 11:21:08

写在前面

我们在开发的时候,经常会听到关于各种布局的概念,而且里面有些概念经常会混淆,这篇文章主要就是介绍一下静态布局、流式布局、自适应布局、响应式布局和弹性布局的特点和应用场景

布局的历史发展

随着互联网和相关设备的发展,前端的布局大概经历了这几个阶段:table布局阶段、div+css布局阶段、静态布局阶段、流式布局阶段、自适应布局阶段、响应式布局阶段、弹性布局阶段。前面两种布局已经基本上看不到了,而且现在的布局也越来越往弹性布局靠近。下面的内容主要是重点介绍一下后面几种布局。

静态布局

1. 静态布局的特点
  • 网页中所有元素的单位都是px.不管浏览器尺寸是多少,网页布局始终按照最初写代码的布局来显示,也就是说所有的屏幕看到的页面都是一样的。
  • 一般的网站(pc端)都是按照这种方式来布局的
  • 屏幕太小的话,页面会出现滚动条
  • 屏幕太大的话,页面会有很多的空白,整体页面布局不紧凑
2. 静态布局的原理

给主要容器设置一个min-width,居中布局。如果屏幕大小小于这个min-width,那么就会增加横向滚动条。如果屏幕大小大于这个宽度,那么就会居中显示,旁边留白的显示的底层的背景。

.container {min-width: 1190px;margin: 0 auto;.content {width: 1190px;}
} 
3. 静态布局的应用场景

一般用于官网(pc端)或者其他pc端网站。如果要在移动端显示,一般用的是另外的一套布局。 以京东官网为例:

3.1 屏幕比页面宽度大

3.3 特殊说明

京东官网并不是全部用的静态布局,里面还用到了媒体查询,但是这里的效果是和静态布局类似。

流式布局

1. 流式布局的特点

流式布局也称为液态布局,从名称我们就可以看出来,它的宽度是随着视口的变化而变化的。流式布局具有以下特点:

  • 屏幕大小变化,页面元素的大小也会跟着变化,但是布局不变
  • 屏幕太小的时候,页面内容挤成一坨,内容都重叠了,导致页面布局一团乱。
  • 屏幕太大的时候,页面会拉伸的很长,导致内容在一行显示很长,阅读习惯不好。
2. 流式布局的原理

页面最外层的容器的尺寸使用百分比搭配min-width和max-width来设置,高度一般还是使用px来设置。

.container {width: 100%;min-width: 1200px;.content {width: 50%;height: 400px;}
} 
3. 流式布局的应用场景

流式布局在早期的pc端布局中还是用的比较多的,但是在现在,不推荐这样使用,因为页面的宽度是随着屏幕的大小来变化的,但是高度还是固定的,就会导致在大屏幕上宽度被拉的很长,但是高度不变,布局看起来不太正常。 就像下面这种情况:

3.1 屏幕太大

3.2 屏幕太小

自适应布局

1. 自适应布局的特点
  • 分别为不同的分辨率的屏幕定义布局。每一个静态布局对应一个分辨率范围。
  • 在每个静态布局中,页面元素的尺寸不随屏幕大小的变化而变化。除非屏幕尺寸变化让页面从这个静态布局变成了另外一个静态布局。
  • 自适应布局虽然有好几套样式布局,但是对于用户来说网页是一样的,只是页面的元素的大小发生了变化。
2. 自适应布局的原理

针对不同分辨率采用@media媒体查询给不同范围的屏幕分别写一套样式布局,每一套样式布局采用的还是静态布局的方式。

2.1 添加元标签

// 添加元标签
<meta name="viewport" content="width=device-width, initial-scale=1" /> 

2.2 尽量少使用绝对宽度

2.3 字体使用相对大小

2.4 媒体查询

@media screen and (min-width: 768px) {.block{width: 680px;background-color: yellow;}
}
@media screen and (min-width: 1024px) {.block{width: 768px;background-color: blue;}
}
@media screen and (min-width: 1580px) {.block{width: 1190px;background-color: red;}
} 
3. 自适应布局的应用场景

自适应布局在pc端和移动端其实都会用到,也是目前网页开发中常常用到的布局方式之一。一般要么是针对pc端做自适应布局,要么针对移动端做自适应布局。如果要想同时兼容移动端和pc端,那么最好还是使用响应式布局啦。

响应式布局

响应式布局也会用到媒体查询,前面我们提到自适应布局是在不同的屏幕下看到的页面布局是一样,如果屏幕太小的话,即使对小屏幕进行适配,会发现页面还是过于拥挤,而响应式正式为了解决这个问题,它可以识别屏幕大小,还是根据屏幕大小调整页面的布局。

1. 响应式布局的特点
  • 屏幕大小变化,元素的大小和位置也会发生改变。
  • 能同时适应pc和移动端,在不同屏幕大小都有一个良好的布局。
2. 响应式布局的原理

响应式布局的三个原则:移动优先,@media媒体查询,流式布局(也称为液体布局)。其中首要的就是移动优先,移动优先指的是优先设置移动端(也就是小屏的布局),然后针对不同屏幕使用渐进增强。

2.1 添加元标签

<meta name="applicable-device" content="pc,mobile">
<meta http-equiv="Cache-Control" content="no-transform ">
<meta name="viewport" content="width=device-width, initial-scale=1"> 

2.2 移动优先

首先写好小屏幕的样式,也就是移动端的样式,推荐使用vw或者rem的方式来实现。具体参考我的另外一篇文章

2.3 媒体查询

写好小屏幕样式之后,需要测试一下小屏幕的各种适配情况,然后再使用媒体查询去根据不同的屏幕范围加载对应的样式,这里需要特别说明的是,需要跟设计统一好不同屏幕下的布局,毕竟在设计这块他们还是专业的。

@media screen and (min-width: 768px) {.block{width: 680px;background-color: yellow;}
}
@media screen and (min-width: 1024px) {.block{width: 768px;background-color: blue;}
}
@media screen and (min-width: 1580px) {.block{width: 1190px;background-color: red;}
} 

2.4 流式布局

尽量少给主容器元素设置具体的宽度,这里我推荐使用的是vw或者百分比的流式布局,然后其他的尺寸尽量使用相对单位。

3. 响应式布局的应用场景

响应式布局的应用场景就是需要同时兼容pc端和移动端的样式的布局一般都采用这种响应式布局,还有一些公司是pc端有一套样式,移动端也有一套样式,比如京东就是这样。像这种的话主要还是看公司业务需要。

弹性布局

1. 弹性布局的特点

弹性布局指的是页面能够根据屏幕的大小进行缩放,实现这种布局的方式有两种类型:

  • rem/vw: 实现页面的元素大小随着视口的变化而变化
  • flex: 实现页面的元素的自动增长和压缩
2. 弹性布局的原理
3. 弹性布局的应用场景
  • rem/vh: 主要应用到适配多种设备
  • flex: 主要应用到主容器的布局方式,比如三栏式布局、垂直居中布局、两列布局、等高布局等。

最后

最近还整理一份JavaScript与ES的笔记,一共25个重要的知识点,对每个知识点都进行了讲解和分析。能帮你快速掌握JavaScript与ES的相关知识,提升工作效率。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

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

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

相关文章

C#语言实例源码系列-鼠标设置

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册 &#x1f449;关于作者 众所周知&#xff0c;人生是一个漫长的流程&#xff0c;不断克服困难&#xff0c;不断反思前进的过程。在这个过程中…

DDL(保姆级教学)

目录 DDL&#xff1a; 1、数据库的创建&#xff1a; 2、由于重复创建同名数据库会报错 3、注意如果默认字符集为Latin1,其不支持中文&#xff0c;所以改为&#xff1a; 数据库的创建&#xff1a; 数据表的创建 属性的数据类型 1、数值类型&#xff1a; 2、字符串类型&a…

离散数学-用以图转化为矩阵并且求出这个矩阵的最大度最小度

题目: 从键盘输入无向图的邻接矩阵&#xff0c;判断输出该图结点最大度数、最小度数。 问题的分析&#xff1a; 对于一个图的输入&#xff0c;你一定会去使用二维数组来进行数据的存储&#xff0c;那么第一步就是建立一个二维数组&#xff0c;然后来进行输入&#xff0c;我下…

广域网技术——SRv6隧道类型及数据转发

目录 SRv6节点 节点角色 节点行为 SRv6数据转发隧道建立方式 SRv6 BE L3VPNv4 over SRv6 BE EVPN L3VPNv6 over SRv6 BE SRv6 TE Policy SRv6使用IPv6数据平面&#xff0c;基于IPv6扩展头进行扩展实现类似标签转发的处理 SR-MPLS在建立SR-MPLS隧道时&#xff0c;如果有…

Windows版本的Redis(新版本的GitHub地址)

Redis通常被称为数据结构服务器&#xff0c;因为值&#xff08;value&#xff09;可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型 Redis官网地址&#xff1a;Redis 关于Windows版本 Redis目前提供源码、Docker镜像、云版三种下载形…

利用@Retryable注解实现重试机制

Retryable 它可以作用在方法上&#xff0c;当方法抛出指定的异常时&#xff0c;整个方法将会被重新执行。在使用时需要先在pom.xml中导入相关依赖&#xff0c;再在启动类中添加EnableRetry注释以开启重试功能&#xff0c;最后在相应的方法上添加Retryable注释。 引入依赖 <…

【边缘检测】蚁群算法图像边缘检测【含Matlab源码 1189期】

⛄一、获取代码方式 获取代码方式1&#xff1a; 完整代码已上传我的资源&#xff1a;【边缘检测】基于matlab蚁群算法图像边缘检测【含Matlab源码 1189期】 获取代码方式2&#xff1a; 通过订阅紫极神光博客付费专栏&#xff0c;凭支付凭证&#xff0c;私信博主&#xff0c;可…

12.17 - 每日一题 - 408

每日一句&#xff1a; 我们生活在行动中&#xff0c;而不是生活在岁月里;我们生活在思想中&#xff0c;而不是生活在呼吸里。 数据结构 1 在有向图G的拓扑序列中&#xff0c;若顶点Vi在顶点Vj之前&#xff0c;则下列情形不可能出现的是______ A.G中有弧<Vi,Vj>B.G中有…

sqli-labs 通关笔记详解 Less1 - Less10

文章目录GET显错注入流程前置知识注入步骤GET盲注基本流程前置知识注入步骤Less - 1Less - 2Less - 3Less - 4Less - 5Less - 6Less - 7Less - 8Less - 10做sqli-labs靶场之前建议补一下基础 SQL注入简介和注入方法教学 Web安全基础-SQL MySQL SQLMAP工具 详细使用方法 GET显…

动态规划问题——换钱的最少货币数

题目&#xff1a; 给定数组arr&#xff0c;arr中所有的值都为正数且不重复。每个值代表一种面值的货币&#xff0c;每种面值的货币可以使用任意张&#xff0c;在给定一个整数aim&#xff0c;代表要找的钱数&#xff0c;求组成aim的最少货币数。 示例&#xff1a; arr [5,2,…

自动生成MySQL DDL建表语句

简介项目中大部分情况下都是使用MySQL数据&#xff0c;而且主要使用的数据库类型是char、varchar、date、datetime、timestamp、int、tinyint等几种常见的数据类型&#xff1b;而且进行表设计时&#xff0c;一般都要出一份表设计文档&#xff0c;例如表设计模板如下因为有了如此…

[附源码]Nodejs计算机毕业设计基于移动端的药方收集系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

【Spring】一文带你吃透IOC容器技术

目录 一、前言 二、IOC容器技术 1、ioc概念 2、DI依赖注入 2.1、构造注入依赖 2.2、setter注入依赖 3、ioc底层实现 4、基于xml配置声明Bean以及使用 4.1、根节点标签beans 4.2、声明Bean 4.3、Bean的使用 5、面向接口编程 5.1、新增接口IOrderService 5.2、Order…

非零基础自学Golang 第11章 文件操作 11.2 文件基本操作 11.2.2 文件读取

非零基础自学Golang 文章目录非零基础自学Golang第11章 文件操作11.2 文件基本操作11.2.2 文件读取第11章 文件操作 11.2 文件基本操作 11.2.2 文件读取 想要读取文件可以使用os库中的Read接口&#xff1a; func (f &#xff0a;File) Read(b []byte) (n int, err error)Re…

RCNN网络源码解读(Ⅳ) --- 训练SVM二分类模型的准备过程

目录 1.回忆上一讲及本讲我们要做什么 2.回顾finetune是怎么训练的&#xff08;finetune.py&#xff09; 3. 训练SVM二分类模型 &#xff08;linear_svm.py&#xff09; 3.1 load_data 3.2 custom_classifier_dataset.py 3.3 custom_batch_sampler.py 3.4 hinge_loss 1…

python制作问题搜索解答器,从此学习无忧

前言 大家早好、午好、晚好吖 ❤ ~ 今天博主给大家带来一个问题搜索解答器&#xff01;&#xff01; 需要素材 以及一双慧手和一个灵活的脑子~ 效果展示 代码展示 导入模块 import requests import tkinter as tk from tkinter import ttk import webbrowserdef search(wor…

北京车牌那么难摇为什么还能那么受欢迎?

在北京生活的人来说一块北京车牌真的影响正常生活&#xff0c;特别是这两年的疫情反复...&#xff0c;面对房贷房租&#xff0c;衣食住行&#xff0c;就算外面世界再纷纷扰扰&#xff0c;也要面对...所以在北京生活没有一辆北京车牌汽车真的很麻烦。 对于在北京生活的人来说就…

【C语言刷题】PTA基础编程题目集精选

作者&#xff1a;匿名者Unit 专栏&#xff1a; 《C语言刷题》 目录题目精选6-7 统计某类完全平方数6-9 统计个位数字6-10 阶乘计算升级版6-11 求自定类型元素序列的中位数题目精选 6-7 统计某类完全平方数 我们先看一下题目要求&#xff1a; 根据题目给出的要求&#xff1a…

瑞格科技IPO被终止:曾拟募资5.6亿 江振翔三兄弟为实控人

雷递网 雷建平 12月17日浙江瑞格智能科技股份有限公司&#xff08;简称&#xff1a;“瑞格科技”&#xff09;日前IPO被终止。瑞格科技计划募资5.59亿元&#xff0c;其中&#xff0c;2.55亿元用于年产1000万套汽车配件技改项目&#xff0c;9240万元用于年产500万件智能传感器及…

css深度选择器deep

1.为什么要有deep 1.当我们给组件设置scoped的时候&#xff0c;此时我们组件的css样式只会对自己的内容生效&#xff0c;不会对子组件里面的内容生效。 <style lang"scss" scoped> .login-page {min-height: 100vh;background: url(/assets/login-bg.svg) no-r…