解決由設定邊距引起的「浮動滑移」問題

2021-06-20 15:39:52 字數 1512 閱讀 6714

本文以三欄-固定寬度布局為例說明由設定邊距引起的「浮動滑移」問題怎麼解決。

固定寬度布局必須將設定好每一欄的寬度。

下面看乙個例子:

這是左欄,寬150px

這是中欄,寬600px。本文以三欄-固定寬度布局為例說明由設定邊距引起的「浮動滑移」問題怎麼解決。

這是右欄,寬210px

頁尾來啦

效果是這樣的:

但是這樣的效果實在太擠了,我想設定間距,比如給中欄設定左右外邊距為10px:

article
可是效果卻變成這樣:

右欄跑到左欄的下面了。

這就是「浮動滑移」問題,因為根據盒模型,為固定寬度的元素新增水平外邊距、邊框和內邊距,會導致元素盒子變寬。

右欄由於剩餘寬度不夠就躲到左欄下面去了。

這種情況怎麼解決呢?

有三種方法:

1.重設寬度以抵消內邊距和邊框。需要精確計算,稍一調整內邊距或邊框就有可能導致布局錯亂。

這種方法不實用,重點看下面的。

2.給容器內部的元素應用內邊距和邊框。前提是這些元素沒有明確設定寬度,這樣它們的內容才會隨著內、外邊距的增加而縮小,否則反而會增加元素盒子的寬度。所以與其為容器中的元素新增內、外邊距,不如在欄中再新增乙個沒有寬度的div

,讓它包含所有內容元素,然後再給這個

div應用邊框和內邊距。(這就是那些例項中經常會莫名其妙多乙個巢狀

div的原因。)

修改上述**如下:

這是左欄,寬150px。

這是中欄,寬600px。本文以三欄-固定寬度布局為例說明由設定邊距引起的「浮動滑移」問題怎麼解決。

這是右欄,寬210px。

頁尾來啦

紅色部分就是增加的**。

效果如下:

是不是既有間距,又正常布局了?

3.使用box-sizing:border-box

。只要在浮動欄的

css規則中分別加上

box-sizing:border-box

宣告,再給欄新增內邊距和邊框就不會導致盒子的寬度變化了。此時內容會隨內邊距收縮。但是

ieborderboxmodel.js

。你可以使用條件注釋(以便只有

ie6和

ie7載入)把它新增到

html

標記之後、結束的

標籤之前,以保證在載入

dom之後再執行該指令碼:  

我用firefox測試,好像也不支援box-sizing屬性,所以還是慎用吧。

ReportViewer 的邊距設定

reportviewer 報表的載入方式有兩種 一種是嵌入式資源,一種是檔案路徑 使用路徑方式載入報表並修改報表檔案,可以設定列印的頁邊距。如下 此設定中較為難處理的地方主要是讀取和設定節點值。因為報表xml檔案中,使用了微軟的報表命名空間,因此在讀取和設定時,必須考慮此問題。而我們一般在自己寫的x...

設定列印頁邊距 微信排版的頁邊距

關於排版前段時間我發了條朋友圈 有哪些東西是你一旦知道,生活就從此回不去了的?審美。001 排版的作用 正文排版,包括三部分 1.文字 字型大小 顏色 標點符號 排版規範 2.留白 字間距 行間距 段間距 頁邊距 3.配圖 封面圖 配圖 gif 留白 字間距 行間距 段間距 頁邊距等,這些是 白 的...

解決由float引起的「高度塌陷」問題

高度塌陷 是指父元素未設定高度和寬度,而且其只包含浮動的子元素時,該父元素的高度會產生 塌陷 換言之,當元素不具有實際高度時,就會產生 高度塌陷 解決 高度塌陷 問題的方法有如下幾個 1.在父元素結束前加乙個高度為0,寬度為0,且clear both的div。當然如果有未浮動的子元素,可以直接cle...