本文以三欄-固定寬度布局為例說明由設定邊距引起的「浮動滑移」問題怎麼解決。
固定寬度布局必須將設定好每一欄的寬度。
下面看乙個例子:
這是左欄,寬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...