HTML/CSS

如何用CSS实现自适应宽高等比例的容器

阿里云

我们知道图片高度为 auto 时,宽高比会以图片原始尺寸的比例缩放,但如果每个元素里无图片且内容行数不固定或者每个元素里的图片宽高比不一致时,如下图,该如何实现每个

  • 的宽高比例不变且一致呢?我们从自适应的角度探讨这个问题,即每个<li>的宽度为:31.3333%。目前通过 CSS 实现效果就有两种方法,在实际项目是可根据情况合理使用其中一种方法。

    也想出现在这里?联系我们
    创客主机

    VW 单位实现

    vw:视窗宽度的百分比(1vw 代表视窗的宽度为 1%),假如我们要实现每个

  • 的宽高比例为 4:3,通过计算就可以知道高度应设为:23.5vw ≈ 31.3333 * 3 / 4,具体 CSS 样式如下:
    1. li { 
    2.     float: left; 
    3.     width: 31.3333%; 
    4.     margin: 1%; 
    5.     height: 23.5vw; 
    6. }

    这个方法适合在移动端,vw 属于 CSS3,可兼容 安卓 4.4+,IOS7.0+,如需兼容旧版就不适用了。

    Padding 实现

    padding 与 margin 值设置为百分比是以父元素宽度的百分比,即使对 padding-top 和 padding-bottom 也是如此,而 padding 是计算在宽高里的,即设置了 overflow: hidden; 并不会把 padding “溢出”,同样我们需实现每个<li>的宽高比例为 4:3,综上所述,通过计算就就可以把 padding-bottom 的值设为: 23.5% ≈ 31.3333 * 3 / 4,具体 CSS 样式如下:

    1. li { 
    2.     float: left; 
    3.     width: 31.3333%; 
    4.     margin: 1%; 
    5.     height: 0; 
    6.     padding-bottom: 23.5%; 
    7.     overflow: hidden; 
    8. }

    这个方法无兼容性问题,可兼容旧版浏览器。

    如果<li>里有图片则可以稍改动,如下:

    1. li { 
    2.     float: left; 
    3.     width: 31.3333%; 
    4.     margin: 1%; 
    5. } 
    6. li .pic { 
    7.     height: 0; 
    8.     padding-bottom: 75%; 
    9.     overflow: hidden; 
    10. } 
    11. li .pic img { 
    12.     width: 100%; 
    13.     height: auto; 
    14. }

    如何用 CSS 实现自适应宽高等比例的容器

    已有 307 人购买
    查看演示升级 VIP立刻购买

  • 收藏
    (0)

    发表回复

    热销模板

    Ashade - 作品展示摄影相册WordPress汉化主题
    LensNews

    本站承接 WordPress / PbootCMS / DedeCMS 等
    系统建站、仿站、开发、定制等业务!