佈局用position還是float?

来源:http://www.cnblogs.com/huihuipan163/archive/2016/04/30/5447938.html
-Advertisement-
Play Games

初入前端。在學習上總會有很多問題。這次就網頁佈局來講講。 網頁佈局在現代已經不再是什麼難事,幾乎所有頁面都能做好一個能拿得出手的佈局,在現在招聘網站上也有好多要求什麼div+css佈局的,簡直不知所言。 前端不懂佈局就沒法繼續前了。那麼怎麼佈局呢。 細心一點就會發現,css裡面竟然沒有專門為佈局而設 ...


  初入前端。在學習上總會有很多問題。這次就網頁佈局來講講。

  網頁佈局在現代已經不再是什麼難事,幾乎所有頁面都能做好一個能拿得出手的佈局,在現在招聘網站上也有好多要求什麼div+css佈局的,簡直不知所言。

  前端不懂佈局就沒法繼續前了。那麼怎麼佈局呢。

  細心一點就會發現,css裡面竟然沒有專門為佈局而設定的屬性。而能達到佈局效果的,主要就是用position和float這兩個屬性了。

  在分析兩個屬性之前,先聊一下<div>。

  html標簽裡面,div是常用於佈局的盒子,是一個塊級元素,塊級元素的自帶屬性就是display:block。可設寬度和高度,在文檔流中獨占一行,就是說如果想要有兩個div併排的話,就要採取手段了。

  下麵兩個屬性的用法。

  float

  中文翻譯是叫做浮動,如果你用word比較多的話,應該不難理解浮動的意思。<div>設置樣式屬性float:left之後,會允許下麵的塊級元素在器右邊併排,如果這兩個元素的寬度超出父元素的寬度,那麼本該在旁邊的塊級元素就會浮動到下一行,並且只到遇到下一個同級的塊級元素設置的clear:left才會停止。另外間距需要使用margin屬性來控制。

  優點:該元素的內容不會脫離文檔流,父級元素可以讓子元素撐起來。所謂撐起來就是比如父元素的寬 、高能自適應。

  缺點:說實話個人經常忘記加clear,所以不喜歡用float去佈局。另外由於是浮動的。文檔流不會出現重疊的情況。有時候佈局會亂掉。

  position

  中文翻譯叫定位。position有四個值,static(沒有定位),fixed(固定定位),relative(相對定位),absolute(絕對定位);

  static很少用(幾乎沒用過),暫且不聊;position:relative可用與微調,在原位置上通過top、left、right、bottom來偏移距離。設置了position:absolute的塊級元素會脫離文檔流,就是說如果設置了float,float是沒有效果的,並且能出現兩個塊級元素重疊的效果,position:absolute的父級元素一般會設置position:relative,用於限制position:absolute的活動範圍。

  優點:簡直就是坐標系,指哪打哪。給我一堆鬆散同級的元素都能布出一個漂亮的局。

  缺點:子元素脫離了文檔流,父級元素的自適應沒有了,高度不再自適應。

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

  那麼佈局用什麼好呢?你喜歡用什麼就用唄。開心就好,樣式而已,都沒有改變html的結構,但是最好不要一起用於同級的佈局中,寫著很亂,局也容易亂。

  個人喜歡用position。

  所以這裡在給出一個解決父級高度寬度自適應的方法。就是用js啦。

  

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Document</title>
 6     <style type="text/css">
 7     #person{position: relative; margin: 0 auto 0; width: 100px; background: yellow;}
 8     #son{ position: absolute; top: 10px; left: 0; width: 50px; height: 1000px; background: red; }
 9     </style>
10 </head>
11 <body>
12     <div id="person">
13         <div id="son"></div>
14     </div>
15 <script>
16     document.getElementById('person').style.height = document.getElementById('son').offsetHeight + 20 + 'px';
17 </script>
18 </body>
19 </html>

溫馨提示:要靈活使用js的方法,才能有好效果!

 

  

  


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

-Advertisement-
Play Games
更多相關文章
  • Redis真是好,其中的鍵值用起來真心強大啊有木有, 之前的文章講過搭建了redis集群 那麼咋們該如何調用單機版的redis以及集群版的redis來使用緩存服務呢? 先講講單機版的,單機版redis安裝非常簡單,不多說了,直接使用命令: 1 [root@nginx bin]# ./redis-se ...
  • 裝飾設計模式就是對已有的對象的功能進行增強 簡單小例子: 我們考慮一下使用繼承也可以對父類中的功能進行增強只需要調用super就可以調用父類的方法,那使用裝飾和繼承有什麼區別?使用繼承體系就會有點臃腫,因為當平房想要改成歐式時,還要建立子類。 Writer |--FileWriter |--Buff ...
  • 在介紹Dubbo的內部邏輯的時候提到很多次註冊中心的概念.實現註冊中心的有很多,主要是以下四個註冊中心分別是: Multicast註冊中心 Zookeeper註冊中心 Redis註冊中心 Simple註冊中心 這裡將對註冊中心的一個實現Zookeeper跟大家分享,因為Zookeeper是應用比較多 ...
  • 在此先容我拿“小弟”這個詞來扯一下淡。什麼是小弟呢,所謂小弟就是可以幫你做一些瑣碎的事情,在此我們就拿“小弟”來類比“外觀模式”。在上面一篇博文我們完整的介紹了“適配器模式”,接下來我們將要在這篇博客中介紹“外觀模式”(Facade Pattern)。其實外觀模式與之前我們介紹過的“命令模式”有些相 ...
  • Appreciation to our TA, +7, who designed this task. Client.cpp include include include "Factory.hpp" include "Product.hpp" int main() { UIFactory ui = ...
  • 1,開篇 在剛剛學習完李建中老師的C#面向對象之設計模式縱橫談視頻之後,感想頗多,在此稍微記錄一下嘿嘿。 2,內功修煉 很多人都反映,學了設計模式就感覺好像什麼都沒學到一樣,學了就忘了,學了也不會用,然後還需要再枯燥的再去學。其實我覺得這樣是沒有真正領悟設計模式的精髓,對於修煉武功一樣,只去學一些外 ...
  • 學習要點: 1.字體總匯 2.字體設置 3.Web 字體 主講教師:李炎恢 本章主要探討 HTML5 中 CSS 文本樣式,通過文本樣式的設置,更改字體的大小、樣式以及文本的方位。 一.字體總匯 本節課,我們重點瞭解一下 CSS 文本樣式中字體的一些設置方法,樣式表如下: 屬性名 說明 CSS 版本 ...
  • 知識點:(圖片為網路轉載,謝謝分享。) JavaScript 變數 JavaScript 數據類型 JavaScript 字元串函數 Javascript 運算符 JavaScript 流程式控制制 JavaScript 數組 JavaScript 函數基礎 DOM 基本操作 Window 對象 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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...