关于响应式布局,你需要了解的知识点

news2024/12/23 6:32:46

什么是响应式布局?

响应式布局,就是根据不同设备展示不同的布局,以免更方便用户浏览页面。 举个很简单的例子,我们在电脑上浏览网页,屏幕非常大,这时候可能采用的是如下图所示的布局方式。这种布局方式很宽敞,能够容纳的内容也很多,能够最大程度地传递信息。

美团官网PC屏幕

如果是在类似于 iPad Pro 的平板电脑上,由于屏幕大小原因,我们会使用不一样的布局。对于美团官网来说,他们就把顶部的导航栏隐藏起来,需要通过点击左上角的菜单按钮才能显示,如下图所示。

美团官网iPad屏幕

如果是在更小的手机屏幕上,那不仅导航栏要隐藏起来,就连下面的文章列表也只能一行显示一篇文章,如下图所示。

美团官网iPhone屏幕

总结一下,所谓的响应式布局,就是根据不同的浏览介质,制定不同的布局方案,以便于用户更好地浏览信息。

快速入门

了解完响应式布局原理,我们从代码层面来看看如何实现这样的响应式布局。

在 CSS3 中,定义了 @media 这个属性来实现响应式效果。例如我们希望在屏幕尺寸低于 768px 的时候显示黑色,大于 768px 的时候显示红色,那么我们可以这么写。

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title>响应式布局例子</title>
	<style type="text/css">
		body {
			background-color: black;
		}
		@media (min-width:768px) {
			body {
				background-color: red;
			}
		}
	</style>
</head>
<body>

</body>
</html>

上面代码的运行效果如下图所示。我们手动改变窗口的大小,当窗口的大小大于 768px 的时候,窗口的背景颜色变成了红色。当窗口大小小于 768px 的时候,窗口背景颜色变回了黑色。

20231214195709

在上面的代码中,最核心的代码是如下这段代码,如下代码所示。

@media (min-width:768px) {
	body {
		background-color: red;
	}
}

上面这段 CSS 表示:当宽度最小为 768px 的时候,窗口的背景颜色设置为红色。

这个例子只是为了简洁地向大家解释响应式布局的使用,在实际的项目使用中,响应式布局的使用会更加复杂一些。但无论如何复杂,它都是由最基本的单元组成。你理解了这个例子,你就能理解实战项目中的响应式布局。

实战案例

上面举了一个小案例,向大家简单说明了如何使用 @media 实现响应式布局。这里我再举一个实战项目的例子,让大家更深刻地理解响应式布局。

我们还是举美团官网这个例子:美团官网在浏览器宽度小于 1280px 的时候,会将导航栏隐藏起来。在导航栏宽度大于 1280px 的时候,会讲导航栏显示出来,如下图所示。

美团官网导航栏-PC与iPad对比

为了较好地解释实现原理,我们用如下的 html 代码代表美团导航栏的实现。

<div>
    <div class="pc"></div>
    <div class="ipad"></div>
</div>

那么美团官网是如何去实现这样的响应式效果的呢?

其实实现这样的效果很简单,只需要实现这样的逻辑即可:默认情况下,显示 ipad 类对应的 div 块,隐藏 pc 类对应的 div 块。当浏览器的宽度大于 1280px,那就隐藏 ipad 类对应的 div 块,显示 pc 类对应的 div 块。实现的 CSS 代码如下所示。

.pc {
  display: none;
}
.ipad {
  display: block;
}
@media (min-width:1280px) {
    .pc {
      display: block;
    }
    .ipad {
      display: none;
    }
}

随后,我们再继续在 pc 和 ipad 对应的 div 块中实现相应的 html 结构和 CSS 样式即可。在这个过程中,可能不仅涉及到隐藏,还会涉及到其他的布局变动,例如:在小屏幕时是 display: block,而在大屏幕的时候则是 display: flex。在小屏幕的时候可能是 flex-direction: column,而在大屏幕的时候则是 flex-direction: row等等。

