响应式布局学习笔记

什么是响应式布局?

响应式布局(Responsive Web Design)是一种网页设计方法,使网站能够根据设备屏幕尺寸(如手机、平板、电脑)自动调整内容和布局,提供最佳浏览体验。

如何调试响应式布局?

  1. 浏览器按F12打开开发者工具

  2. 点击开发者工具右上角的这个图标

  3. 之后便可以在上方调整页面大小并检查自己的页面了

核心实现技术

1. 视口设置

在HTML文件中添加以下<meta>标签,确保页面根据设备宽度缩放:

<meta name="viewport" content="width=device-width, initial-scale=1.0">

这个语句目的是告诉浏览器视口的宽度应该等于设备的屏幕宽度,确保内容能正确显示。

2. 媒体查询

通过CSS媒体查询针对不同屏幕尺寸应用不同样式:

/* 默认样式(移动优先) */
.container {padding: 10px;
}/* 平板(≥768px) */
@media (min-width: 768px) {.container {padding: 20px;}
}/* 桌面(≥1200px) */
@media (min-width: 1200px) {.container {max-width: 1140px;margin: 0 auto;}
}

​ 也就是说当屏幕大小小于768px时会应用第一个样式,而宽度大于768小于1200px则会应用第二个样式,大于1200px就用第三个。

​ 此外,也可以使用PC优先的写法:

/* 默认样式(PC优先) */
.container {max-width: 1140px;margin: 0 auto;
}/* 平板(≤1200px) */
@media (max-width: 1200px) {.container {padding: 20px;}
}/* 手机(≤768px) */
@media (max-width: 768px) {.container {padding: 10px;}
}

断点应如何选择呢:

这是常用响应式布局库bootstrap的方法,一般我们也可以通过这个标准来设定

3. Flex弹性布局(Flexbox)

详细教程可以看:Flex 布局语法教程 | 菜鸟教程

Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。

任何一个容器都可以指定为Flex布局。

例如:

.container {display: flex;flex-wrap: wrap; /* 允许换行 */gap: 20px;
}.item {flex: 1 1 300px; /* 基础宽度300px,可伸缩 */
}

可让每个item元素根据屏幕大小自适应调整大小,从而适应不同的设备。

4. 网格布局(CSS Grid)

好看的教程:CSS Grid 网格布局教程 - 阮一峰的网络日志

还有:CSS 网格布局 | 菜鸟教程

​ 可以通过网格布局让各个元素整齐排列在网页之中。

​ 网格布在布局将网页分成一个个网格,通过排布元素在网格中的大小与位置,我们可以轻松实现如下的效果:

在这里插入图片描述

创建自适应网格系统:

.grid-container {display: grid;grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));gap: 1rem;
}

实用小技巧

相对单位

绝对长度单位

​ 像素,或 px,是 CSS 中最常见的长度单位之一,一般指屏幕上一个像素点的大小。

​ 在 CSS 中,1 像素被定义为 1/96 英寸。所有其他的绝对长度单位都是基于这个像素的定义。

相对长度单位

rem

REMCSS3新增的单位。rem单位都是相对于根元素html的font-size来决定大小的,根元素的font-size相当于提供了一个基准。要想实现响应式布局,只需要改变font-size的值,那么以rem为固定单位的元素的大小也会发生响应的变化。 因此,如果通过rem来实现响应式的布局,只需要根据视图容器的大小,动态的改变font-size即可。

em 的区别

  • em:相对于父元素的字体大小
  • rem:始终相对于根元素(也就是HTML元素)的字体大小

示例:用rem实现响应式

