软件教程 2025年08月6日
0 收藏 0 点赞 249 浏览 2614 个字
摘要 :

文章目录 一、利用padding-top保持宽高比 (一)原理剖析 (二)代码示例 二、借助图片自适应撑开父级元素 (一)原理讲解 (二)代码示例 在前端开发中,让页面元……




  • 一、利用padding-top保持宽高比
    • (一)原理剖析
    • (二)代码示例
  • 二、借助图片自适应撑开父级元素
    • (一)原理讲解
    • (二)代码示例

    在前端开发中,让页面元素在缩放时保持特定宽高比是个常见需求。比如抖音页面,随着屏幕宽度变化,某些div元素始终能维持高度是宽度75%的比例。这篇文章就来分享实现这一效果的两种方法,我们一起看下!

    一、利用padding-top保持宽高比

    在CSS布局里,有一种巧妙的方法可以实现元素宽高比固定。以抖音页面为例,我们发现其部分元素高度始终是宽度的75% ,这里用到的关键CSS属性就是padding-top

    (一)原理剖析

    当给元素设置padding-top为百分比值时,这个百分比是相对于父元素的宽度来计算的。也就是说,我们设置padding-top: 75%;,元素的高度就会始终保持为父元素内容宽度的75% ,这样就达到了在页面缩放时保持宽高比的效果。

    (二)代码示例

    下面这段HTML和CSS代码展示了如何运用这一技巧:

    <!DOCTYPE html>
    <html lang=\"en\">
    <head>
      <meta charset=\"UTF-8\">
      <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
      <title>Document</title>
      <link rel=\"stylesheet\" href=\"./test.css\">
      <style>
        * {
          box-sizing: border-box;
        }
      .container {
          display: flex;
          flex-wrap: wrap;
        }
      .wrapper {
          width: 45%;
          border: 1px solid;
          padding: 20px 30px;
        }
      .inner {
          width: 100%;
          background-color: greenyellow;
          padding-top: 75%;
        }
      </style>
    </head>
    <body>
      <div class=\"container\">
        <div class=\"wrapper\">
          <div class=\"inner\"></div>
          <p>描述文字</p>
        </div>
        <div class=\"wrapper\">
          <div class=\"inner\"></div>
          <p>描述文字</p>
        </div>
        <div class=\"wrapper\">
          <div class=\"inner\"></div>
          <p>描述文字</p>
        </div>
        <div class=\"wrapper\">
          <div class=\"inner\"></div>
          <p>描述文字</p>
        </div>
      </div>
    </body>
    </html>
    

    在这段代码里,wrapper类定义了元素的基本样式,包括宽度、边框和内边距。而inner类则是关键,通过设置width: 100%;让它充满父元素wrapper的宽度,再设置padding-top: 75%;,就实现了高度始终是宽度75%的效果。background-color: greenyellow;只是为了方便查看效果添加的背景色。

    二、借助图片自适应撑开父级元素

    除了用padding-top,还有一种思路是利用图片的自适应特性来撑开父级元素,从而实现宽高比固定。

    (一)原理讲解

    图片在HTML页面中,如果设置width: 100%;,它会根据父元素的宽度自动调整大小,并且保持自身的宽高比。我们可以利用这一特性,让图片在父元素内自适应,进而撑开父元素,达到固定父元素宽高比的目的。

    (二)代码示例

    下面是实现该效果的代码:

    <!DOCTYPE html>
    <html lang=\"en\">
    <head>
      <meta charset=\"UTF-8\">
      <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
      <title>Document</title>
      <link rel=\"stylesheet\" href=\"./test.css\">
      <style>
        * {
          box-sizing: border-box;
        }
      .container {
          display: flex;
          flex-wrap: wrap;
        }
      .wrapper {
          width: 45%;
          border: 1px solid;
          padding: 20px 30px;
        }
      .inner {
          width: 100%;
          background-color: greenyellow;
          /* padding-top: 75%; */
        }
        img {
          width: 100%;
        }
      </style>
    </head>
    <body>
      <div class=\"container\">
        <div class=\"wrapper\">
          <div class=\"inner\">
            <img src=\"./1.jpeg\" alt=\"\">
          </div>
          <p>描述文字</p>
        </div>
        <div class=\"wrapper\">
          <div class=\"inner\">
            <img src=\"./1.jpeg\" alt=\"\">
          </div>
          <p>描述文字</p>
        </div>
        <div class=\"wrapper\">
          <div class=\"inner\">
            <img src=\"./1.jpeg\" alt=\"\">
          </div>
          <p>描述文字</p>
        </div>
        <div class=\"wrapper\">
          <div class=\"inner\">
            <img src=\"./1.jpeg\" alt=\"\">
          </div>
          <p>描述文字</p>
        </div>
      </div>
    </body>
    </html>
    

    这段代码和前面类似,不同之处在于inner类中移除了padding-top: 75%;,而是在inner元素内部添加了<img>标签,并设置img { width: 100%; }。这样,图片会根据父元素inner的宽度自适应,从而撑开inner元素,让inner元素的宽高比和图片保持一致。background-color: greenyellow;依旧是为了方便查看效果设置的背景色。

    通过这两种方法,在前端开发中实现页面缩放时元素宽高比不变就变得轻松多了。大家可以根据实际项目需求选择合适的方法。要是在实践过程中有任何问题,欢迎在评论区留言讨论,咱们一起进步!

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/6786.html

管理员

相关推荐
2025-08-06

文章目录 一、Promise基础回顾 二、Promise 与 axios 结合使用场景及方法 (一)直接返回 axios …

269
2025-08-06

文章目录 一、模块初始化时的内部机制 二、常见导出写法的差异分析 (一)写法一:module.exports…

107
2025-08-06

文章目录 一、ResizeObserver详解 (一)ResizeObserver是什么 (二)ResizeObserver的基本用法 …

683
2025-08-06

文章目录 一、前期准备工作 (一)下载相关文件 (二)安装必要工具 二、处理扣子空间生成的文件…

338
2025-08-06

文章目录 一、官方文档 二、自动解包的数据类型 ref对象:无需.value即可访问 reactive对象:保持…

371
2025-08-06

文章目录 一、Hooks的工作原理 二、在if语句中使用Hook会出什么岔子? 三、React官方的Hook使用规…

843
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号