前端css學習筆記6:盒子模型

本文為個人學習總結,如有謬誤歡迎指正。前端知識眾多,后續將繼續記錄其他知識點!

目錄

前言

一、組成

?編輯content

padding

border

margin

margin塌陷

margin合并

使用場景

標題與段落間距

卡片列表布局

二、內容溢出—overflow

三、隱藏元素

visibility

display

塊元素(塊級元素)—block

行內元素(內聯元素)—inline

行內塊元素(內聯塊元素)—inline-block

修改顯示模式

使用場景

(1) 行內元素適用場景

(2) 塊級元素適用場景

(3) 行內塊級元素適用場景


前言

例如:隨著人工智能的不斷發展,機器學習這門技術也越來越重要,很多人都開啟了學習機器學習,本文就介紹了機器學習的基礎內容。在網頁布局與設計中,盒子模型是最為核心和基礎的概念之一,它支撐起整個網頁的結構框架。理解盒子模型的組成、內容溢出的處理方式以及元素隱藏的實現方法,是掌握網頁布局技巧、打造美觀且功能完善的網頁界面的關鍵。本文介紹盒子模型的組成要素(包括content、padding、border、margin)、內容溢出時的處理屬性overflow,以及隱藏元素的常用方法(visibility和display)。希望這份筆記能為同樣正在學習CSS的同學提供參考,也歡迎大家結合原課程視頻深入學習,共同進步。

網課鏈接: https://www.bilibili.com/video/BV1p84y1P7Z5/?share_source=copy_web&vd_source=faad59aa4025692c65fca19bc4320e39


一、組成

CSS會把所有的HTML元素都看成一個盒子,所有的樣式也都是基于這個盒子。

1.margin(外邊距):盒子與外界的距離。

2.border(邊框):盒子的邊框。

3.padding(內邊距):緊貼內容的補白區域。

4.content(內容):元素中的文本或后代元素都是它的內容。

  • 盒子的大小=content+左右padding+左右border
  • 外邊距不影響盒子的大小,會影響盒子的位置(看是否給盒子指明width)
  • 只寫height和width的值,表明的是content的大小
  • 背景色也會填充邊框區域

content

拉動瀏覽器顯示時最大/小寬度和高度

