前端面試題之水平垂直居中
阿新 • • 發佈:2021-02-05
技術標籤:面試題前端開發面試題筆記htmlcss前端面試經驗分享
(1)水平居中:
- 元素為行內元素,設定父元素text-align:center
- 如果元素寬度固定,可以設定左右margin為auto
- 如果元素為絕對定位(或相對定位),可以設定父元素position為relative,寬度固定時設定left:0;right:0;margin:auto
- 如果元素為絕對定位(或相對定位),可以設定父元素position為relative,寬度固定時設定left
:50%,margin-left
值為寬度一半的負值 - 使用
flex
佈局,設定父元素display:flex;同時設定justify-content: center; - 使用老版
flex
佈局,設定父元素display: -webkit-box;同時設定-webkit-box-pack: center;
(2)垂直居中:
- 文字垂直居中,設定父元素
line-height
為height
值 - 如果元素為絕對定位(或相對定位),可以設定父元素position為relative,高度固定時設定top:0;bottom:0;margin:auto
- 如果元素為絕對定位(或相對定位),可以設定父元素position為relative,高度固定時設定top
:50%,margin-top
值為高度一半的負值 - 使用
flex
佈局,設定父元素display:flex;同時設定align-items: center; - 使用老版
flex
佈局,設定父元素display: -webkit-box;同時設定-webkit-box-align: center; - 將顯示方式設定為表格,設定父元素display: table-cell;同時設定vertical-align: middle;
水平垂直居中想必大家已經司空見慣、見怪不怪了,那假如是父子元素在不知道寬高的情況下實現水平垂直居中呢?
一、子元素是塊級元素
方法1、flex佈局
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> *{ margin: 0; padding: 0; } .father { width: 500px; /*此處未知,方面展示所以假設了寬高*/ height: 300px; /*此處未知,方面展示所以假設了寬高*/ background-color: yellow; display: flex; justify-content: center; /*垂直居中*/ align-items: center; /*水平居中*/ } .child { width: 200px; /*此處未知,方面展示所以假設了寬高*/ height: 100px; /*此處未知,方面展示所以假設了寬高*/ background-color: blue; } </style> </head> <body> <div class="father"> <div class="child"></div> </div> </body> </html>
方法2、absolute+CSS3的translate
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
.father {
width: 500px;
height: 300px;
background-color: yellow;
position: relative;
}
.child {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 200px;
height: 100px;
background-color: blue;
}
</style>
</head>
<body>
<div class="father">
<div class="child"></div>
</div>
</body>
</html>
二、子元素是行內元素
水平居中:
- 首先看它的父元素是不是塊級元素,如果是,則直接給父元素設定text-align: center;
- 如果不是,則先將其父元素設定為塊級元素,再給父元素設定text-align: center;
垂直居中:
- 只需要設定行內元素的"行高line-height等於盒子的高"即可,僅適用於純文字;
- 父元素設定成table-cell表格形式,使用vertical-align: middle即可使內聯元素垂直居中;