”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何掌握 CSS 盒子模型以实现完美的网站布局(+ Codepen 示例)

如何掌握 CSS 盒子模型以实现完美的网站布局(+ Codepen 示例)

发布于2024-11-09
浏览:628

How to Master the CSS Box Model for Perfect Website Layouts (  Codepen examples)

嘿,了不起的人!欢迎回到我的博客。 ?今天,我们将深入研究 CSS 盒子模型,揭秘如何确定每个元素的大小,以及如何使用这些知识来创建精确、现代和简洁的设计(本文末尾的实际示例)。

盒子模型简介

CSS 盒子模型是网页设计的基础,它规定了每个 HTML 元素如何在网页中占据空间。

盒子模型组件详细分解

  1. Content :这是框的实际内容,其中包含文本、图像和其他元素。其大小由宽度和高度属性定义。

  2. Padding :这是边框内内容周围的空间。除非另有样式,否则填充是透明的。

  3. Border :环绕填充和内容。它可以用宽度、样式(例如,实线、虚线)和颜色来设置样式。

  4. Margin :这是边框之外的空间。它也是透明的并影响元素之间的间距

盒子模型的实际应用:

.example {
    width: 200px; /* Content width */
    height: 100px;
    padding: 10px; /* Adds 20px to both width and height */
    border: 5px solid #000; /* Adds 10px to both width and height */
    margin: 20px; /* Does not contribute to the element's dimensions but affects layout */
}

  • 总宽度计算:200px(内容)20px(内边距)10px(边框)= 230px

  • 总高度计算 : 100px 20px 10px = 130px

常见误解

  • 宽度/高度仅影响内容 :许多人认为设置宽度或高度定义了总大小,但这只是内容区域。

  • Box Sizing :没有 box-sizing:边框框,添加 padding 或 border 会增加元素超出其设置的宽度/高度。

可视化盒子模型:想象一下你有一个具有上述尺寸的盒子。这是视觉细分:

.box {
    background-color: #f0f0f0;
    width: 300px;
    height: 150px;
    padding: 20px;
    border: 10px solid #000;
    margin: 30px;
}
  • 内容区域:300x150px(灰色区域)

  • Padding :增加 20px 左右,将尺寸增加到 340x190px

  • Border :包围内边距,使最终框大小为 360x210px

  • Margin :在边框周围创建空间,但不直接计入元素的尺寸。

高级盒子模型技术

Box-Sizing 属性 : 使用 box-sizing: border-box 使 padding 和 border 包含在指定的宽度/高度中,简化设计:

* { box-sizing: border-box;}

此声明将适用于所有元素,使尺寸计算更加直观。

  • 百分比值 :与填充或边距一起使用时,相对于包含元素的宽度计算百分比。

  • Auto Margins : 设置边距:自动可以水平居中元素(如果使用 Flexbox,则垂直居中)。

盒子模型和布局注意事项

  • Floats :带有浮动的元素可能会导致边距折叠或重叠的意外行为。

  • Flexbox 和 Grid :这些现代布局方法以不同的方式处理边距。例如,弹性容器或网格单元中的边距不会像块级元素那样折叠。

  • 重叠元素:了解 z-index 和定位有助于管理元素重叠时的深度。

有效使用盒模型的技巧

  • 一致性设计:在整个项目中使用一致的框尺寸以避免尺寸计算错误。

  • 响应式设计:记住填充和边距如何缩放。填充的百分比值有助于保持不同屏幕尺寸之间的比例。

  • 调试 :如果元素看起来比预期更大或更小,请检查您的填充、边框和边距设置。

  • 轮廓的使用 :与边框不同,轮廓不会影响元素的尺寸,这在某些 UI 设计中很有用。

实际应用

1.响应式卡片布局/请查看Codepen上的代码。

解释:

  • Box-Sizing : 设置 box-sizing: border-box;确保内边距不会增加总宽度和高度,从而简化响应式设计。

  • 卡片布局 : .card 类定义一个具有固定宽度、圆角和深度阴影的容器。

  • 卡片图像 :充当尺寸由高度设置的图像的占位符。

  • 卡片内容 :这里,填充用于将内容与边框隔开。您可以在此处看到盒模型的运行情况;填充会增加卡片内的可点击区域,但不会增加卡片声明的宽度。

  • Margin :在 .card-title 和 .card-text 中巧妙地使用,以在卡片内分隔元素。

  • Button :样式看起来像典型的号召性用语,具有演示 CSS 过渡的悬停效果。

