CSS实现自适应正方形

作者: XJBT | 来源:发表于2019-08-19 15:38 被阅读3次

父级宽高不定,子级元素要宽高都是父级元素宽度的一半,即一个正方形

1. 利用padding来实现

    .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的区别,前两者是都相对与父级的宽度,最后一个是相对于父级的高度
        height: 0;
        padding-top: 50%; // padding有颜色,而且计算起来是根据父级的宽度来计算的
        background: red;
    }

2. 利用伪类来实现

    .parent {
        width: 200px;
        height: 400px;
        background: red;
        display: flex;
        justify-content: center;
        align-items: center;
    }
    .child {
        /* height: 0; 不能设置高度为0了,这样高度撑不开 */ 
        width: 50%;
        background: yellow;
        overflow: hidden; /* 这里主要是形成一个BFC块,不然child会随着伪类一起向下,就不能实现伪类撑开child的效果了 */
    }
    .child:after {
        content: '';
        display: block;
        margin-top: 100%;  /*  这里实现撑开child,margin-top也是相对于父级的宽度 */
    }

3. 使用vw和vh作为单位

相关文章

网友评论

    本文标题:CSS实现自适应正方形

    本文链接:https://www.haomeiwen.com/subject/vstesctx.html