默認寬度,不設置width屬性時,元素呈現的寬度—與父元素有關(子元素要出現在父元素的content區)

  • 總寬度=父的content-自身左右的margin
  • 內容區的寬度=父的content-自身左右的margin-自身左右的border-自身·左右的padding

    padding

    padding復合屬性的使用規則:

    1.padding:10px;四個方向內邊距都是10px

    2.padding:10px 20px;上下10px,左右20px。(上下、左右

    3.padding:10px 20px 30px;:上10px,左右20px,下30px。(上、左右、下)4.padding:10px 20px 30px 40px;上10px,右20px,下30px,左40px。(上、右、下、左)—順時針

    • 值不能為負數
    • 行內元素左右邊距沒問題,上下邊距不能完美設置
    • 塊級元素,行內塊元素,四個方向內邊距都可以完美設置

    border

    屬性

    作用

    屬性值

    border

    符合屬性,簡寫所有邊框屬性

    基本是width,color,style

    值沒有順序要求

    border: 1px solid red;

    border-width

    設置邊框寬度

    復合四個方向的邊框寬度

    長度,默認3px

    border-width: 2px;

    border-style

    定義邊框風格

    復合四個方向的邊框風格

    none:默認值

    solid:實線邊框線風格dashed:虛線

    dotted:點線

    double:雙實線

    。。。。

    border-style: dashed;

    border-color

    設置邊框顏色

    復合四個方向的邊框顏色

    顏色,默認黑色

    border-color: #00f;

    border-{side}

    border-left

    border-left-style

    border-left-width

    border-left-color

    border-right

    border-right-style

    border-right-width

    border-right-color

    border-top

    border-top-style

    border-top-width

    border-top-color

    border-bottom

    border-bottom-style

    border-bottom-width

    border-bottom-color

    設置邊框某一邊

    每一個border-{side} 屬性都有子屬性border-{side}-{width/style/color}

    同上

    border-top: 1px solid black; /* 上邊框 */

    border-right: 2px dashed red; /* 右邊框 */

    border-bottom: 3px dotted blue; /* 下邊框 */

    border-left: none; /* 左邊框無 */

    border-radius

    圓角邊框

    border-radius: 5px;

    分角設置

    border-radius: 10px 5px 20px 0; /* 左上 右上 右下 左下 */

    button {

    border: 2px solid #333;

    border-radius: 8px; /* 圓角按鈕 */

    }

    box-shadow

    邊框陰影

    box-shadow: 2px 2px 5px grey;

    透明邊框技巧

    通過 transparent 實現占位或懸停效果:

    .box {border: 2px solid transparent; /* 初始透明 */
    }
    .box:hover {border-color: gold; /* 懸停時顯示 */
    }
    • border-style、border-width、border-color其實也是復合屬性。

    margin

    margin復合屬性的使用規則:

    1.margin:10px;四個方向內邊距都是10px

    2.margin:10px 20px;上下10px,左右20px。(上下、左右

    3.margin:10px 20px 30px;:上10px,左右20px,下30px。(上、左右、下)4.margin:10px 20px 30px 40px;上10px,右20px,下30px,左40px。(上、右、下、左)—順時針

    注意

    • 父親的content中承裝著子元素,子元素要出現在父元素的內容區,所以子元素的margin是參考父元素的content計算的
    • margin-top,margin-left會影響自身位置;margin-bottom,margin-right會影響兄弟元素位置
    • 塊級元素,行內塊元素,四個方向內邊距都可以完美設置;行內元素左右margin是可以完美設置的,但是上下margin不能設置(設置后無效)
    • margin值可以為auto;塊級元素,margin-left,margin-right可以設置為auto,呈現其在父元素內水平居中;但是margin-top,margin-bottom不能設置auto(margin:0px auto)
    • 值可以是負數,兩個盒子層疊

    margin塌陷

    第一個子元素的上margin會作用在父元素上,最后一個子元素的下margin會作用在父元素上。

    解決方法

    • 方案一:給父元素設置不為0的padding。

    • 方案二:給父元素設置寬度不為0的border。(例如border:1px solid grey)

    • 方案三:給父元素設置css樣式overflow:hidden(不影響父元素容器的大小)

      • 使用overflow屬性控制溢出的部分,把溢出的部分隱藏(hidden)

    margin合并

    上面兄弟元素的下外邊距和下面兄弟元素的上外邊距會合并,取一個最大的值,而不是相加。當兩個或多個垂直相鄰塊級元素的上下外邊距相遇時,它們會合并成一個外邊距,其大小為兩者中的較大者。這種現象僅發生在垂直方向水平方向的外邊距不會合并。(行內元素的垂直方向由內容撐開,不能設置上下margin,不會發生外邊距合并)

    解決方案:無需解決,布局的時候上下的兄弟元素,只給一個設置上下外邊距(希望上下間距多少就設置多少,不必拆分成上margin與下margin)就可以了。

    使用場景

    標題與段落間距
    <h2 style="margin-bottom: 20px;">標題</h2>
    <p style="margin-top: 15px;">正文內容</p>
    <!-- 實際間距:20px -->

    優化:統一使用 margin-bottommargin-top 避免混亂。

    卡片列表布局
    <div class="card" style="margin-bottom: 16px;">卡片1</div>
    <div class="card" style="margin-top: 16px;">卡片2</div>
    <!-- 實際間距:16px(非32px) -->

    解決:僅對卡片設置 margin-bottom

    二、內容溢出—overflow

    內容溢出是指當元素的內容(文本、圖片、子元素等)超出其指定的寬度或高度時,內容超出容器邊界的現象。

    • visible 默認值,內容溢出容器并顯示在容器外 需要完全展示內容(可能破壞布局)
    • hidden 隱藏溢出部分 裁剪多余內容(如頭像圓形遮罩)

    三、隱藏元素

    visibility

    visibility屬性默認值是show,如果設置為hidden,元素會隱藏。元素看不見了,還占有原來的位置(元素的大小依然保持)

    display

    設置display:none,就可以讓元素隱藏。徹底地隱藏,不但看不見,也不占用任何位置,沒有大小寬高。display的值還可以控制是塊級元素/行內元素/行內塊級元素

    塊元素(塊級元素)—block

    • 頁面中獨占一行,不會與任何元素共用一行,是從上到下排列的。
    • 默認寬度撐滿父元素
    • 默認高度:由內容撐開。
    • 可包含行內和塊級元素
    • 獨占一行(前后自動換行)
    • 可以通過CSS設置寬高。
      • 主體結構標簽:<html> 、<body>
      • 排版標簽:<h1>~<h6>、<p>、<hr>、<pre><div>
      • 列表標簽:<ul>、<ol>、<li>、<dl>、<dt>、<dd>
      • 表格相關標簽:<table>、<tbody>、<thead>、<tfoot>、<tr><caption>
      • 表單<form>與下拉框選項<option>(下拉框slect是行內塊元素)

    行內元素(內聯元素)—inline

    • 在頁面中不獨占一行(多個可并列),一行中不能容納下的行內元素,會在下一行繼續從左到右排列。
    • 默認寬度:由內容撐開。
    • 默認高度:由內容撐開。
    • 不能包含塊級元素
    • 不換行,與其他行內元素同行
    • 無法通過CSS設置寬高
      • 文本標簽:換行/另起一行<br>、強調<em>、強調<strong>、文本上標<sup>、文本下標<sub>、表刪除文本<del>、表新增文本<ins>
      • 超鏈接<a>與表單控件關聯<label>

    注(這些都是邏輯上標簽,視覺效果可用css更改);

    行內塊元素(內聯塊元素)—inline-block

    • 頁面中不獨占一行,一行中不能容納下的行內元素,會在下一行繼續從左到右排列。
    • 默認寬度:由內容撐開。
    • 默認高度:由內容撐開。
    • 不換行,但可設置寬高
    • 可包含行內和塊級元素(和塊元素相同;其余同行內元素)
    • 可以通過CSS設置寬高(和塊元素相同;其余同行內元素)
      • ???????圖片:<img>
      • 單元格:<td>、<th>
      • 表單控件:<input>、<textarea>、<select>、<button>
      • 框架標簽:<iframe>

    注意:元素在html中只分為:行內元素、塊級元素,區分條件也只有一條:“是否獨占一行”,如果按照這種分類方式,行內塊元素應該算作行內元素

    修改顯示模式

    通過 display 屬性可改變元素的默認行為:

    span { display: block; }    /* 行內 → 塊級 */
    div { display: inline; }    /* 塊級 → 行內 */
    a { display: inline-block; } /* 行內 → 行內塊級 */
    p { display: none; } /* 元素會被隱藏,并且頁面將顯示為好像該元素不在其中 */

    使用場景

    (1) 行內元素適用場景
    • 文本修飾(如加粗 <strong>、斜體 <em>)。
    • 包裹少量文字或圖標(如 <span><a>)。
    (2) 塊級元素適用場景
    • 頁面布局容器(如 <div><section>)。
    • 結構性內容(如段落 <p>、標題 <h1>)。
    (3) 行內塊級元素適用場景
    • 水平排列但需控制尺寸的組件(如按鈕 <button>、輸入框 <input>)。
    • 圖文混排時對齊(如 vertical-align: middle

    本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
    如若轉載,請注明出處:http://www.pswp.cn/bicheng/93373.shtml
    繁體地址,請注明出處:http://hk.pswp.cn/bicheng/93373.shtml
    英文地址,請注明出處:http://en.pswp.cn/bicheng/93373.shtml

    如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

    相關文章

    以下是對智能電梯控制系統功能及系統云端平臺設計要點的詳細分析,結合用戶提供的梯控系統網絡架構設計和系統軟硬件組成,分點論述并補充關鍵要點:

    智能電梯控制系統功能及系統云端平臺設計要點一、梯控系統網絡架構設計服務本地化&#xff1a;電梯門禁服務器本地化部署&#xff1a;核心服務器部署在項目本地&#xff0c;確保數據安全、運維及時性&#xff0c;減少網絡依賴。需支持本地獨立運行&#xff0c;避免云端故障影響…

    全球電商業財一體化:讓出海品牌實現“看得見的增長“

    內外貿并行的數字化挑戰在數字經濟浪潮下&#xff0c;中國品牌呈現"雙輪驅動"增長態勢&#xff1a;一邊深耕天貓、京東、抖音等國內主流平臺&#xff0c;一邊通過Amazon、Tiktok、eBay、Temu等渠道拓展全球市場。然而&#xff0c;多平臺、多幣種、多地區的復雜運營環…

    Nacos-5--Nacos2.x版本的通信原理

    Nacos 2.x引入了gRPC作為其主要的通信協議&#xff0c;取代1.x版本中的HTTP長輪詢和UDP通信方式&#xff0c;顯著提升了性能、實時性和穩定性。gRPC是一個高性能、開源的遠程過程調用&#xff08;RPC&#xff09;框架&#xff0c;它基于HTTP/2標準設計&#xff0c;并使用Protoc…

    如何以開發者的身份開發出比python更好的應用軟件?

    作為一名擁有多年軟件架構經驗的開發者,我見證了Python從實驗室腳本語言成長為數字時代基礎設施的完整歷程。2008年我參與歐洲核子研究中心的粒子數據分析系統時,Python還是輔助工具,而今天它已成為驅動LIGO引力波探測的核心引擎——這種躍遷絕非偶然。 一、Python的巔峰應…

    zynq代辦事項

    測試verilog按鍵 1.0 按鍵->隊列->串口 1.1 按鍵模塊ming_key包括 按下,松開,單擊,雙擊,長按,事件 1.2 隊列模塊ming_fifo存儲按鍵發出的[事件和事件戳] 1.3 頂層模塊TOP 輪詢 ming_fifo,將讀到的事件用串口封裝成數據包發給串口助手 測試zynq的M_AXI_GP0 1.0 用axi_li…

    【Redis】Redis典型應用——緩存

    目錄 一.什么是緩存 二.使用Redis作為緩存 2.1.關系型數據庫的缺點 2.2.使用Redis作為MySQL的緩存 三. 緩存更新策略:識別熱點數據 3.1.定期更新 3.2.實時生成 四.緩存的使用注意事項 4.1.緩存預熱(Cache preheating) 4.2.關于緩存穿透 (Cache penetration) 4.3..關…

    C#控制臺項目,鼠標點擊后線程會暫停

    C#控制臺應用程序&#xff0c;點擊后就會暫停運行&#xff0c;但是我想讓它運行不受鼠標點擊的影響。 下面是程序演示&#xff1a;class Program{static void Main(string[] args){Console.WriteLine("Hello");int index 0;while(true){Console.WriteLine($"in…

    云計算-實戰 OpenStack 私有云運維:服務部署、安全加固、性能優化、從服務部署到性能調優(含數據庫、內核、組件優化)全流程

    簡介 此次圍繞OpenStack 私有云平臺的運維與開發展開,涵蓋了從核心服務安裝到深度優化的全流程實戰內容。文中詳細介紹了 OpenStack 各關鍵組件(如 Keystone、Glance、Nova、Neutron、Cinder 等)的安裝部署方法,包括使用腳本快速搭建服務、創建用戶、上傳鏡像、配置網絡等…

    流水的 AI,鐵打的騰訊

    騰訊 昨天騰訊公布了 2025 年第二季度的業績報告。 就還是那只鵝&#xff0c;就還是那個超預期。 總營收 1845 億&#xff0c;同比增長 15%&#xff1b;凈利潤 556.3 億&#xff0c;同比增長 17%&#xff1b;經營利潤 692.5 億&#xff0c;同比增長 18%。 這里面最炸裂的&#…

    再回C的進制轉換--負數

    概念 負數在計算機中以補碼的形式保存&#xff0c;以int類型的-15為例&#xff0c;求補碼先對-15取絕對值&#xff0c;然后對其按位取反(得到反碼)&#xff0c;然后加1&#xff0c;就可以得到其的補碼。 二進制的補碼 -15 (取絕對值)–> 15 --> (十六進制表示)0x000f (按…

    項目績效域-筆記

    一、項目管理績效域 1. 價值驅動的項目管理知識體系 1&#xff09;體系構成要素 核心轉變&#xff1a;從預測型生命周期&#xff08;計劃驅動&#xff09;轉向價值驅動體系&#xff0c;融合預測型和敏捷方法組成要素&#xff1a; 12個項目管理原則&#xff08;基礎&#xff09;…

    怎么判斷晶振的好壞,有什么簡單的辦法

    今天來聊聊晶振的好壞判斷方法&#xff0c;3個步驟輕松搞定。外觀檢查&#xff1a;先看臉&#xff0c;再看腳晶振體積雖小&#xff0c;但問題往往寫在“臉上”。第一步&#xff0c;用肉眼觀察&#xff1a;裂痕與破損&#xff1a;晶振表面如果有明顯裂紋或缺口&#xff0c;大概率…

    mac下載maven并配置,以及idea配置

    文章目錄下載配置settingsidea配置下載 https://maven.apache.org/download.cgi 我下的3.6.3 https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/ 配置 open ~/.zprofile添加&#xff0c;根據自己安裝路徑修改 export MAVEN_HOME/Users/xxx/tools/apache-mave…

    基于機器視覺的車道線檢測與跟蹤關鍵技術研究

    摘 要 隨著自動駕駛技術的迅速發展&#xff0c;車道線檢測與跟蹤技術在提高道路安全性和駕駛自動化水平方面發揮著至關重要的作用。本文針對基于機器視覺的車道線檢測與跟蹤關鍵技術進行了深入研究&#xff0c;旨在提升車道線檢測的準確性與系統的實時響應能力。通過采用先進的…

    flutter 跨平臺編碼庫 protobuf 工具使用

    1 安裝依賴 dependencies:protobuf: ^3.1.0 # 或最新版本flutter pub get安裝成功之后 1 lib 下創建文件夾 testProto 2 創建文件Student.proto 文件Student.proto 文件內容 syntax "proto3"; package example2;//導入其它proto文件 import "testProto/user.…

    【網絡】網絡模型總結復盤

    1.OSI七層模型是什么&#xff1f;答&#xff1a;是網絡通信分層模型&#xff0c;規范不同設備的通信流程應用層 如HTTP FTP文件傳輸 DNS域名解析 SSH遠程登錄 為用戶提高服務表示層 對數據進行格式轉換加密 如TLS/SSL會話層 負責建立會話 管理和終止會話傳輸層 提高數據的安全問…

    vscode的ws環境,esp32s3連接wifi

    注意大小寫&#xff0c;wsl&#xff08;也就是linux環境&#xff09;嚴格區分大小寫。有幫助記得訂閱專欄點贊&#xff0c;當前不定期持續更新。 一、文件夾格式 oled1/ # 項目根目錄 ├─ main/ # 主程序文件夾 │ ├─ main.c …

    面試題:如何用Flink實時計算QPS

    Flink 實時計算 QPS 面試題題目&#xff1a; 假設某互聯網應用日活用戶 100 萬&#xff0c;每天產生 1 億條數據&#xff08;日志/事件&#xff09;&#xff0c;要求使用 Apache Flink 實現實時計算系統的 QPS&#xff08;Queries Per Second&#xff09;&#xff0c;并考慮以下…

    Pytest項目_day12(yield、fixture的優先順序)

    yield yield可以用作fixture的后置操作 yield的執行位置和scope的范圍設置有關 當我們將scope設置為function時&#xff0c;yield就會在方法結束時執行yield后的代碼yield還可以返回數據&#xff0c;類似于return&#xff0c;不過yield之后的代碼會執行&#xff0c;而return不會…

    面試實戰 問題三十二 Java中創建對象的幾種方式

    Java中創建對象的幾種方式 在Java中&#xff0c;創建對象是面向對象編程的核心操作。對象創建不僅涉及直接實例化&#xff0c;還包括通過設計模式、反射機制等間接方式來實現。以下我將逐步解釋Java中常見的對象創建方式&#xff0c;每種方式都基于Java語言規范和相關設計原則。…