浮動影響

来源:http://www.cnblogs.com/KarmaDeng/archive/2017/07/27/7243207.html
-Advertisement-
Play Games

一、浮動元素自動變塊級元素 非浮動元素占據浮動元素位置,浮動元素不能占據非浮動元素位置???向上占據 浮動元素會被自動設置成塊級元素,相當於給元素設置了display:block(塊級元素能設置寬和高,而行內元素則不可以)。 二、併列關係的盒子,不一致地浮動,位置問題 元素浮動會對後面非浮動的兄弟元 ...


一、浮動元素自動變塊級元素

非浮動元素占據浮動元素位置,浮動元素不能占據非浮動元素位置???向上占據

浮動元素會被自動設置成塊級元素,相當於給元素設置了display:block(塊級元素能設置寬和高,而行內元素則不可以)。

<div style="height: 200px; width: 200px;"> 
<span style="float: left; width: 150px; height: 150px; margin: 5px; padding: 5px; border: solid 1px red; background-color: Olive;">浮動元素span</span> 
</div> 
<div style="height: 200px; width: 200px;"> 
<span style="width: 150px; height: 150px; margin: 5px; padding: 5px; border: solid 1px red; background-color:Olive;">非浮動元素span</span> 
</div> 

二、併列關係的盒子,不一致地浮動,位置問題

元素浮動會對後面非浮動的兄弟元素產生影響

可能情況

  1. 後邊若是非浮動行內元素,且因為定位產生重疊時,行內盒子模型壓在該浮動元素之上
  2. 後邊若是非浮動塊級元素,且在定位後產生重疊時,該塊級的內容圍繞該浮動元素顯示,其他在該浮動元素底下

示例代碼如下:

<div style="width: 600px; height: 500px; border: solid 1px blue; background-color: yellow;"> 

<div style="float: left; width: 250px; height: 250px; border: 
solid 1px Aqua; background-color: gray; margin: 10px 0 0 10px;"> 
    浮動DIV
</div> 

<div style="background-color: red; width: 300px; height: 150px;"> 
    跟在浮動元素後邊的DIV
</div> 

<span style="background-color: red; margin: 0 0 0 -50px;"> 
    跟在浮動元素後邊的span
</span> 
</div> 

效果如下

不過在ie6這個效果卻很怪異,如圖:

浮動元素沒有壓在非浮動div之上,反而把span壓住了。

解決辦法

對被浮動影響的元素添加clear:both

三、併列關係的盒子,一致地同方向浮動,高度不一致問題

多個同方向浮動元素一般是按照流式佈局,一行滿了則自動換行,也就是類似於以下效果:

但各個浮動元素高度不一致的話效果很可能出現下邊的情況:

原因

主要排列到元素7的時候,一行已經顯示不下了,所以要換行,但此處換行並不是從行頭開始,而是從元素5那開始,因為元素5比元素6高很多導致。

四、包含關係的盒子,

可能情況

裡面盒子浮動,包住它的盒子不浮動時,父盒子背景無顯示

原因

由於元素浮動後脫離了文檔流,所以父元素是無法根據元素來自適應的。

解決辦法1 clear:both

用法

在所有浮動元素後加: <div style="clear:both;height:0px;"></div>

<div style="border:2px solid red;"> 
<div style="float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div> 
<div style="clear:both;"></div> 
</div> 

原理

子元素浮動後,因為脫離文檔流,所以父元素包含不住,無法撐開。由於沒有現有的元素可以應用清理,所以我們只能添加一個空元素並且清理它。

解決辦法2 overflow

用法

<style>
    .box{
        background-color: yellow;
         overflow:atuo;     //或者是hidden,.box是父盒子
    }
    .box1{
        width: 100px;
        height: 100px;
        background-color: green;
    }
    .box2{
        width: 100px;
        height: 100px;
        background-color: red;
    }
</style>
<body>
<div class="box">
    <div class="box1">div1</div>
    <div class="box2">div2</div>
</div>
</body>

原理

在父元素上設置overflow這個屬性,如果父元素的這個屬性設置為auto或者是hidden,父元素就會擴展包含浮動,這個方法有著比較好的語義性,因為它不需要額外的元素,但是,要記住一點,overflow屬性不是為了清除浮動而定義的,要小心不要覆蓋住內容或者觸發了不需要的滾動條。

解決辦法3 clearfix類

用法

<style>
 .clearfix:after{ content:"";  display:table;  height:0;
    visibility:both;  clear:both;}

.clearfix{*zoom:1;    /* IE/7/6*/}
</style> 

<body>
<div class="box clearfix">
    <div class="box1">div1</div>
    <div class="box2">div2</div>
</div>
</body>

原理:

這種方式這樣理解,就是利用偽類元素,也就是在有浮動的標簽前面添加一個塊級元素,來達到效果。


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

-Advertisement-
Play Games
更多相關文章
  • reg = /[~#^$@%&!?%*]/gi; if (reg.test(postdata.Name.trim())) { alert("姓名不能含有特殊字元"); } else { if (isEmojiCharacter(postdata.Name.trim())) { alert("姓名不能 ...
  • $.fn.serializeObject = function () { var o = {}; var a = this.serializeArray(); $.each(a, function () { if (o[this.name]) { if (!o[this.name].push) { ...
  • 方法一:利用form的onsubmit()函數(經常使用) Html代碼 <script type="text/javascript"> function validateForm(){ if(document.reply.title.value == ""){ //通過form名來獲取form a ...
  • //重寫alert方法,去掉地址顯示window.alert = function(name){var iframe = document.createElement("IFRAME");iframe.style.display="none";iframe.setAttribute("src", ' ...
  • 其實按照我的情懷和尿性,文章的標題應該是 前端登堂入室寶典、前端成長就這三招 之類,奈何這是篇軟文 ~ 看官先別急Command + W,尤其是和我經歷類似 我可以負責任的說,這是一篇有態度的軟文 欲語淚先流 我希望做些有用的事情,甚至可以做個有用的人 才畢業工作的第一年我是滿足的,學到了很多新知識 ...
  • 可以看出,使用方式越來越簡單,程式員越來越傻,不知道是好事,還是壞事。。。 ...
  • 在這裡以面板為例: $().ready(function() { $('#menu').tree({ url : '/menu', onClick : function(node) { $('#center').panel({ href:node.attribute.url }... ...
  • 1. 基本規範 符合web標準, 語義化html, 結構、表現、行為分離, 相容性優良. 頁面性能方面, 代碼要求簡潔明瞭有序, 儘可能的減小伺服器負載, 保證最快的解析速度. 2. 文件規範 html, css, js, image文件均放在約定的目錄中,基本目錄結構如2.1圖,並且目錄與文件名中 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...