【CSS进阶】常见的页面自适应的方法

在前端开发中,自适应布局(Responsive Design)是一种让网页能够适应不同屏幕尺寸、设备和分辨率的技术。常见的自适应布局方法包括 流式布局弹性布局(Flexbox)栅格布局(Grid)媒体查询(Media Queries)rem/vw/vh 等单位 以及 CSS 框架(如 Bootstrap)。


1. 媒体查询(Media Queries)

媒体查询 是 CSS 实现自适应布局的核心技术之一,允许根据屏幕尺寸、设备类型、分辨率等条件来应用不同的 CSS 样式。

示例:针对不同设备应用不同的 CSS

/* 默认样式:适用于大屏幕设备 */
body {font-size: 18px;background-color: lightblue;
}/* 平板设备(屏幕宽度小于 1024px 时) */
@media screen and (max-width: 1024px) {body {font-size: 16px;background-color: lightgreen;}
}/* 手机设备(屏幕宽度小于 768px 时) */
@media screen and (max-width: 768px) {body {font-size: 14px;background-color: lightcoral;}
}

原理:

  • 当屏幕宽度小于 1024px 时,字体大小调整为 16px,背景变为绿色。
  • 当屏幕宽度小于 768px 时,字体大小调整为 14px,背景变为红色。

适用场景

  • 适用于不同设备的 UI 适配,如 PC、平板、手机
  • 可以精细控制不同屏幕下的布局和样式。

2. 弹性布局(Flexbox)

Flexbox(弹性盒模型) 是 CSS3 提供的一种强大的布局方式,适用于一维(单行或单列)布局,能够自动调整子元素的大小和位置,以适应不同的屏幕尺寸。

示例:使用 Flexbox 让页面元素自动调整

.container {display: flex;flex-wrap: wrap;  /* 自动换行 */justify-content: space-between; /* 平均分布 */
}.item {width: 30%;height: 100px;background-color: skyblue;margin: 10px;text-align: center;line-height: 100px;font-size: 18px;
}
<div class="container"><div class="item">1</div><div class="item">2</div><div class="item">3</div>
</div>

原理:

  • display: flex;.container 变成一个 弹性盒子
  • flex-wrap: wrap; 允许子元素自动换行,适应小屏幕。
  • justify-content: space-between; 使子元素平均分布。

适用场景

  • 适用于 水平、垂直居中布局
  • 等比伸缩 的布局,如 导航栏、卡片式布局、列表

3. 栅格布局(CSS Grid)

Grid(CSS 栅格布局) 是 CSS3 提供的一种二维布局方式,可以定义行(row)和列(column),创建复杂的响应式布局。

示例:使用 CSS Grid 创建响应式网格布局

.container {display: grid;grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));gap: 10px;
}.item {background-color: lightseagreen;padding: 20px;text-align: center;color: white;font-size: 18px;
}
<div class="container"><div class="item">1</div><div class="item">2</div><div class="item">3</div><div class="item">4</div>
</div>

原理:

  • grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    
    • auto-fit 自动填充合适的列数。
    • minmax(200px, 1fr) 让列的最小宽度为 200px,最大宽度自动扩展。
  • gap: 10px; 控制网格间距。

适用场景

  • 适用于 复杂的网格布局,比如 新闻网站、相册
  • 自适应表格卡片式布局

4. 使用 remvwvh 单位

4.1 rem(相对字体大小)

rem 是相对于 HTML 根元素<html>)的 font-size 进行计算的,适用于字体大小的自适应设计。

html {font-size: 16px;  /* 默认字体大小 */
}h1 {font-size: 2rem;  /* 2 × 16px = 32px */
}p {font-size: 1rem;  /* 1 × 16px = 16px */
}

4.2 vwvh(视口单位)

vw(视口宽度的百分比)和 vh(视口高度的百分比)可以用于适应不同的屏幕尺寸。

.container {width: 80vw;  /* 视口宽度的 80% */height: 50vh; /* 视口高度的 50% */
}

适用场景

  • rem 适用于 字体自适应
  • vw/vh 适用于 全屏背景、弹窗、视频播放区域

5. 使用 CSS 框架(如 Bootstrap)

Bootstrap 是一个流行的前端框架,提供了内置的 响应式栅格系统,能够快速构建适配各种设备的网页。

示例:使用 Bootstrap 实现自适应布局

