前端學習筆記(三)
盒模型
HTML是由一個個html元素組成的
盒模型:把每一個html元素想象成一個盒子
本篇主要介紹兩個方面:1.盒模型的結構;2.盒模型如何影響元素之間的位置關係
盒模型的結構:
1.content(內容):用來顯示內容(圖片或者文字)
2.padding(內邊距):內容與邊框的距離
3.border(邊框):元素的邊框
4.margin(外邊距):元素與元素之間的距離(父子元素,兄弟元素)在普通盒模型下:
普通盒模型又叫標準盒模型
盒子的寬=width + 左右padding + 左右border + 左右margin
盒子的高=height + 上下padding + 上下border + 上下margin<style> #div0 { background-color:yellow; padding-left:50px; padding-right:60px; padding-top:70px; padding-bottom:80px; border-top:5px solid red; border-right:6px dotted black; border-bottom:7px dashed blue; border-left:8px solid pink; margin-top:40px; margin-right:50px; margin-left:60px; margin-bottom:70px; } </style> <div id="div0"> 這是綜合div這是綜合div這是綜合div這是綜合div這是綜合div這是綜合div這是綜合div這是綜合div這是綜合div這是綜合div這是綜合div這是綜合div這是綜合div這是綜合div這是綜合div這是綜合div </div>
- content(內容)——盒子的內容,顯示文字和影象。
背景色會渲染到border區域
書寫順序可隨意
邊框寬度可不寫,預設3px
顏色可不寫,預設與當前元素文字預設色相同<style> #div1 { background-color:yellow; } </style> <div id="div1"> 這是content這是content這是content這是content這是content這是content這是content這是content </div>
- padding(內邊距)——清除內容周圍的區域,內邊距是透明的。
<style> #div2 { background-color:cyan; /*內邊距 padding*/ /*padding-left: 50px; padding-right:60px; padding-top:70px; padding-bottom:80px;*/ /*簡寫 4個值 順時針 上 右 下 左*/ /*padding:10px 20px 30px 40px; */ /*簡寫 3個值 上 左右 下*/ /*padding:10px 20px 30px*/ /*簡寫 2個值 上下 左右*/ /*padding:20px 30px;*/ /*簡寫 1個值 上下左右*/ /*padding:20px;*/ /*padding值為0時候,單位px可以不寫*/ } </style> <div id="div2"> 這是padding這是padding這是padding這是padding這是padding這是padding這是padding這是padding </div>
- border(邊框)——圍繞在內邊距和內容外的邊框。
<style> #div3 { /* 設定一個邊框需要三種值 1.邊框的寬度 px 2.邊框的型別 solid:實線; dotted:小正方點; dashed:虛線; 3.邊框的顏色 */ background-color:green; /*border-top:5px solid red; border-right:6px dotted black; border-bottom:7px dashed blue; border-left:8px solid pink;*/ /*簡寫*/ /*border:3px solid orange;*/ /*方向:上、右、下、左 (順時針)*/ border-width:10px 20px 30px 40px; border-style:solid dotted dashed solid; border-color:red blue yellow orange; } a{ border:8px solid } </style> <div id="div3"> 這是border這是border這是border這是border這是border這是border這是border這是border </div> <a href="">這是a連結</a>
- margin(外邊距)——清除邊框外的區域,外邊距是透明的
<style> #div4{ background-color:cyan; /*外邊距 margin*/ /*margin-top:40px; margin-right:50px; margin-left:60px; margin-bottom:70px; */ /*簡寫 方法和效果與padding一樣*/ margin:10px 20px 30px 40px; margin:10px 20px 30px; margin:10px 20px; margin:10px; } </style> <div id="div4"> 這是margin這是margin這是margin這是margin這是margin這是margin這是margin這是margin這是margin </div>
margin的坑
1.相鄰兄弟之間在垂直方向上margin會出現融合,會取兩個元素中margin值較大的為融合後的值。
解決辦法:
1.padding代替
2.只設置其中一個的margin2.父子關係的元素,如果父元素和子元素都設定了margin,,子元素的margin會傳遞到父級。
解決辦法
1.父元素padding代替
2.給父元素新增 overflow:hidden 樣式(建議使用)
3.給子元素加 float:left;或display:inline-block;
4.給父元素或子元素透明邊框加 border:1px solid transparent;
5.給子元素絕對定位 postion:absolute;
6.給子元素加 padding:1px;margin合併的計算規則(兄弟和父子關係規則相同):
1.正正最大指。
2.正負值相加。
3.負負最負值。單個元素height為0時的自身margin合併:
1.正正值情況該元素的外部尺寸是最大的那個值
2.正負值情況該元素的外部尺寸是相加值。
3.負負值情況該元素的外部尺寸是絕對負值最大的值。怪異盒模型下:
怪異盒模型又叫IE盒模型,和標準盒模型的區別就是:怪異盒模型的寬或者高包含padding和border
設定盒模型型別
1.box-sizing:content-box 普通盒模型
2:box-sizing:border-box 怪異盒模型盒子的寬=width(左右padding+左右border)+左右margin
盒子的高=height(上下padding+上下border)+上下margin
auto
auto是一個值,可以幫助我們靈活的進行元素佈局
在盒模型裡面,只有width和margin可以用auto作為其值,auto一般用在塊元素的橫向佈局上
1.如果width,margin-left,margin-right三個值有一個為值auto,其餘兩個必須為定值.
2.如果width,margin-left,margin-right三個值都為定值,發生衝突時系統會強制修改margin-right的值.
3.如果margin-left和margin-right都為auto,width必須為定值