1. 程式人生 > >html+css垂直水平居中

html+css垂直水平居中

垂直水平居中有很多方法,以下展示一些比較好用易於理解的方法:
已知父元素寬高的情況下結合上篇margin-top高度重合問題延伸用margin,padding都很好實現;
以下方法實現未知父元素寬高子元素垂直水平居中,先設定html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style>
			html,body,div{margin:0;padding:0;}
			html{width:100%;height:100%;}
			body{ width:100%; height:100%;  background:yellow;}
			div{ width:100px;height:100px;background:red;}
		</style>
	</head>
	<body>
		<div></div>
	</body>
</html>

上述程式碼以body元素為父元素(父元素寬高未知),div為子元素,設定了一些基礎樣式,通過新增後續樣式讓div在螢幕中垂直水平居中,實現效果如圖:
在這裡插入圖片描述
1、定位:body相對定位,給div絕對定位,然後通過定位位置和margin負值來調整位置

            body{position:relative;}
		    div{ position: absolute;top: 50%;left: 50%;margin-top: -50px;margin-left: -50px;}

這裡div的margin負值可以改為變形屬性,減少修改div寬高時需要修改的屬性值數量(margin百分比是相對父元素的寬度進行的,所以無法用margin百分比來實現位移)

            body{position:relative;}
		    div{ position: absolute;top: 50%;left: 50%;transform:translateX(-50%);transform:translateY(-50%);}

變形屬性transform可以縮寫為

             transform:translate(-50%,-50%);

2、彈性盒子:設定彈性盒子來實現效果

             body{display: flex;align-items: center;justify-content: center;}

3、偽元素填充

			body:before{display: inline-block;content: ""; width: 100%;height: 50%;visibility: hidden;}
                        div{margin: 0 auto;margin-top: -50px;}

以上僅為垂直居中方法中的一小部分,網上資料齊全,請自行蒐集。
綜上,已知父元素寬高用margin、padding,未知父元素寬高用定位,其他方法建議用以開拓思路。