<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Bootstrap 响应式布局</title><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css">
</head>
<body><div class="container"><div class="row"><div class="col-md-4 col-sm-6 col-12">栏目1</div><div class="col-md-4 col-sm-6 col-12">栏目2</div><div class="col-md-4 col-sm-6 col-12">栏目3</div></div></div>
</body>
</html>

原理:

  • col-md-4 代表 中等屏幕(≥768px)占 4 列col-sm-6 代表 小屏幕(≥576px)占 6 列col-12 代表 超小屏幕(<576px)占满 12 列
  • 通过 Bootstrap 的 栅格系统,可以自动调整列的排列方式,适应不同设备。

适用场景

  • 适用于 企业网站、后台管理系统,能够快速搭建自适应页面。

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

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

相关文章

通过openresty和lua实现随机壁纸

效果&#xff1a; 图片存放路径&#xff1a; /home/jobs/webs/imgs/ ├── default/ │ ├── image1.jpg │ ├── image2.png ├── cats/ │ ├── cat1.jpg │ ├── cat2.gif ├── dogs/ │ ├── dog1.jpg访问http://demo.com/imgs/default 随机返回…

CAS单点登录(第7版)20.用户界面

如有疑问&#xff0c;请看视频&#xff1a;CAS单点登录&#xff08;第7版&#xff09; 用户界面 概述 概述 对 CAS 用户界面 &#xff08;UI&#xff09; 进行品牌化涉及编辑 CSS 样式表以及一小部分相对简单的 HTML 包含文件&#xff0c;也称为视图。&#xff08;可选&…

安全测试中的身份认证与访问控制深度解析

第一部分:基本概念与核心问题 1. 身份认证与访问控制基础 1.1 身份认证三要素 知识因素(密码、PIN码)持有因素(硬件令牌、手机)生物因素(指纹、面部识别)1.2 访问控制模型 DAC(自主访问控制)MAC(强制访问控制)RBAC(基于角色的访问控制)2. 关键安全机制 2.1 会话…

AI 编程工具—Cursor 进阶篇 数据分析

AI 编程工具—Cursor 进阶篇 数据分析 上一节课我们使用Cursor 生成了北京房产的销售数据,这一节我们使用Cursor对这些数据进行分析,也是我们尝试使用Cursor 去帮我们做数据分析,从而进一步发挥Cursor的能力,来帮助我们完成更多的事情 案例一 房产销售数据分析 @北京202…

算法1-1 玩具谜题

题目描述 小南有一套可爱的玩具小人&#xff0c;它们各有不同的职业。 有一天&#xff0c;这些玩具小人把小南的眼镜藏了起来。小南发现玩具小人们围成了一个圈&#xff0c;它们有的面朝圈内&#xff0c;有的面朝圈外。如下图&#xff1a; 这时 singer 告诉小南一个谜题&…

Java函数计算冷启动从8s到800ms的优化实录

在函数计算场景中,冷启动性能对用户体验至关重要。本文将分享如何将 Java 函数计算的冷启动时间从 8 秒优化到 800 毫秒,包括具体的技术手段和代码示例。 一、背景介绍 函数计算是一种事件驱动的计算服务,用户只需上传代码,无需管理服务器。但在实际使用中,函数计算的冷…

《AI大模型开发笔记》deepseek提示词技巧

为什么你的 AI 助手总是答非所问&#xff1f; 「写篇产品分析」 → 收到一堆不知所云的文字 「做个竞品对比」 → 得到几页没有重点的废话 揭秘&#xff1a;不是 AI 不够聪明&#xff0c;而是你的指令太“高冷”&#xff01; 一、新手进阶&#xff1a; 5 大法则&#xff0c;让…

二、OpenSM排障----实战生产

目录 一、确认 OpenSM 服务端故障的步骤 1. 检查客户端与服务器的连通性 2. 检查客户端 InfiniBand 接口状态 3. 检查子网管理器状态 4. 检查拓扑信息 5. 检查路由表 二、客户端日志位置及查看方法 1. 系统日志 2. OpenSM 客户端日志 3. 内核日志 4. 性能计数器日志…

[矩形绘制]

矩形绘制 真题目录: 点击去查看 E 卷 200分题型 题目描述 实现一个简单的绘图模块,绘图模块仅支持矩形的绘制和擦除 当新绘制的矩形与之前的图形重叠时,对图形取并集当新擦除的矩形与之前的图形重叠时,对图形取差集给定一系列矩形的绘制和擦除操作,计算最终图形的面积。 …

在软件产品从开发到上线过程中,不同阶段可能出现哪些问题,导致软件最终出现线上bug

