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

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

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

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]删除
最新教程 更多>
  • 如何简化PHP中的JSON解析以获取多维阵列?
    如何简化PHP中的JSON解析以获取多维阵列?
    php 试图在PHP中解析JSON数据的JSON可能具有挑战性,尤其是在处理多维数组时。 To simplify the process, it's recommended to parse the JSON as an array rather than an object.To do...
    编程 发布于2025-07-08
  • 如何使用PHP将斑点(图像)正确插入MySQL?
    如何使用PHP将斑点(图像)正确插入MySQL?
    essue VALUES('$this->image_id','file_get_contents($tmp_image)')";This code builds a string in PHP, but the function call ...
    编程 发布于2025-07-08
  • 在细胞编辑后,如何维护自定义的JTable细胞渲染?
    在细胞编辑后,如何维护自定义的JTable细胞渲染?
    在JTable中维护jtable单元格渲染后,在JTable中,在JTable中实现自定义单元格渲染和编辑功能可以增强用户体验。但是,至关重要的是要确保即使在编辑操作后也保留所需的格式。在设置用于格式化“价格”列的“价格”列,用户遇到的数字格式丢失的“价格”列的“价格”之后,问题在设置自定义单元格...
    编程 发布于2025-07-08
  • PHP SimpleXML解析带命名空间冒号的XML方法
    PHP SimpleXML解析带命名空间冒号的XML方法
    在php 很少,请使用该限制很大,很少有很高。例如:这种技术可确保可以通过遍历XML树和使用儿童()方法()方法的XML树和切换名称空间来访问名称空间内的元素。
    编程 发布于2025-07-08
  • 如何将多种用户类型(学生,老师和管理员)重定向到Firebase应用中的各自活动?
    如何将多种用户类型(学生,老师和管理员)重定向到Firebase应用中的各自活动?
    Red: How to Redirect Multiple User Types to Respective ActivitiesUnderstanding the ProblemIn a Firebase-based voting app with three distinct user type...
    编程 发布于2025-07-08
  • 使用jQuery如何有效修改":after"伪元素的CSS属性?
    使用jQuery如何有效修改":after"伪元素的CSS属性?
    在jquery中了解伪元素的限制:访问“ selector 尝试修改“:”选择器的CSS属性时,您可能会遇到困难。 This is because pseudo-elements are not part of the DOM (Document Object Model) and are th...
    编程 发布于2025-07-08
  • 如何使用Depimal.parse()中的指数表示法中的数字?
    如何使用Depimal.parse()中的指数表示法中的数字?
    在尝试使用Decimal.parse(“ 1.2345e-02”中的指数符号表示法表示的字符串时,您可能会遇到错误。这是因为默认解析方法无法识别指数符号。 成功解析这样的字符串,您需要明确指定它代表浮点数。您可以使用numbersTyles.Float样式进行此操作,如下所示:[&& && && ...
    编程 发布于2025-07-08
  • 解决MySQL插入Emoji时出现的\\"字符串值错误\\"异常
    解决MySQL插入Emoji时出现的\\"字符串值错误\\"异常
    Resolving Incorrect String Value Exception When Inserting EmojiWhen attempting to insert a string containing emoji characters into a MySQL database us...
    编程 发布于2025-07-08
  • 如何使用Python理解有效地创建字典?
    如何使用Python理解有效地创建字典?
    在python中,词典综合提供了一种生成新词典的简洁方法。尽管它们与列表综合相似,但存在一些显着差异。与问题所暗示的不同,您无法为钥匙创建字典理解。您必须明确指定键和值。 For example:d = {n: n**2 for n in range(5)}This creates a dicti...
    编程 发布于2025-07-08
  • PHP与C++函数重载处理的区别
    PHP与C++函数重载处理的区别
    作为经验丰富的C开发人员脱离谜题,您可能会遇到功能超载的概念。这个概念虽然在C中普遍,但在PHP中构成了独特的挑战。让我们深入研究PHP功能过载的复杂性,并探索其提供的可能性。在PHP中理解php的方法在PHP中,函数超载的概念(如C等语言)不存在。函数签名仅由其名称定义,而与他们的参数列表无关。...
    编程 发布于2025-07-08
  • 如何在无序集合中为元组实现通用哈希功能?
    如何在无序集合中为元组实现通用哈希功能?
    在未订购的集合中的元素要纠正此问题,一种方法是手动为特定元组类型定义哈希函数,例如: template template template 。 struct std :: hash { size_t operator()(std :: tuple const&tuple)const {...
    编程 发布于2025-07-08
  • FastAPI自定义404页面创建指南
    FastAPI自定义404页面创建指南
    response = await call_next(request) if response.status_code == 404: return RedirectResponse("https://fastapi.tiangolo.com") else: ...
    编程 发布于2025-07-08
  • 大批
    大批
    [2 数组是对象,因此它们在JS中也具有方法。 切片(开始):在新数组中提取部分数组,而无需突变原始数组。 令ARR = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    编程 发布于2025-07-08
  • Java数组中元素位置查找技巧
    Java数组中元素位置查找技巧
    在Java数组中检索元素的位置 利用Java的反射API将数组转换为列表中,允许您使用indexof方法。 (primitives)(链接到Mishax的解决方案) 用于排序阵列的数组此方法此方法返回元素的索引,如果发现了元素的索引,或一个负值,指示应放置元素的插入点。
    编程 发布于2025-07-08

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

Copyright© 2022 湘ICP备2022001581号-3