2.简单博文列表/请查看Codepen上的代码。

如果您需要对此示例的任何解释,请告诉我!我很乐意在评论中为您提供帮助!

结论

CSS 盒模型虽然理论上很简单,但其复杂性会影响我们设计和调试 Web 布局的方式。通过理解和掌握这个概念,您将能够更好地创建简洁、可预测和响应式的设计。


?您好,我是 Eleftheria,社区经理、 开发人员、公共演讲者和内容创建者。

?如果您喜欢这篇文章,请考虑分享。

所有链接 | X | 领英

版本声明 本文转载于:https://dev.to/eleftheriabatsou/how-to-master-the-css-box-model-for-perfect-website-layouts-codepen-examples-4opk?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何防止 Pandas 在保存 CSV 时添加索引列?
    如何防止 Pandas 在保存 CSV 时添加索引列?
    避免使用 Pandas 保存的 CSV 中的索引列使用 Pandas 进行修改后保存 csv 文件时,默认行为是包含索引列。为了避免这种情况,可以在使用 to_csv() 方法时将索引参数设置为 False。为了详细说明,请考虑以下命令序列:pd.read_csv('C:/Path/to/file....
    编程 发布于2024-11-09
  • 如何在 CSS 中设置表格单元格宽度:为什么最小宽度和最大宽度不起作用?
    如何在 CSS 中设置表格单元格宽度:为什么最小宽度和最大宽度不起作用?
    使用表格单元格的宽度属性尽管如此,最小宽度和最大宽度属性不适用于表格单元格。根据 CSS 规范,它们对表格单元格的影响未定义。替代解决方案要定义表格单元格的宽度,请改用 width 属性。它有效地设置表格单元格的最小和最大宽度。示例:td { width: 100px; }表格布局为了进一步...
    编程 发布于2024-11-09
  • 如何使用分块有效检索大型 MySQL 选择?
    如何使用分块有效检索大型 MySQL 选择?
    通过分块高效检索大型 MySQL 选择在 MySQL 中处理大型数据集通常会导致数据检索期间出现内存问题。为了解决这个问题,分块提供了一种有效的解决方案。分块技术分块涉及将大型选择查询拆分为较小的子集。通过这样做,您可以在可管理的部分中处理数据,从而防止内存限制。考虑以下示例:SELECT * FR...
    编程 发布于2024-11-09
  • 为什么在一行上声明多个对象指针会导致 C++ 中的编译器错误?
    为什么在一行上声明多个对象指针会导致 C++ 中的编译器错误?
    在一行上声明多个对象指针:解决编译器错误在同一行上声明多个对象指针时,开发人员经常遇到一个常见问题,可能会导致编译器错误。了解此问题的根本原因对于确保正确执行代码至关重要。考虑以下类声明:public: Entity() { re_sprite_eyes = new ...
    编程 发布于2024-11-09
  • 如何使用 CSS 剪辑路径和 JavaScript 实现反转文本颜色悬停效果?
    如何使用 CSS 剪辑路径和 JavaScript 实现反转文本颜色悬停效果?
    使用 CSS 和 JavaScript 反转鼠标悬停时的文本颜色实现所需的悬停效果,其中黑色文本反转为白色,同时保持出现黑色光标时,我们可以将 CSS 剪辑路径的功能与 JavaScript 事件处理结合起来。该方法包括创建两层文本:主文本层和反转文本层。倒置文本图层位于主文本图层后面,并将其文本颜...
    编程 发布于2024-11-09
  • 量子计算:它将如何重新定义技术
    量子计算:它将如何重新定义技术
    量子计算代表了 21 世纪最深刻的技术进步之一。与使用位来处理 0 或 1 信息的经典计算机不同,量子计算机使用可以同时存在于多种状态的量子位或量子位。计算领域的这一根本性转变有望重新定义技术,推动各个领域的突破并解决目前经典系统难以解决的问题。 在本文中,我们将探讨量子计算的工作原理、其潜在应用以...
    编程 发布于2024-11-09
  • 如何垂直对齐 a 内部?
    如何垂直对齐 a 内部?
    在 内垂直对齐 考虑以下情况:您有一个 嵌套在 < div>,如这段代码所示:&lt;div id="theMainDiv" style=" border:solid 1px gray; cursor:text; width...
    编程 发布于2024-11-09
  • 如何在PHP中存储和恢复数组以实现高效的离线访问?
    如何在PHP中存储和恢复数组以实现高效的离线访问?
    在 PHP 中存储和恢复数组以供本地访问您已从远程 API 获取数组并希望将其存储在本地以供离线使用操纵。为了实现这一目标,您可以在不影响性能或文件大小的情况下利用 JSON 序列化。JSON 序列化:编码和解码PHP 为 JSON 序列化提供了两个关键函数:json_encode 将数组转换为人类...
    编程 发布于2024-11-09
  • 如何使用 Docker 部署 Go 应用程序
    如何使用 Docker 部署 Go 应用程序
    Docker is a containerization platform that simplifies applications’ packaging, distribution, and deployment. You can harness the benefits of Go and Do...
    编程 发布于2024-11-09
  • 使用 JavaScript Web 组件和 LIT 构建可重用组件
    使用 JavaScript Web 组件和 LIT 构建可重用组件
    在当今快节奏的 Web 开发环境中,构建可重用和可维护的组件是关键。 JavaScript Web 组件 提供了一种原生方法来创建跨框架工作的独立、模块化元素。然而,手动创建这些组件可能既乏味又复杂。这就是 LIT 发挥作用的地方! LIT 简化了构建 Web 组件的过程,使管理状态、反应性和渲染...
    编程 发布于2024-11-09
  • 如何在 C++ 中传递给非主函数的数组上使用基于范围的 for 循环?
    如何在 C++ 中传递给非主函数的数组上使用基于范围的 for 循环?
    传递给非主函数的数组上基于范围的 for 循环在 C 中,基于范围的 for 循环可以是用于迭代数组。但是,当数组传递给非主函数时,它会衰减为指针,从而丢失其大小信息。要解决此问题并启用基于范围的 for 循环,数组应该被引用而不是作为指针传递。这保留了数组的大小信息。以下是演示正确方法的修改示例:...
    编程 发布于2024-11-09
  • array_column 与 PHP 中的对象数组兼容吗?
    array_column 与 PHP 中的对象数组兼容吗?
    在对象数组中使用 array_column 是否可行?PHP 的 array_column 函数是从多维数据中提取特定列的强大工具大批。然而,它与对象数组一起使用带来了挑战。在早期版本的 PHP 中,array_column 不支持对象数组。作为一种解决方法,可以使用 array_map 手动提取所...
    编程 发布于2024-11-09
  • 何时使用 PDO 而不是 mysql_real_escape_string 来转义 MySQL 查询?
    何时使用 PDO 而不是 mysql_real_escape_string 来转义 MySQL 查询?
    转义 MySQL 查询:PDO 与 mysql_real_escape_string虽然 mysql_real_escape_string 提供了一种转义 MySQL 查询并防止 SQL 注入的方法,但建议使用 PHP 数据对象 (PDO) )以增强安全性和多功能性。什么是 PDO?PDO 是 PH...
    编程 发布于2024-11-09
  • 如何将`std::string`转换为`LPCSTR`和`LPWSTR`?
    如何将`std::string`转换为`LPCSTR`和`LPWSTR`?
    将 std::string 转换为 LPCSTR 和 LPWSTR将 std::string 转换为 LPCSTR 或 LPWSTR 需要理解这些的本质指针。让我们澄清一下它们的定义:LPCSTR 与 LPSTR:LPCSTR:指向常量字符串的长指针,本质上是 const char*。LPSTR:指...
    编程 发布于2024-11-09
  • 黄瓜测试:综合指南
    黄瓜测试:综合指南
    Cucumber 是一款支持行为驱动开发 (BDD) 的开源测试工具,使团队能够用任何人都能理解的简单语言编写测试。通过弥合开发人员、测试人员和非技术利益相关者之间的差距,Cucumber 确保软件满足功能和业务需求。 在本文中,我们将深入探讨 Cucumber 测试是什么、它的主要功能以及如何在...
    编程 发布于2024-11-09

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3