对于设计师来说,响应式布局就是针对不同的屏幕媒介,设计不同的布局方式,让用户更简单方便地阅读信息。对于开发者来说,响应式布局就是使用 @mediadisplay:nonedisplay: flex 等各种工具,来实现设计师想要的各种布局方式。

响应式语法

弄清楚了响应式布局的道,我们还需要弄清楚响应式布局的术 —— 也就是语法!

对于响应式布局来说,它就只有一个语法 —— @media,它的语法格式如下所示。

@media not|only mediatype and (mediafeature and|or|not mediafeature) {
  CSS-Code;
}

上述语法可以分为两部分,分别是 mediatype 部分和 mediafeature 部分。

mediatype

mediatype 代表媒体类型,例如:电脑屏幕、平板电脑、打印机等。对于 mediatype 部分来说,其前面可以加上 not 或者 only 修饰符来分别表示「否」或者「只有」的意思。mediatype 常用取值有如下几个:

  • all 用于所有设备

  • print 用于打印机和打印预览

  • screen 用于电脑屏幕,平板电脑,智能手机等。

  • speech 应用于屏幕阅读器等发声设备

  • 等等

更多的媒体类型取值可参考:@media - CSS: Cascading Style Sheets | MDN。

举个很简单的例子,我们只想针对打印机或打印机预览使用某些 CSS 样式,那么我们可以这么写:

@media print {
  /* … */
}

如果我们只想对除了打印机或打印机预览之外的其他所有设备适用,那么我们可以这么写:

@media not print {
  /* … */
}

mediatype 部分可以不填,不填的时候默认取 all 值,表示对于所有设备都适用。

mediafeature

mediafeature 代表媒体特性,例如:颜色、宽度、高度等。对于 mediafeature 部分来说,其可以使用 and、or、not 来组成一组判断语句,从而实现更加复杂的功能。mediafeature 常用取值有如下几个:

  • height 定义输出设备中的页面可见区域高度

  • height 定义输出设备中的页面可见区域高度

  • min-resolution 定义设备的最小分辨率

  • max-resolution 定义设备的最大分辨率

  • grid 用来查询输出设备是否使用栅格或点阵

  • 等等

更多的媒体特性取值可参考:@media - CSS: Cascading Style Sheets | MDN

举个很简单的例子,我们想针对所有屏幕宽度小于768px的设备应用某些样式,那么我们可以这么写:

@media (max-width:768px) {
  /* … */
}

如果我们想针对所有屏幕宽度小于 768px 并且屏幕高度小于 500px 的设备应用某些样式,那么我们可以这么写:

@media (max-width:768px and max-height: 500px) {
  /* … */
}

总结

看到这里,相信大家都已经能理解响应式布局的含义了。

其实响应式布局并不难,其语法也很简单,更重要的是理解响应式布局背后的重要意义 —— 信息传递。在不同的信息传递媒介,为了阅读者地体验,我们应该设计不同的布局方式,需要思考应该传递哪些信息。我们只有拥有了这样的意识,我们才能做出让用户拍手叫好的产品,做出让用户用着感觉酣畅淋漓的作品!

按我自己的理解,目前响应式布局更多还是在各类官网的使用上,因为这些场景更看懂信息的传递,需要在不同的信息传递媒介都能有很好的体验效果。除此之外,其他的类似于管理后台、工具类站点,使用到响应式布局的需求还是非常少的。

文章转载自:陈树义

原文链接:https://www.cnblogs.com/chanshuyi/p/head-first-of-responsive-layout.html

项目体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构

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

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

相关文章

[陇剑杯 2021]日志分析

[陇剑杯 2021]日志分析 题目做法及思路解析&#xff08;个人分享&#xff09; 问一&#xff1a;单位某应用程序被攻击&#xff0c;请分析日志&#xff0c;进行作答&#xff1a; 网络存在源码泄漏&#xff0c;源码文件名是_____________。(请提交带有文件后缀的文件名&…

