」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何掌握 CSS 盒子模型以實現完美的網站佈局(+ Codepen 範例)

如何掌握 CSS 盒子模型以實現完美的網站佈局(+ Codepen 範例)

發佈於2024-11-09
瀏覽:989

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如有侵犯,請聯絡study_golang @163.com刪除
最新教學 更多>
  • 如何干淨地刪除匿名JavaScript事件處理程序?
    如何干淨地刪除匿名JavaScript事件處理程序?
    刪除匿名事件偵聽器將匿名事件偵聽器添加到元素中會提供靈活性和簡單性,但是當要刪除它們時,可以構成挑戰,而無需替換元素本身就可以替換一個問題。 element? element.addeventlistener(event,function(){/在這里工作/},false); 要解決此問題,請考...
    程式設計 發佈於2025-05-17
  • 如何為PostgreSQL中的每個唯一標識符有效地檢索最後一行?
    如何為PostgreSQL中的每個唯一標識符有效地檢索最後一行?
    postgresql:為每個唯一標識符在postgresql中提取最後一行,您可能需要遇到與數據集合中每個不同標識的信息相關的信息。考慮以下數據:[ 1 2014-02-01 kjkj 在數據集中的每個唯一ID中檢索最後一行的信息,您可以在操作員上使用Postgres的有效效率: id dat...
    程式設計 發佈於2025-05-17
  • 切換到MySQLi後CodeIgniter連接MySQL數據庫失敗原因
    切換到MySQLi後CodeIgniter連接MySQL數據庫失敗原因
    無法連接到mySQL數據庫:故障排除錯誤消息要調試問題,建議將以下代碼添加到文件的末尾.//config/database.php並查看輸出: ... ... 迴聲'... echo '<pre>'; print_r($db['default']); echo '</pr...
    程式設計 發佈於2025-05-17
  • 如何在JavaScript對像中動態設置鍵?
    如何在JavaScript對像中動態設置鍵?
    在嘗試為JavaScript對象創建動態鍵時,如何使用此Syntax jsObj['key' i] = 'example' 1;不工作。正確的方法採用方括號: jsobj ['key''i] ='example'1; 在JavaScript中,數組是一...
    程式設計 發佈於2025-05-17
  • 如何使用Python有效地以相反順序讀取大型文件?
    如何使用Python有效地以相反順序讀取大型文件?
    在python 反向行讀取器生成器 == ord('\ n'): 緩衝區=緩衝區[:-1] 剩餘_size- = buf_size lines = buffer.split('\ n'....
    程式設計 發佈於2025-05-17
  • 如何將多種用戶類型(學生,老師和管理員)重定向到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-05-17
  • `console.log`顯示修改後對象值異常的原因
    `console.log`顯示修改後對象值異常的原因
    foo = [{id:1},{id:2},{id:3},{id:4},{id:id:5},],]; console.log('foo1',foo,foo.length); foo.splice(2,1); console.log('foo2', foo, foo....
    程式設計 發佈於2025-05-17
  • 在細胞編輯後,如何維護自定義的JTable細胞渲染?
    在細胞編輯後,如何維護自定義的JTable細胞渲染?
    在JTable中維護jtable單元格渲染後,在JTable中,在JTable中實現自定義單元格渲染和編輯功能可以增強用戶體驗。但是,至關重要的是要確保即使在編輯操作後也保留所需的格式。 在設置用於格式化“價格”列的“價格”列,用戶遇到的數字格式丟失的“價格”列的“價格”之後,問題在設置自定義單元...
    程式設計 發佈於2025-05-17
  • Go web應用何時關閉數據庫連接?
    Go web應用何時關閉數據庫連接?
    在GO Web Applications中管理數據庫連接很少,考慮以下簡化的web應用程序代碼:出現的問題:何時應在DB連接上調用Close()方法? ,該特定方案將自動關閉程序時,該程序將在EXITS EXITS EXITS出現時自動關閉。但是,其他考慮因素可能保證手動處理。 選項1:隱式關閉終...
    程式設計 發佈於2025-05-17
  • Java中假喚醒真的會發生嗎?
    Java中假喚醒真的會發生嗎?
    在Java中的浪費喚醒:真實性或神話? 在Java同步中偽裝喚醒的概念已經是討論的主題。儘管存在這種行為的潛力,但問題仍然存在:它們實際上是在實踐中發生的嗎? Linux的喚醒機制根據Wikipedia關於偽造喚醒的文章,linux實現了pthread_cond_wait()功能的Linux實現,...
    程式設計 發佈於2025-05-17
  • 如何在Chrome中居中選擇框文本?
    如何在Chrome中居中選擇框文本?
    選擇框的文本對齊:局部chrome-inly-ly-ly-lyly solument 您可能希望將文本中心集中在選擇框中,以獲取優化的原因或提高可訪問性。但是,在CSS中的選擇元素中手動添加一個文本 - 對屬性可能無法正常工作。 初始嘗試 state)</option> < o...
    程式設計 發佈於2025-05-17
  • 如何使用替換指令在GO MOD中解析模塊路徑差異?
    如何使用替換指令在GO MOD中解析模塊路徑差異?
    在使用GO MOD時,在GO MOD 中克服模塊路徑差異時,可能會遇到衝突,其中3個Party Package將另一個PAXPANCE帶有導入式套件之間的另一個軟件包,並在導入式套件之間導入另一個軟件包。如迴聲消息所證明的那樣: go.etcd.io/bbolt [&&&&&&&&&&&&&&&&...
    程式設計 發佈於2025-05-17
  • 在Python中如何創建動態變量?
    在Python中如何創建動態變量?
    在Python 中,動態創建變量的功能可以是一種強大的工具,尤其是在使用複雜的數據結構或算法時,Dynamic Variable Creation的動態變量創建。 Python提供了幾種創造性的方法來實現這一目標。 利用dictionaries 一種有效的方法是利用字典。字典允許您動態創建密鑰並...
    程式設計 發佈於2025-05-17
  • 為什麼HTML無法打印頁碼及解決方案
    為什麼HTML無法打印頁碼及解決方案
    無法在html頁面上打印頁碼? @page規則在@Media內部和外部都無濟於事。 HTML:Customization:@page { margin: 10%; @top-center { font-family: sans-serif; font-weight: ...
    程式設計 發佈於2025-05-17
  • 為什麼使用Firefox後退按鈕時JavaScript執行停止?
    為什麼使用Firefox後退按鈕時JavaScript執行停止?
    導航歷史記錄問題:JavaScript使用Firefox Back Back 此行為是由瀏覽器緩存JavaScript資源引起的。要解決此問題並確保在後續頁面訪問中執行腳本,Firefox用戶應設置一個空功能。 警報'); }; alert('inline Alert')...
    程式設計 發佈於2025-05-17

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3