前端基礎-CSS如何佈局以及文檔流

来源:https://www.cnblogs.com/ManyQian/archive/2018/05/31/9117417.html
-Advertisement-
Play Games

一、 網頁佈局方式 二、 標準流 三、 浮動流 四、 定位流 一、 網頁佈局方式 1、什麼是網頁佈局方式 佈局可以理解為排版,我們所熟知的文本編輯類工具都有自己的排版方式, 比如word,nodpad++等等 而網頁的佈局方式指的就是瀏覽器這款工具是如何對網頁中的元素進行排版的 2、網頁佈局/排版的 ...


一、 網頁佈局方式

 1、什麼是網頁佈局方式 佈局可以理解為排版,我們所熟知的文本編輯類工具都有自己的排版方式,

比如word,nodpad++等等 而網頁的佈局方式指的就是瀏覽器這款工具是如何對網頁中的元素進行排版的

  2、網頁佈局/排版的三種方式

    2.1、標準流
    2.2、浮動流
    2.3、定位流

二、 標準流

  標準流的排版方式,又稱為:文檔流/普通流,所謂的文檔流,指的是元素排版佈局過程中,元素會自動從左往右,從上往下的流式排列。

  1 、瀏覽器預設的排版方式就是標準流排版方式

  2 、在CSS中將元素分為三類:分別是 塊級 行內 行內塊級

  3、在標準流中有兩種排版方式,一種是垂直排版,一種是水平排版 垂直排版,如果元素是塊級元素,那麼就會垂直排版 水平排版,

如果元素是行內元素或行內塊級元素,那麼就會水平排版

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>

    <style type="text/css">
        div,h1,p {
            border: 1px solid red;
        }

        span,strong,b {
            border: 1px solid #000;
        }
    </style>
</head>
<body>
<div>我是div</div>
<h1>我是標題</h1>
<p>我是段落</p>

<span>span</span>
<strong>我是強調</strong>
<b>我是加粗</b>
</body>
</html>
實例

三、 浮動流

1、浮動流是一種半脫離標準流的排版方式那什麼是脫離文檔流?什麼又是半脫離文檔流?

1.1 什麼是脫離文檔流?

  1、浮動元素脫離文檔流意味著

    1、不再區分行內、塊級、行內塊級,無論是什麼級的元素都可以水平排版

    2、無論是什麼級的元素都可以設置寬高 綜上所述,浮動流中的元素和標準流總的行內塊級元素很像

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8">
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        /*
        不再區分行內、塊級、行內塊級,無論是什麼級的元素都可以水平排版:span和p都顯示到一行
        無論是什麼級的元素都可以設置寬高:span這種行內元素也可以設置寬高
        */
        .box1 {
            width: 100px;
            height: 100px;
            background-color: red;

            float: left;
        }
        .box2 {
            width: 100px;
            height: 100px;
            background-color: blue;

            float: left;
        }


    </style>
</head>

<body>

<span class="box1">我是span</span>
<p class="box2">我是段落</p>



</body>
</html>
實例

  2、浮動元素脫標文檔流意味著

    1、當某一個元素浮動走之後,那麼這個元素看上去就像被從標準流中刪除了一樣,這個就是浮動元素的脫標

    2、如果前面一個元素浮動走了,而後面一個元素沒有浮動,那麼垂直方向的元素會自動填充,浮動元素重新歸位後就會覆蓋該元素 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>浮動元素脫標</title>

    <style>
        .box1 {
            float: left;
            width: 100px;
            height: 100px;
            background-color: red;
        }

        .box2 {
            width: 150px;
            height: 150px;
            background-color: blue;
        }
    </style>
</head>
<body>
<div class="box1"></div>
<div class="box2"></div>


</body>
</html>
實例

註意點:

  1、浮動流只有一種排版方式,就是水平排版,它只能設置某個元素左對齊或者右對齊,沒有居中對齊,也就是沒有center這個取值

    2、一旦使用了浮動流,則margin:0 auto;失效

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8">
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        .header {
            width: 930px;
            height: 100px;
            border: 1px solid #000;

            margin: 0 auto;
        }

        .logo {
            width: 100px;
            height: 50px;
            background-color: yellow;
            float: left;
        }
        .nav {
            width: 300px;
            height: 50px;
            background-color: green;
            float: left;

            /*失效*/
            margin: 0 auto;
        }

    </style>
</head>

<body>

<div class="header">
    <div class="logo"></div>
    <div class="nav"></div>
</div>
實例
<!DOCTYPE html>
<html>
<head>
    <title>方式一:修改顯示方式為inline-block</title>
    <meta charset="utf-8">
    <style>
        .box1 {
            display: inline-block;
            width: 100px;
            height: 100px;
            background-color: red;
        }
        .box2 {
            display: inline-block;
            width: 100px;
            height: 100px;
            background-color: blue;

            /*
            當設置box2的margin-left足夠大時,第二個盒子就靠右面顯示了
            但是當瀏覽器界面縮小時,box2由於左邊的margin-left不夠930,則必須換一個新行顯示,就無法讓兩個盒子處於一行
            */
            margin-left: 930px;
        }

    </style>
</head>

<body>



<div class="box1"></div>
<div class="box2"></div>


</body>
</html>










<!DOCTYPE html>
<html>
<head>
    <title>方式二:用浮動的方式</title>
    <meta charset="utf-8">
    <style>
        .box1 {
            display: inline-block;
            width: 100px;
            height: 100px;
            background-color: red;

            float: left;
        }
        .box2 {
            display: inline-block;
            width: 100px;
            height: 100px;
            background-color: blue;

            float: right;
        }

    </style>
