美烦资源网

专注技术文章分享,涵盖编程教程、IT 资源与前沿资讯

CSS面试题:CSS实现自适应正方形以及等宽高比矩形

这里没什么好说的直接上图、上代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>CSS实现自适应正方形以及等宽高比矩形</title>
</head>
<style>
  /* * {
    padding: 0;
    margin: 0;
  } */
  html, body {
    height: 100%;
  }

  /* 方法一: */
  .w_son-cont {
    width: 20% ;
    /*基于父级的宽度设置*/
    padding-top: 20% ; /* 或者padding-bottom: 20%; */
    background: red ;
  }


  /* 方法二: 这个方法不能实现正方形; 高度总是要比宽度大几个像素 */
  .w_vw-cont {
    width: 30%;
    height: 30vw;
    background: red;
  }

  /* 方法三:  */
  .w_mar-outer {
    overflow: hidden;
    width: 20%;
    background-color: skyblue;
  }
  .w_mar-outer::after {
    content: '';
    display: block;
    padding-top: 100%; /* margin 百分比相对父元素宽度计算 */
  }
</style>
<body>
  <div class="w_son-cont"></div>
  <div class="w_vw-cont"></div>
  <div class="w_mar-outer"></div>
</body>
</html>

运行结果如图所示:

语言上如何表达:

1. 实现方式有三种:
   1. 设置 宽度 width 、 padding 的top 或者 bottom 为相同的百分比 。
   2. 设置 宽度 width 百分比; 设置 高度 height vw; 且数值相同 。 
      1. 但是此方法不能实现完全的正方形, 只是看上去是一个正方形, 因为此方法得到的结果高度总是要比宽度大几个像素 。
   3. 设置 宽度 width 百分比; 且使用 after 伪元素设置 display 属性为  block, padding-top或者padding-bottom为 100% 。


之前有整理过部分知识点, 现在将整理的相关内容, 验证之后慢慢分享给大家; 这个专题是 "前端面试题" 的相关专栏; 大概会有200+的文章。

如果对大家有所帮助,可以点个关注、点个赞; 文章会持续打磨 。

有什么想要了解的前端知识, 可以在评论区留言, 会及时分享所相关内容 。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言