[email protected],c小總結
阿新 • • 發佈:2018-11-03
問題0:元素內聯元素,行內元素,行內塊元素.
內聯: 寬高M,P都有效
行內元素:無寬高,內容撐開,M,P左右有效
行內塊元素:可設寬高,內容撐開,M,P都有效 文件流中:marging上下塌陷取最大,左右疊加
float中:marging上下左右疊加 浮動後的元素 可以設定寬高
absolute fixed定位後的元素 可以設定寬高 懸浮:從無到有的--採用脫離文件流方式
問題1:行內元素,行內塊元素元素有個硬傷-- 有預設的間隙
分析:行內元素換行寫導致的
解決:同行寫/把父級font-size設定為0
<span>你好啊!</span><span>你好啊!</span> 問題2:文件流,脫離文件流,半脫離文件流
文件流:堅守著它原來佔據的空間
定位: 脫離 不脫離
absolute相對 定位父元素 都沒有預設為初始視窗(預設html.body都沒定位) 文件流中子集marging帶動父級問題:
解決辦法:
外部處理
父級或子元素使用浮動或者絕對定位absolute 內部處理
父級overflow:hidden;
父級設定padding(破壞非空白的摺疊條件)
父級設定border 問題3:負marging外邊距
本質:移動 只能用未重疊部分 例如 文字(優先順序一樣)內容過多會文字重疊 其他按優先順序遮擋顯示
注意:只能設定負外邊距,不能設定負內邊距,瀏覽器會忽略負內邊距
流方向:____________________------------------------------
文件流:將負邊距設定為相對bottom/right時,它並不會把元素向下或右拉,相反,它會把後面的元素往裡面拉,從而覆蓋自己。
float:left->marging-right/bottom 會把後面的盒子往裡拉
right->marging-left/bottom 會把後面的盒子往裡拉 問題4:
水平居中:
1. inline元素,父元素 text-align : center
2. 塊級元素有定寬,margin:0 auto;
3. 塊級元素絕對定位,transform : translate(-50%,0);
4. 塊級元素絕對定位,並且知道寬度, margin-left: - 寬度的一半
5. 塊級元素絕對定位,left:0; right:0; margin:0 auto 垂直居中
1. 若元素是單行文字, 則可設定 line-height 等於父元素高度,原理見上面;
2. 若元素是行內塊級元素, 基本思想是父使用display: table-cell;vertical-align: middle;
3. 使用flex, 在父元素上面新增.parent { display: flex; align-items: center;
4. 絕對定位的塊用 transform: translate(0, -50%)
5. 絕對定位,並且有定高, margin-top : -高度的一半 注意不要用 margin-bottom, 不會生效的
6. 設定父元素相對定位(position:relative), 子元素如下css樣式:.son{ position:absolute; height:固定; top:0; bottom:0; margin:auto 0; }
內聯: 寬高M,P都有效
行內元素:無寬高,內容撐開,M,P左右有效
行內塊元素:可設寬高,內容撐開,M,P都有效 文件流中:marging上下塌陷取最大,左右疊加
float中:marging上下左右疊加 浮動後的元素 可以設定寬高
absolute fixed定位後的元素 可以設定寬高 懸浮:從無到有的--採用脫離文件流方式
分析:行內元素換行寫導致的
解決:同行寫/把父級font-size設定為0
<span>你好啊!</span><span>你好啊!</span> 問題2:文件流,脫離文件流,半脫離文件流
文件流:堅守著它原來佔據的空間
定位: 脫離 不脫離
absolute相對 定位父元素 都沒有預設為初始視窗(預設html.body都沒定位) 文件流中子集marging帶動父級問題:
解決辦法:
父級或子元素使用浮動或者絕對定位absolute 內部處理
父級overflow:hidden;
父級設定padding(破壞非空白的摺疊條件)
父級設定border 問題3:負marging外邊距
本質:移動 只能用未重疊部分 例如 文字(優先順序一樣)內容過多會文字重疊 其他按優先順序遮擋顯示
注意:只能設定負外邊距,不能設定負內邊距,瀏覽器會忽略負內邊距
流方向:____________________------------------------------
文件流:將負邊距設定為相對bottom/right時,它並不會把元素向下或右拉,相反,它會把後面的元素往裡面拉,從而覆蓋自己。
float:left->marging-right/bottom 會把後面的盒子往裡拉
right->marging-left/bottom 會把後面的盒子往裡拉 問題4:
水平居中:
1. inline元素,父元素 text-align : center
2. 塊級元素有定寬,margin:0 auto;
3. 塊級元素絕對定位,transform : translate(-50%,0);
4. 塊級元素絕對定位,並且知道寬度, margin-left: - 寬度的一半
5. 塊級元素絕對定位,left:0; right:0; margin:0 auto 垂直居中
1. 若元素是單行文字, 則可設定 line-height 等於父元素高度,原理見上面;
2. 若元素是行內塊級元素, 基本思想是父使用display: table-cell;vertical-align: middle;
3. 使用flex, 在父元素上面新增.parent { display: flex; align-items: center;
4. 絕對定位的塊用 transform: translate(0, -50%)
5. 絕對定位,並且有定高, margin-top : -高度的一半 注意不要用 margin-bottom, 不會生效的
6. 設定父元素相對定位(position:relative), 子元素如下css樣式:.son{ position:absolute; height:固定; top:0; bottom:0; margin:auto 0; }