美文网首页
如何让一个元素高度随宽度按比例自适应

如何让一个元素高度随宽度按比例自适应

作者: 托尼陈 | 来源:发表于2019-10-31 20:53 被阅读0次

    宽度的自适应是根据viewport的width来调整的,比如{width:50%}就是浏览器可视区域的50%,resize之后也会自动调整。

    而height指定百分比后,他会自行找到viewport的height来调整,跟width一毛钱关系没有,自然两者不能达到比例关系了。通过这个思路,要找到一个能跟viewport的width扯上裙带关系的属性,就能解决这个问题了。

    这个属性就是padding,padding是根据viewport的width来调整的,巧就巧在padding-top和padding-bottom也是根据viewport的width来计算的,那么通过设置这个属性就能跟width达成某种比例关系了

    .father{width:100px;height:100px;background:#222}

    .element{width:50%;background:#eee;}

    这个时候我们再设置element的height为0,padding-bottom:50%;

    .element{width:50%;height:0;padding-bottom:50%;background:#eee;}

    element就变成了一个宽度50%,高度为0(但是他有50%width的padding-bottom)的正方形了,效果如下图灰白色的div

    image

    这个时候可能有人要问了,这个div的高度为0,那如果我要在element里放置元素呢,那岂不是overflow了,这里就要提到overflow属性了,它的计算是包括div的content和padding的,也就是说,

    原来你的div可能是个{width:50px;height:50px;padding:0}的div,现在变成{width:50px;height:0;padding-bottom:50px;}的div了,尺寸还是一样的,通过指定这个div的子元素的定位,一样可以正常显示

    image

    这样就可以通过设定父级元素father、我们需要的元素element、子级元素datail来实现任意情况下该需求(div宽高定比例)。

    相关文章

      网友评论

          本文标题:如何让一个元素高度随宽度按比例自适应

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