1. 程式人生 > >5種盒子垂直居中的方式

5種盒子垂直居中的方式

1.通過flex來實現:

<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		.box{
			width: 800px;
			height: 800px;
			border: 1px solid #000;
			display: flex;
			/*控制元素在主軸的對齊方式*/
			justify-content: center;
			/*控制預設的一行的對齊方式*/
			align-items: center;
			margin: 0 auto;

		}
		.box1{
			text-align: center;
			width: 600px;
			height: 500px;
		}

	</style>
</head>
<body>
<div class="box">
	<div class="box1">
		慧及必傷,情深不壽。<br>
	<br>
	<br>
		慧及必傷,情深不壽。<br>
	<br>
	<br>
		慧及必傷,情深不壽。<br>
	<br>
	<br>
		慧及必傷,情深不壽。<br>
	<br>
	<br>
		慧及必傷,情深不壽。<br>
	<br>
	<br>
		慧及必傷,情深不壽。<br>
	<br>
	<br>
		慧及必傷,情深不壽。<br>
	<br>
	<br>
	</div>
</div>	

2.通過用table來居中:

	<style>
		table{
			width: 800px;
			height: 500px;
			border: 1px solid #000;
		}
		td{
			/*控制行內塊居中*/
			text-align: center;
		}
		/*div{*/
			/*依然可以不用寫這個屬性,inline-block,一樣垂直居中*/
			/*行內元素不會繼承父級的寬度
			/*display: inline-block;*/
		/*}*/

	</style>
</head>
<body>
	<table>
		<thead></thead>
			<tbody>
				<tr>
					<td>
						<div>
							玲瓏骰子安紅豆</br>
							入骨相思知不知</br>
							</br>
							</br>
							玲瓏骰子安紅豆</br>
							入骨相思知不知</br>
							</br>
							</br>
							玲瓏骰子安紅豆</br>
							入骨相思知不知</br>
							</br>
							</br>
							玲瓏骰子安紅豆</br>
							入骨相思知不知</br>
							</br>
							</br>
						</div>	

					</td>
				</tr>
		</tbody>
</table>
</body>

3.通過定位transform來實現:

<style>
	*{
		margin: 0;
		padding: 0;
	}
	.box{
		width: 800px;
		height: 400px;
		border: 1px solid #000;
		margin: 0 auto;
		position: relative;
	}
	.box1{
		text-align: center;
		width: 400px;
		height: 200px;
		position: absolute;
		overflow: hidden;
		top: 50%;
		left: 50%;
		transform: translate(-50%,-50%);
	}

	</style>
</head>
<body>
	<div class="box">
		<div class="box1">
			陌上人如玉,公子世無雙。<br>
			<br>
			<br>
			陌上人如玉,公子世無雙。<br>
<br>
<br>
			陌上人如玉,公子世無雙。<br>

			陌上人如玉,公子世無雙。<br>
<br>
<br>
			陌上人如玉,公子世無雙。<br>
			陌上人如玉,公子世無雙。<br>
<br>
<br>
			陌上人如玉,公子世無雙。<br>
<br>
<br>
	
		</div>
	</div>
</body>

4.通過行內塊和vertical-align實現(這種方式必須要新增一個空標籤):

	<style>
		.box{
			width: 700px;
			height: 500px;
			border: 1px solid #000;
			text-align: center;
			margin: 0 auto;
		}
		.box1{
			vertical-align: middle;
			display: inline-block;
		}
		.tips{
			width: 1px;
			height: 100%;
			/*background-color: red;*/
			vertical-align: middle;
			display: inline-block;
		}

	</style>
</head>
<body>
	<div class="box">
		<div class="box1">
			入則懇懇以盡忠,出則謙謙以自悔。</br>
			<br>
			<br>
			入則懇懇以盡忠,出則謙謙以自悔。</br>
			<br>
			<br>
			入則懇懇以盡忠,出則謙謙以自悔。</br>
			<br>
			<br>
			入則懇懇以盡忠,出則謙謙以自悔。</br>
			<br>
			<br>
			入則懇懇以盡忠,出則謙謙以自悔。</br>
			<br>
			<br>
		</div>
<span class="tips"></span>
	</div>
</body>

5.通過table-cell來實現:

	<style>
	/*這樣寫的缺點在於,大盒子如果轉成table-cell,那麼這個盒子便設定不了margin了。*/
	.box{
		width: 800px;
		height: 500px;
		border: 1px solid #000;
		text-align: center;
		vertical-align: middle;
		display: table-cell;
	}
	/*這裡的 inline-block 可以不用寫,不會有任何問題*/
	/*.box1{
		display: inline-block;
		vertical-align: middle;
		
	}*/

	</style>
</head>
<body>
	<div class="box">
		<div class="box1">
	你喜歡的是細水長流煮紅豆</br>
	我想要的是聲色犬馬走天涯</br>
		</br>
	</br>
	你喜歡的是細水長流煮紅豆</br>
	我想要的是聲色犬馬走天涯</br>
		</br>
	</br>
	你喜歡的是細水長流煮紅豆</br>
	我想要的是聲色犬馬走天涯</br>
		</br>
	</br>
	你喜歡的是細水長流煮紅豆</br>
	我想要的是聲色犬馬走天涯</br>
		</br>
	</br>
	你喜歡的是細水長流煮紅豆</br>
	我想要的是聲色犬馬走天涯</br>

	</div>
</div>
</body>
以上是用css實現垂直居中的5種方式;不舉js的了,畢竟用js無非也是控制css