前端面试:如何实现自适应正方形?

实现自适应的正方形效果,即让元素高度随宽度改变。

实现的思路是父元素设置宽度,子元素宽度100%,然后控制子元素撑开父元素的高度,撑开的高度和宽度成一定比例。正方形就是1:1,其他比例的实现原理相同。

有两种方式,

  • 一种是使用子元素的padding-top或者padding-bottom撑开父元素高度,因为子元素的padding的百分比是相对于父元素的宽度。
  • 另一种方法是用子元素的伪类将父元素高度撑开。

前端面试刷题网站灵题库,收集大厂面试真题,相关知识点详细解析。】

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
      #block1 {
        width: 100px;
      }
      .block1-wrapper {
        width: 100%;
        height: 0px;
        background-color: red;
        padding-bottom: 100%;
      }
      
      
      #block2 {
        width: 100px;
      }
      .block2-wrapper {
        position: relative;
        width: 100%;
        overflow: hidden;
        background-color: blue;
      }
      .block2-wrapper::after {
        content: '';
        display: block;
        margin-top: 100%;
      }
      .block2-content {
        position: absolute;
      }
    </style>
  </head>
  <body>
    <div id="block1">
      <div class="block1-wrapper">123</div>
    </div>
    <div id="block2">
      <div class="block2-wrapper">
        <div class="block2-content">123</div>
      </div>
    </div>
  </body>
</html>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 方案1:CSS3 vw单位 CSS3 中新增了一组相对于可视区域百分比的长度单位 vw, vh, vmin, vm...
    codeice阅读 10,078评论 0 1
  • 总体思路:由于height是不固定的,所以不能直接使用height值。因此转换思路使用width值来实现正方形的h...
    会飞小超人阅读 7,342评论 0 10
  • 方法一:使用 CSS3 的 vw,vh 单位 用 vw 或 % 单位设置宽度,用 vw 单位设置相同高度即可; 用...
    saxon_y阅读 4,223评论 0 1
  • 今天ui姐姐让我给她做这样个图 这是三个正方形并列一排,我们都知道,宽度可以自适应,但是高度不行。首先我们说下1个...
    奔跑的兔子_阅读 5,900评论 2 1
  • 父级宽高不定,子级元素要宽高都是父级元素宽度的一半,即一个正方形 1. 利用padding来实现 2. 利用伪类来...
    XJBT阅读 4,398评论 1 2