</head>

<body>



<div class="box1"></div>
<div class="box2"></div>


</body>
</html>
讓兩個元素顯示到一行,有兩種實現方式,一種是修改元素的顯示方式為inline-block,另外一種就是用浮動的方式

1.2、 那什麼又是半脫離文檔流?

脫離分為:半脫離與完全脫離, 其中完全脫離指的是元素原先在正常文檔流中所占的空間會關閉,就好像該元素原來不存在一樣

而之所以稱為半脫離:是因為浮動元素浮動之後的位置取決於它在浮動之前的標準流中的位置,跟標準流還是有一定的關係,
比如說浮動的元素在浮動之前處於標準流的第二行,那麼他浮動之後也是處於浮動流的第二行,不會去找其他行的浮動元素去貼靠,
打一個比方就是:浮動流就是在標準流上面覆蓋的一層透明薄膜,元素浮動之後就會被從標準流中扔到浮動流這個薄膜上,
他在這個薄膜上的位置還是以前在標準流的位置上找同方向的浮動元素進行貼靠,貼靠的準則就是:

(1)同一個方向上誰先浮動,誰在前面

(2)不同方向上左浮動找左浮動,右浮動找右浮動

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>浮動元素排序規則</title>

    <style>
        .box1 {
            float: left;

            width: 100px;
            height: 100px;
            background-color: red;
        }

        .box2 {
            width: 150px;
            height: 150px;
            background-color: blue;
        }

        .box3 {
            float: left;

            width: 250px;
            height: 250px;
            background-color: yellow;
        }


        .box4 {
            width: 300px;
            height: 300px;
            background-color: rebeccapurple;
        }
    </style>
</head>
<body>

<div class="box1">1</div>
<div class="box2">2</div>
<div class="box3">3</div>
<div class="box4">4</div>
浮動元素浮動之後的位置取決於它在浮動之前的標準流中的位置
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>浮動元素排序規則</title>

    <style>
        .box1 {
            float: left;

            width: 100px;
            height: 100px;
            background-color: red;
        }

        .box2 {
            float: left;

            width: 150px;
            height: 150px;
            background-color: blue;
        }

        .box3 {
            float: left;

            width: 250px;
            height: 250px;
            background-color: yellow;
        }


        .box4 {
            float: left;

            width: 300px;
            height: 300px;
            background-color: rebeccapurple;
        }
    </style>
</head>
<body>

<div class="box1">1</div>
<div class="box2">2</div>
<div class="box3">3</div>
<div class="box4">4</div>


</body>
</html>
同一個方向上誰先浮動,誰在前面
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>浮動元素排序規則</title>

    <style>
        .box1 {
            float: left;

            width: 100px;
            height: 100px;
            background-color: red;
        }

        .box2 {
            float: left;

            width: 150px;
            height: 150px;
            background-color: blue;
        }

        .box3 {
            float: right;

            width: 250px;
            height: 250px;
            background-color: yellow;
        }
              
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 組件化的項目開發中,組件應當劃分為三個層次:組件、模塊、頁面 微信小程式已經為開發者封裝好了基礎組件,頁面文件(pages)也有了詳細的規定 而模塊就需要自行開發,並且要和頁面文件區分開,這就涉及到自定義組件 一、基本用法 在根目錄下創建一個 components 目錄,用於存放自定義組件 組件也是 ...
  • 具體的看代碼,都寫在註釋里了,歡迎討論 ...
  • 層疊 CSS 是 **Cascading Style Sheets** 的縮寫,這暗示層疊(cascade)的概念是很重要的。在最基本的層面上,它表明CSS規則的順序很重要,但它比那更複雜。什麼選擇器在層疊中勝出取決於三個因素(這些都是按重量級順序排列的——前面的的一種會否決後一種): 1. 重要... ...
  • 當給幾個大小一樣有boder的盒子浮動時,會出現margin自動加起來的結果。 此時可以給每個盒子一個margin-left:-border的長來實現很好的效果,這樣右邊的盒子會把左邊盒子的右邊border壓住,如圖所示。 還可以使用偽元素實現動態效果,代碼如下。 ...
  • 博主使用了純HTML和CSS實現了JD的輪播圖,沒有加動態效果,主要是使用了定位的知識。 ,如圖為兩個側邊箭頭圖片。 實現瞭如下效果 ...
  • 前戲 到目前為止,我們已經學過了JavaScript的一些簡單的語法。但是這些簡單的語法,並沒有和瀏覽器有任何交互。 也就是我們還不能製作一些我們經常看到的網頁的一些交互,我們需要繼續學習BOM和DOM相關知識。 JavaScript分為 ECMAScript,DOM,BOM。 BOM(Browse ...
  • 1、JavaScript概述 2、JavaScript引入方式 3、JavaScript語言規範 4、JavaScript語言基礎 5、JavaScript數據類型 6、JavaScript運算符 7、JavaScript流程式控制制 8、JavaScript函數 9、JavaScript詞法分析 10 ...
  • 在CSS中,值的類型有很多種,一些很常見,一些你卻幾乎沒怎麼遇到過。我們不會在這篇文檔中面面俱到地描述他們,而只是這些對於掌握CSS可能最有用處的這些。本文將會涉及如下CSS的值: * 數值: 長度值,用於指定例如元素寬度、邊框(border)寬度或字體大小;以及無單位整數。用於指定例如相對線... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...