1.定位实现水平垂直居中
<div class="outer"><div class="test inner1">定位实现水平垂直居中</div></div><style>.outer {width: 300px;height: 300px;border: 1px solid gray;margin: 100px auto 0;position: relative;}.test {width: 100px;height: 100px;background-color: orange;}.inner1 {/* 方法一 定位*/position: absolute;/* 相对于包含块,最近的定位的祖先或父元素 */top: 50%; left: 50%;margin-left: -50px;margin-top: -50px;}
</style>
2.定位+位移
<div class="outer"><div class="test inner2">定位+位移</div></div>
<style>
.outer {width: 300px;height: 300px;border: 1px solid gray;margin: 100px auto 0;position: relative;}.test {width: 100px;height: 100px;background-color: orange;}.inner2 {position: absolute;top: 50%;left: 50%;/*方法二 translate中的百分比是相对自身,50% 相当于100*50% = 50*/transform: translate(-50%, -50%);}
</style>
3.相对于整个视口水平垂直居中
<div class="view">相对于整个视口水平垂直居中</div><style>body {position: relative;}/* 方法三 */.view {width: 100px;height: 100px;background-image: linear-gradient(red, yellow, green);position: fixed;top: 0;left: 0;right: 0;bottom: 0;margin: auto;}</style>
4.flex+margin
<head><style>.outer {width: 400px;height: 400px;background-color: gray;display: flex;}.inner {width: 100px;height: 100px;margin: auto;background-image: linear-gradient(green, yellow);}</style>
</head>
<body><div class="outer"><div class="inner"></div></div>
</body>
5. flex 水平垂直居中
<head><style>.outer {width: 400px;height: 400px;background-color: gray;display: flex;/* 水平居中 */justify-content: center;/* 垂直居中 */align-items: center;}.inner {width: 100px;height: 100px;background-image: linear-gradient(green, yellow);}</style>
</head>
<body><div class="outer"><div class="inner"></div></div>
</body>
6.遮挡层
<div class="item"></div>/* 遮挡层 */.item {background-image: repeating-linear-gradient(red 200px, yellow 500px, green 700px);opacity: 0.5;position: fixed;top: 0;left: 0;right: 0;bottom: 0; }