在软件产品从开发到上线的全生命周期中&#xff0c;不同阶段都可能因流程漏洞、技术疏忽或人为因素导致线上问题。以下是各阶段常见问题及典型案例&#xff1a; 1. 需求分析与设计阶段 问题根源&#xff1a;业务逻辑不清晰或设计缺陷 典型问题&#xff1a; 需求文档模糊&#…

渲染相机设置 pyrender cameralib

目录 cameralib 设置相机 numpy获取相机参数: pyrender设置相机: hmr2渲染设置 multi_hmr获取cam_t cameralib 设置相机 cameralib安装教程: cameralib 安装-CSDN博客 import cameralibcamera = cameralib.Camera.from_fov(fov_degrees=55, imshape=(720,1280))intri…

ros:ur机械臂初识

这是用来可视化的launch文件 比如&#xff0c;我运行 roslaunch ur_description view_ur3.launch ur3模型 ur3e模型 ur5模型 ur5e模型 ur10模型 ur20模型 ur30模型 后来我搜了一下 UR5 和 UR10 都是由 Universal Robots&#xff08;简称 UR&#xff09;生产的协作机器人&…

【VSCode】一键清理旧版本插件脚本(Mac或者Windows都可)

文章目录 清理VSCode旧版本插件为什么会有旧版本插件Mac 环境脚本源码原理解释实例解释 Windows 环境 清理VSCode旧版本插件 为什么会有旧版本插件 vscode 插件经常需要更新的&#xff0c;有时候更新之后旧版本的插件还是会留存在插件文件夹中&#xff08;更新插件之后vscode…

制作一个项目用于研究elementUI的源码

需求&#xff1a;修改el-tooltip的颜色&#xff0c;发现传递参数等方法都不太好用&#xff0c;也可以使用打断点的方式&#xff0c;但也有点麻烦&#xff0c;因此打算直接修改源码&#xff0c;把组件逻辑给修改了 第一步下载源码 源码地址 GitHub - ElemeFE/element: A Vue.j…

【ClickHouse】Ubuntu下离线安装ClickHouse数据库并使用DBeaver连接

目录 0. 安装前准备1 安装ClickHouse1.1 下载安装包1.2 离线安装1.3 配置密码1.4 启动ClickHouse服务 2 DBeaver连接配置2.1 下载ClickHouse驱动2.2 DBeaver配置2.2.1 配置主要参数2.2.2 配置驱动 2.3 常见问题处理2.3.1 修改远程登录配置2.3.2 更新驱动配置 0. 安装前准备 有…

unity学习36:老版的动画 Animation

目录 1 unity关于动画的分为两种 2 旧版动画 Animation 2.1 添加Animation组件 2.2 对应的动画clip 2.3 动画的属性 3 如何做出一个简单动画 3.1 打开老的动画编辑器 3.2 Animation 窗口&#xff0c;拖到下面的game窗口一起 3.3 新建动画 3.4 动画编辑器 3.4.1 时间…

学习数据结构(9)栈和队列上

1.栈的概念 栈是一种特殊的线性表&#xff0c;只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作 的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出&#xff08;先进先出&#xff09;的原则 栈的插入操作叫做进栈/压栈/入栈&#xff…

【ESP32指向鼠标】——icm20948与esp32通信

【ESP32指向鼠标】——icm20948与esp32通信 ICM-20948介绍 ICM-20948 是一款由 InvenSense&#xff08;现为 TDK 的一部分&#xff09;生产的 9 轴传感器集成电路。它结合了 陀螺仪、加速度计和磁力计。 内置了 DMP&#xff08;Digital Motion Processor&#xff09;即负责执…

docker学习---第3步:docker实操大模型

文章目录 1.Images2.Container3.DockerfileENTRYPOINT和CMDCOPY和ADDLABLE、EXPOSE和VOLUME卷中的数据是如何做数据备份的&#xff1f; ARG和ENVHEALTHCHECK 4. Network&#xff08;本节讲容器与容器之间的通信方案&#xff09; 跟着b站 胖虎遛二狗学习 Docker动手入门 &…

无人机之无线传输技术!

一、Lightbridge和OcuSync图传技术 Lightbridge技术&#xff1a;这是大疆自主研发的一种专用通信链路技术&#xff0c;使用单向图像数据传输&#xff0c;类似于电视广播塔的数据传输形式。它主要采用2.4GHz频段进行传输&#xff0c;并且可以实现几乎“零延时”的720p高清图像传…