<!DOCTYPE html>
<html lang="zh-CN">
<!--- 浏览器默认16px 62.5%就是10px --->
<head><meta name="viewport" content="width=device-width, initial-scale=1.0"><style>* {margin: 0;padding: 0;box-sizing: border-box;}.container {max-width: 120rem;margin: 0 auto;padding: 2rem;}.card {background: #f0f0f0;padding: 2.4rem;border-radius: 0.8rem;margin-bottom: 1.6rem;}h2 {font-size: 2.4rem;margin-bottom: 1.2rem;}p {font-size: 1.6rem;line-height: 1.5;}html {font-size: 62.5%;  /* 因为浏览器默认字体为16px,所以此处 1rem = 10px */}@media (max-width: 768px) {html {font-size: 50%; /* 1rem = 8px */}.container {padding: 1rem;}}</style>
</head>
<body><div class="container"><div class="card"><h2>响应式标题</h2><p>这是一个使用 rem 单位实现的响应式文本示例</p></div></div>
</body>
</html>

vh/vw

vhvw也是css3中新增的单位,他们分别是相对于视窗的高与视窗的宽设定的,1vh相当于视窗高的1%,相应的1vw相当于视窗宽的1%,此外还有vminvmax两个单位,分表示vh和vw中的最小值和最大值。

示例flex与vh/vw联合实现响应式布局

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta name="viewport" content="width=device-width, initial-scale=1.0"><style>* {margin: 0;padding: 0;box-sizing: border-box;}.fullscreen-banner {width: 100vw;height: 100vh;display: flex;justify-content: center;align-items: center;}.content {width: min(90vw, 800px);padding: 5vh 3vw;background: #f0f0f0;border-radius: 1rem;}h1 {font-size: clamp(2rem, 5vw, 3.5rem);margin-bottom: 3vh;}p {font-size: clamp(1rem, 2vw, 1.2rem);line-height: 1.6;}@media (max-width: 768px) {.content {padding: 3vh 5vw;}}</style>
</head>
<body><section class="fullscreen-banner"><div class="content"><h1>响应式视窗单位示例</h1><p>这个元素会根据视口尺寸自动调整大小和间距</p></div></section>
</body>
</html>

响应式图片

srcset属性

srcset属性为图片的源提供替代路径,下面的例子中,宽度大于1200px时会用large.jpg来替代,宽度大于768px会用medium.jpg替代

size属性的内容是指:如果视口宽度小于或等于768像素,图片将占据100%的视口宽度(100vw);否则,图片将占据50%的视口宽度(50vw)。

<img src="small.jpg" srcset="large.jpg 1200w, medium.jpg 768w"sizes="(max-width: 768px) 100vw, 50vw"alt="示例图片"
>

总结

​ 要想实现响应式布局,我们要尽量综合应用上述方案,例如使用rem调整字体大小和元素宽度,用grid实现元素分部,再加上媒体查询等作为基础,来完成多设备适配,让网页兼具美观性与舒适性。

参考文章

  1. 前端响应式布局原理与方案(详细版)

  2. 前端实现响应式布局的几种方法_前端响应式布局-CSDN博客

  3. CSS 单位指南:CSS em、rem、vh、vw 等详解

  4. Flex 布局语法教程 | 菜鸟教程

  5. 前端笔记:媒体查询和响应式布局_媒体查询响应式布局-CSDN博客

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

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

相关文章

Cursor 与团队协作:提升团队开发效率

引言 在团队开发中&#xff0c;代码质量参差不齐、重复错误频发、代码审查耗时过长是制约效率的三大痛点。据 GitHub 调查&#xff0c;开发者平均每周花费 4.3 小时修复他人代码问题&#xff0c;而 60% 的合并请求&#xff08;PR&#xff09;因风格或低级错误被驳回。Cursor 作…

rocketmq-netty通信设计-request和response

1、NettyRemotingServer启动分析 org.apache.rocketmq.remoting.netty.NettyRemotingServer#start public void start() {this.defaultEventExecutorGroup new DefaultEventExecutorGroup(nettyServerConfig.getServerWorkerThreads(),new ThreadFactory() {private AtomicI…

蓝桥杯之图

图&#xff1a; 对于图来说&#xff0c;重点在于之后的最短路径算法&#xff0c;这边简单做一下了解即可 代码&#xff1a; #include<iostream> #include<string> #include<vector> #include<list> #include<queue> using namespace std; clas…

mysql 学习15 SQL优化,插入数据优化,主键优化,order by优化,group by 优化,limit 优化,count 优化,update 优化

插入数据优化&#xff0c; insert 优化&#xff0c; 批量插入&#xff08;一次不超过1000条&#xff09; 手动提交事务 主键顺序插入 load 从本地一次插入大批量数据&#xff0c; 登陆时 mysql --local-infile -u root -p load data local infile /root/sql1.log into table tb…

143,【3】 buuctf web [GYCTF2020]EasyThinking

进入靶场 一开始那个题目名字就想到了框架 扫描目录 访问后自动下载了 找源码 <?php namespace app\home\controller;use think\exception\ValidateException; use think\facade\Db; use think\facade\View; use app\common\model\User; use think\facade\Request; use …

数据守护者:备份文件的重要性及自动化备份实践

在信息化社会&#xff0c;数据已成为企业运营和个人生活的重要组成部分。无论是企业的核心业务数据&#xff0c;还是个人的珍贵照片、重要文档&#xff0c;数据的丢失或损坏都可能带来无法估量的损失。因此&#xff0c;备份文件的重要性愈发凸显&#xff0c;它不仅是数据安全的…

PHP支付宝--转账到支付宝账户

官方参考文档&#xff1a; ​https://opendocs.alipay.com/open/62987723_alipay.fund.trans.uni.transfer?sceneca56bca529e64125a2786703c6192d41&pathHash66064890​ 可以使用默认应用&#xff0c;也可以自建新应用&#xff0c;此处以默认应用来讲解【默认应用默认支持…

vscode插件开发

准备 安装开发依赖 npm install -g yo generator-code 安装后&#xff0c;运行命令 yo code 运行 打开项目&#xff0c; 点击 vscode 调式 按 F5 或点击调试运行按钮 会打开一个新窗口&#xff0c;在新窗口按快捷键 CtrlShiftP &#xff0c;搜索 Hello World 选择执行 右下角出…

win11安装wsl报错:无法解析服务器的名称或地址(启用wsl2)

1. 启用wsl报错如下 # 查看可安装的 wsl --install wsl --list --online此原因是因为没有开启DNS的原因&#xff0c;所以需要我们手动开启DNS。 2. 按照如下配置即可 Google的DNS&#xff08;8.8.8.8和8.8.4.4) 全国通用DNS地址 (114.114.114.114) 3. 运行以下命令来重启 WSL…

mysql 存储空间增大解决方案

一&#xff1a;查询数据库中表占比比较多的表 SELECT table_name AS "Tables", round(((data_length index_length) / 1024 / 1024), 2) AS "Size (MB)" FROM information_schema.tables WHERE table_schema "自己的数据库名"; …

【MySQL】数据库基础库/表的操作数据类型详解

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;实战项目_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1.什么是数据库 2.主流数据库 3.基本使用 3.1 MySQL安装 3.2 连接服务器 3.3 服务器管理 3.4 服务器、数据库、表关系 3.5 …

【kafka系列】消费者

目录 获取消息 1. 消费者获取消息的流程逻辑分析 阶段一&#xff1a;消费者初始化 阶段二&#xff1a;分区分配与重平衡&#xff08;Rebalance&#xff09; 阶段三&#xff1a;消息拉取与处理 阶段四&#xff1a;偏移量提交 核心设计思想 2. 流程 关键点总结 常见参数…

仿叮咚买菜鸿蒙原生APP

# DingdongShopping 这是一个原生鸿蒙版的仿叮咚买菜APP项目 鸿蒙Next发布至今已经有一年多的时间了&#xff0c;但有时候我们想要实现一些复杂的功能或者效果&#xff0c;在开发文档上查阅一些资料还是比较费时的&#xff0c;有可能还找不到我们想要的内容。而社会层面上分享…

Linux 进程控制(进程创建,进程等待)

目录 进程创建 fork函数初识 fork函数返回值 写时拷贝 fork常规用法 fork调用失败的原因 进程终止 进程退出场景 进程退出码 进程常见退出方法 exit函数 _exit函数 return退出 return、exit和_exit之间的区别与联系 进程异常退出 进程等待 进程等待的必要性 获…

ROS2下Rviz显示orbbec相机depth深度图

ROS2下Rviz显示orbbec相机depth深度图 视频讲解 ROS2下Rviz显示orbbec相机depth深度图 在《ROS2下编写orbbec相机C package并Rviz显示》的基础上&#xff0c;继续添加depth图像的获取及显示 rgb_publisher_ this->create_publisher<sensor_msgs::msg::Image>("…

算法——结合实例了解Minimax算法(极小化极大算法)

计算机科学中最有趣的事情之一就是编写一个人机博弈的程序。有大量的例子&#xff0c;最出名的是编写一个国际象棋的博弈机器。但不管是什么游戏&#xff0c;程序趋向于遵循一个被称为Minimax算法&#xff0c;伴随着各种各样的子算法在一块。本篇将简要介绍 minimax 算法&#…

场外个股期权下单后多久成交?场外个股期权对投资组合的影响

对普通老板们而言&#xff0c;它如同精密手术刀——用得好可精准优化投资组合&#xff0c;用不好则可能伤及本金。记住两个关键&#xff1a;一是永远用"亏得起的钱"参与&#xff0c;二是把合约条款当"药品说明书"逐字研读。 场外个股期权下单后多久成交&am…

SolidWorks C# How

目录 1.如何创建C#插件程序? 2.插件程序需要继承的类是什么? 3.如何创建C#.net WPF程序? 4.WPF界面程序参考 5.如何获取类的框图 6.如何安装XCAD.net的 nuget包 7.如何扩展命令到菜单栏和工具栏 8.如何添加自定义面板 9.如何对文档管理进行编程 10.XCAD 开发solid…

【Go并发编程】Goroutine 调度器揭秘:从 GMP 模型到 Work Stealing 算法

每天一篇Go语言干货&#xff0c;从核心到百万并发实战&#xff0c;快来关注魔法小匠&#xff0c;一起探索Go语言的无限可能&#xff01; 在 Go 语言中&#xff0c;Goroutine 是一种轻量级的并发执行单元&#xff0c;它使得并发编程变得简单高效。而 Goroutine 的高效调度机制是…

华为昇腾 910B 部署 DeepSeek-R1 蒸馏系列模型详细指南

本文记录 在 华为昇腾 910B(65GB) * 8 上 部署 DeepSeekR1 蒸馏系列模型&#xff08;14B、32B&#xff09;全过程与测试结果。 NPU&#xff1a;910B3 (65GB) * 8 &#xff08;910B 有三个版本 910B1、2、3&#xff09; 模型&#xff1a;DeepSeek-R1-Distill-Qwen-14B、DeepSeek…