熟悉HTML CSS佈局模型

来源:http://www.cnblogs.com/JianweiWang/archive/2016/02/15/5190262.html
-Advertisement-
Play Games

HTML最難的地方來了!這個我反覆了很多遍, 包括現在寫博客, 也對我自己算是一種溫習, 我這塊怕是沒辦法寫的很好懂, 因為我自己還不能把我學到的準確通俗易懂的表達出來, 給自己記個筆記, 以後再來一點一點的改, 新手可以看看, 對於初學這塊的人應該還是有點幫助的. CSS佈局模型 以下全部是個人初


  HTML最難的地方來了!這個我反覆了很多遍, 包括現在寫博客, 也對我自己算是一種溫習, 我這塊怕是沒辦法寫的很好懂, 因為我自己還不能把我學到的準確通俗易懂的表達出來, 給自己記個筆記, 以後再來一點一點的改, 新手可以看看, 對於初學這塊的人應該還是有點幫助的.

  CSS佈局模型

  以下全部是個人初學HTML的一點理解, 哪裡錯了歡迎指正, 我也會改, 因為全程自學, 只能摸著石頭過河, 拜托大神們了.

  CSS佈局模型在我看來是和盒模型一樣的最核心的概念, 但是佈局模型是依托盒模型的, 它並不是準確意義上的佈局樣式或者是佈局模板, 再通俗點說, CSS佈局模型就是外在看到的樣子, 而且他不是你看看書就能懂的, 而是需要多多的練習, 

  佈局模型主要有三種:

    1, 流動模型(Flow)

    2, 浮動模型(Float)

    3, 層模型(Layer)

  流動模型, 是預設的網頁佈局模式. 網頁在預設狀態下的HTML網頁元素都是根據流動模型來分佈網頁內容的.

  特點: 塊狀元素都會在所處的包含元素內自上而下按順序垂直延伸分佈, 因為在預設狀態下, 塊狀元素的寬度都為100%, 實際上塊狀元素都會以行的形式占據位置, 而內聯元素都在在所處的包含元素內從左到右水平分佈顯示, 這基本上等同於對前面塊級元素和內聯元素的特性又做了一次總結.

  浮動模型

  浮動模型在我理解中也就是打破了Flow的一切規則, 它不再遵循流動模型的一切規則, 以一種自定義的方式將塊級元素和內嵌元素重新佈局. 預設下都是不浮動的, 但是可以定義為浮動, 只需要在CSS樣式表中加入float這個屬性, 代碼示例:

  div{

    float:left;

    }

  這句話的意思就是將這個<div>塊級元素設置為左浮動, 這個時候這個塊級元素也不再具有塊級元素的那些獨占一行, 元素寬度等等特點了, 也就是當設置為float的那一刻, 塊級和內嵌的特性就都消失了.

  層模型(這個可以講一天)

  層佈局模型在我看來就好像多個重疊的層級結構, 你通過代碼對每個層級的位置進行精確控制, css定位了一組定位屬性來支持佈局模型, 這個我自己理解的也並沒那麼透徹所以只簡單說說, 大家有興趣的去百度百度看看別人的博客, 我個人理解必然不如人家, 只能說給自己寫個學習筆記而已.

  層模型的三種形式:

    1, 絕對定位(position:absolute)

    2, 相對定位(position:relative)

    3, 固定定位(position:fixed)

  1, 絕對定位

  下麵完全不用書本上那種嚴謹的語言, 用我自己的理解給大家說, 絕對的意思就是, 一個層級放在另一個層級上面, 也就是一塊放在另一塊上, 子層級在父層級上面的精確坐標就是絕對定位, 給它一個絕對的值讓他不會亂動, 同樣的, 父層級移動了, 子層級也會跟著動, 也就是說這兩個相對的層級用絕對的佈局拴住了, 學習這你就使勁的敲就行了. 同時給大家一點層級的概念, <body>裡面有各種塊, 比如<div>, 那麼一塊<div>就可以理解為一個層級, 你對這個<div>的屬性做設置, 絕對定位, 那麼<div>就和<body>栓死了, 同樣的<div>裡面有一個<p>, <p>也設置絕對定位, 這個時候<p>的層級就是相對<div>了, <div>動, <p>也會在<div>裡面乖乖的跟著走, 綜上, 這就是絕對定位!

  代碼示例下

  div{

    width:200px;

    heigth:300px;

    border:2px red solid;

    position:absolute;

    left:100px;

    top:50px;

    }

  p{

    position:absolute;

   }

  這個時候<p>是<div>內部標簽的話, <p>相對<div>就已經鎖死了, 那麼這個時候我們修改p樣式表, 修改p在佈局中的位置, 比如用盒子模型修改外間距, 修改p在div中的佈局, 然後再去修改div的佈局, 會發現p的層級還會在div上, 緊緊的困在一起了. 感覺這種佈局應該是最常用的.

  2, 相對定位

  相對定位首先是將這一層級, 類似float方式浮動起來, 然後通過設置left, right, top, bottom屬性來確定這一層級相較於自己原本的位置, 但是這一層級本質上還是在原來那裡, 也就可以理解為視覺看到的是一個投影, 它本來還在那呢, 所以相對定位是不會影響其他位置元素的佈局的, 因為它是單獨浮動出來的. 這個不太好理解, 需要大家自己多寫多練. 感覺這種佈局應該是那種動畫什麼的很常用, 或者彈出的視窗? 我不確定啊, 不太敢說了.

  3, 固定定位

  這個好解釋效果, 平常看網站那些小廣告, 右下角啥的, 你划著屏幕, 他就在那裡, 不上不下, 這個效果就是固定定位, 它的定位並不是跟著佈局走的, 而是跟著相對瀏覽器走的. 嚴謹一點的說法是, 它的相對移動的坐標是網頁視窗本身. 由於視圖本身是固定的, 它不會隨瀏覽器視窗的滾動條滾動而變化, 除非你在屏幕中移動瀏覽器視窗的屏幕位置, 或改變瀏覽器視窗的顯示大小, 因此固定定位的元素會始終位於瀏覽器視窗內視圖的某個位置, 不會受文檔流動影響, 這與background-attachment:fixed;(定義背景圖片隨滾動軸的移動方式)屬性功能相同. 這個也不多介紹了, 和相對定位一樣, 多寫就好了.

  這三種定位方式是可以混在一起用的, 比如父元素用絕對定位, 子元素用相對定位等等, 是可以很靈活的佈局的, 學第一遍可能會懵, 第二遍會好一點, 第三遍基本就能懂了, 我學東西也是這個原則, 一個東西要學三遍才可以算是學了.


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 背景: 刷知乎時,老是需要用滑鼠點下一頁,對於懶人來說,太過麻煩。 功能: 敲擊 “←” 、“→”,實現上一頁、下一頁功能。 思路: 通過谷歌擴展來實現:監聽鍵盤事件,如果keycode為37、39時,進行上一頁、下一頁操作。 疑問: 本想著如果檢測到keycode為37、39時,直接觸發按鈕“上一
  • 今天跟大家分享的是一個依賴於angular的上傳控制項。 前段時間做項目遇到一個需求是上傳文件,大概需要實現的樣式是這樣子的,見下圖: 需要同時上傳兩個文件。並且規定文件格式和文件大小。因為前端框架使用angular,且不想因為一個上傳功能又引入一個jquery,所以在網上查找基於angular的上傳
  • 一說起CSS隱藏元素,我想大部分小伙伴們都會想到的第一種方法就是設置display為none。這是最為人所熟知也是最常用的方法。我相信還有不少人想到使用設置visibility為hidden來隱藏元素,這種方式也是常用的方法,而且也有很多人知道兩者的不同。除了這兩種方法,本文還總結了一些比較不常用的...
  • a.call和apply方法詳解 call方法: 語法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定義:調用一個對象的一個方法,以另一個對象替換當前對象。 說明: call 方法可以用來代替另一個對象調用一個方法。call 方法可將一個函數的對象上下文從初
  • 1. 創建單個元素節點:3步: 1. 創建空元素節點對象: var elem=document.createElement("標簽名"); 比如: var a=document.createElement("a"); html: <a></a> 2. 設置新元素的關鍵屬性: 比如: a.href="
  • 先來打個官腔, JavaScript是一種直譯式腳本語言, 是一種動態類型, 弱類型, 基於原型的語言, 內置支持類型, 它廣泛的應用於HTML網頁中, 給HTML網頁增加動態功能, 這門語言雖然叫做JavaScript, 但是和Java沒太大卵關係, 只是因為開發公司Netscape和Sun(Ja
  • javascript中showModalDialog()方法在IE,火狐,百度,360等瀏覽器可以使用,但是在谷歌瀏覽器下去沒有任何反應,現在我給大家一種方法,當然這個方法是我在網上找的,調試可以使用。 <script type="text/javascript"> //開啟模式視窗 functio
  • JavaScript一種直譯式腳本語言,是一種動態類型、弱類型、基於原型的語言,內置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用於客戶端的腳本語言,最早是在HTML(標準通用標記語言下的一個應用)網頁上使用,用來給HTML網頁增加動態功能。今天小編收集了5篇關於Jav
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...