vue项目debugger调试看不到源码

vue项目debugger调试看不到源码 引用地址&#xff1a;vue项目debugger调试看不到源码_hua_ban_yu的博客-CSDN博客_vue项目网页源代码查看不了 在开发vue项目时&#xff0c;不知为啥进行debug但是查看不到页面源代码&#xff0c;尝试过很多方法&#xff0c;最后在看到大神相关…

WSL的安装与使用 (超详细图文版安装教程)

安装与使用 Windows Subsystem for Linux - WSL 安装&#xff08;两种方式均可实现WSL的安装&#xff09;图文版安装文字版安装步骤1&#xff1a;启用 WSL 功能步骤2&#xff1a;选择并安装 Linux 发行版步骤3&#xff1a;配置和使用 WSL步骤4&#xff1a;与 Windows 的互操作性…

探索高级AJAX技术:深入研究异步请求和响应处理

大家有关于JavaScript知识点不知道可以去 &#x1f389;博客主页&#xff1a;阿猫的故乡 &#x1f389;系列专栏&#xff1a;JavaScript专题栏 &#x1f389;ajax专栏&#xff1a;ajax知识点 &#x1f389;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 目录…

Docker-consul容器服务自动发现与注册

什么叫微服务或者注册与发现&#xff1f; 是一种分布式管理系统&#xff0c;定位服务的方法。 在传统的架构中&#xff0c;应用程序之间直连到已知的服务。 已知的服务&#xff1a;设备提供的网络、IP地址、基于tcp/ip端口 基于现微服务部署&#xff0c;服务的动态性&#…

在MDK开发调试过程中,发现程序正常运行,但是打断点无法进入。

在MDK开发调试过程中&#xff0c;发现程序正常运行&#xff0c;但是打断点无法进入。 打断点无法进入&#xff1a; 程序无法进行&#xff1a; 查找问题&#xff1a;这些都已经配置 上面都已经配置&#xff0c;最终发现: 勾选后进入断点成功。

以csv为源 flink 创建paimon 临时表相关 join 操作

目录 概述配置关键配置测试启动 kyuubi执行配置中的命令 bug解决bug01bug02 结束 概述 目标&#xff1a;生产中有需要外部源数据做paimon的数据源&#xff0c;生成临时表&#xff0c;以使用与现有正式表做相关统计及 join 操作。 环境&#xff1a;各组件版本如下 kyuubi 1.8…

Redis 过期删除策略、内存回收策略、单线程理解

不知从何开始Redis的内存淘汰策略也开始被人问及&#xff0c;卷&#xff01;真的是太卷了。难不成要我们去阅读Redis源码吗&#xff0c;其实问题的答案&#xff0c;在Redis中的配置文件中全有&#xff0c;不需要你阅读源码、这个东西就是个老八股&#xff0c;估计问这个东西是想…

微信小程序识别小程序码并传参

一、场景 连续看到几个类似关于小程序生成二维码场景的问题&#xff0c;分销的场景和单商品购买的页面居多 二、思路 #mermaid-svg-8CjFXSzutuF1OvO8 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-8CjFXSzutuF1…

中小企业业财融合策略(2):财务赋能,如何支持业务经营?

上一文《中小企业业财融合(1):把财务从琐碎的凭证处理、核算中解放出来!》&#xff0c;我们提出了财务升级的背景以及必要性&#xff0c;本篇我们就财务赋能&#xff0c;如何支持业务经营&#xff1f;提出一些简要的看法&#xff0c;希望对大家有所帮助。 一、财务赋能&#x…

com.sun.org.apache.xerces.internal.impl.dv.util.Base64

com.sun.org.apache.xerces.internal.impl.dv.util.Base64 Access restriction: The type Base64 is not API (restriction on required library D:\Java\jdk1.8.0_341\jre\lib\rt.jar) Maven Update Project 虽然没错误了&#xff0c;但是有警告&#xff0c;好奇&#xff1f;…

