父級寬高不定,子級元素要寬高都是父級元素寬度的一半,即一個正方形
1. 利用padding來實現(xiàn)
.parent {
width: 200px;
height: 400px;
display: flex;
jsutify-content: center;
align-items: center;
background: aqua;
}
.child {
width: 50%;
// height: 50%; 面試的時候一開始回答了這個,難受,搞混了margin-top,padding-top和height的區(qū)別,前兩者是都相對與父級的寬度,最后一個是相對于父級的高度
height: 0;
padding-top: 50%; // padding有顏色,而且計算起來是根據(jù)父級的寬度來計算的
background: red;
}
2. 利用偽類來實現(xiàn)
.parent {
width: 200px;
height: 400px;
background: red;
display: flex;
justify-content: center;
align-items: center;
}
.child {
/* height: 0; 不能設(shè)置高度為0了,這樣高度撐不開 */
width: 50%;
background: yellow;
overflow: hidden; /* 這里主要是形成一個BFC塊,不然child會隨著偽類一起向下,就不能實現(xiàn)偽類撐開child的效果了 */
}
.child:after {
content: '';
display: block;
margin-top: 100%; /* 這里實現(xiàn)撐開child,margin-top也是相對于父級的寬度 */
}