TCL实业,在智能时代风中起舞

从惠州的一个磁带厂起步&#xff0c;成长为智能终端、半导体显示、新能源光伏三大业务齐头并进的制造业大鳄&#xff0c;TCL是中国制造业穿越周期的一面旗帜。而作为国内电视品牌中唯一拥有上游供应链自主权的企业&#xff0c;C端用户往往更熟悉那个总是在电视终端领域拿出好产…

RT-DETR优化:ASF-YOLO提取多尺度特征 | 2023年12月最新成果

🚀🚀🚀本文改进: ASF-YOLO一种新的特征融合网络架构,该网络由两个主要的组件网络组成,可以为小目标分割提供互补的信息:(1)SSFF模块,它结合了来自u;(2)TFE模块,它可以捕获小目标的局部精细细节等 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学…

网络协议 - TCP 协议详解

网络协议 - TCP 协议详解 简述TCP头格式TCP的状态机数据传输中的Sequence NumberTCP重传机制超时重传机制快速重传机制SACK 方法Duplicate SACK – 重复收到数据的问题示例一&#xff1a;ACK丢包示例二&#xff0c;网络延误 TCP的RTT算法经典算法Karn / Partridge 算法Jacobson…

记录 | Microsoft Remote Desktop for mac安装

Microsoft Remote Desktop for mac安装 网上一些教程的下载安装老是跳转来跳转去&#xff0c;而且下载了的也不一定适用于 mac&#xff0c; 这里直接提供 Microsoft Remote Desktop for mac 的安装包的下载地址&#xff1a; microsoft-remote-desktop-for-mac

f盘隐藏的文件夹怎么找出来?介绍几种有效方法

在计算机中&#xff0c;我们经常会遇到隐藏的文件或文件夹&#xff0c;在F盘中隐藏的文件夹也不例外。隐藏的文件夹可能是由系统生成的&#xff0c;或者是用户自行设定的隐私文件夹。无论是因为误操作还是出于其他原因&#xff0c;如果你想找出F盘中的隐藏文件夹&#xff0c;本…

用EXCEL计算NTC、BS、电压等AD参数

前言 之前计算NTC的AD值算得很麻烦&#xff0c;因为51内核的单片机不支持除法运算&#xff0c;更别说浮点运算了。 EXCEL自动算出参数就显得很方便了。 有纰漏请指出&#xff0c;转载请说明。 学习交流请发邮件 1280253714qq.com 理论基础 参考这篇文章NTC热敏电阻温度采集…

数据常见的提取和筛选方法

平时对于一些不标准的数据&#xff0c;需要提取或者筛选其中的部分数据。本文主要分享一些常用的办法&#xff0c;同时也作为一个笔记的备份。 1. 正则表达式 正则表达式比较适合提取有明确类型的数据&#xff0c;比如字母&#xff0c;数字&#xff0c;汉字&#xff0c;日期等…

从GitHub下载的Android Studio项目,在较新版本AS打开出现版本不兼容问题的解决方法。

在GitHub下载了一个Android Studio计算器项目&#xff0c;打开项目后出现一系列问题&#xff0c;本文简单记录出现的问题及解决方法。 1、Gradle安装目录的路径出现错误 问题描述&#xff1a;The specified Gradle installation directory G:\Android\Android Studio\gradle\…

【腾讯云 HAI 域探秘】释放生产力:基于 HAI 打造团队专属的 AI 编程助手

文章目录 前言一、HAI 产品介绍二、HAI 应用场景介绍三、HAI 生产力场景探索&#xff1a;基于 HAI 打造团队专属的 AI 编程助手3.1 申请 HAI 内测资格3.2 购买 HAI 实例3.3 下载 CodeShell-7B-Chat 模型3.4 部署 text-generation-inference(TGI)推理服务3.4.1 下载 text-genera…