乐趣区

关于javascript:我和大厂Offer有个约会之paddingtop的百分比值参考对象竟是父级元素的宽度

引言

书写页面款式与布局是前端工程师Coding 中必不可少的一项工作,在定义页面元素的款式时,padding 属性也是常常被应用到的。

padding 属性用于设置元素的内边距,其值能够是 lengthinherit,当然也能够是 百分比

明天为什么会聊到 padding-top 设置百分比时的参考对象这个话题呢,这还要从一道不那么正经的面试题说起~

一道不那么正经的 css 布局面试题

在对面,不苟言笑的面试官和颜悦色的说道:咱们来道简略的面试题,写写代码吧。你一脸微笑的说道:好哒。

题目须知:

页面中有一个元素 A,请实现以下需要:

  1. 元素 A 在页面内程度、垂直居中;
  2. 元素 A 间隔页面左右的间距为 10px,元素 A 的宽度随页面宽度变大而变大;
  3. 设置元素 A 的高度始终为宽度的一半;

只有是对 CSS 理解的一些的同学,实现 1 和 2 都是非常简单的,而且形式也是多种多样的。那如何能设置让元素 A 的高度始终为宽度的一半呢?上代码~

页面布局:要思考 DOM 的构造和 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>
  <style>
    * {
      margin: 0;
      padding: 0;
    }
    html, body {
      width: 100%;
      height: 100%;
      /* 设置子元素 A 垂直程度居中 */ 
      display: flex;
      align-items: center;
      justify-content: center;
    }
    .a {
      /* 设置 margin 左右间距为 10px */
      margin: 0 10px;
      background: #F00;
      /* 设置宽度为 100vw,理论宽度会受到弹性盒子的影响 */
      width: 100vw;
      /* calc 办法动静计算:height 的值为宽度的 1 /2,所以是 (100vw - 20px) / 2 */
      height: calc(50vw - 10px);
    }
  </style>
</head>
<body>
  <div class="a"></div>
</body>
</html>

在上述的代码中咱们借助 calc 办法实现了设置元素的高度为宽度的 1 /2

此时心田是否有些窃喜,又搞定了一个问题,饱含自信 ( 傲娇 ) 的眼光看向了面试官。
然而,当你没有 get 到面试官的 G 点时,面试官又和颜悦色(冷若冰霜)的说道“还有别的办法吗?”

还能有啥别的方法呢?你无助的捋了捋本人那为数不多的秀发。

啦啦啦,快来应用padding-top,哼哼哈嘿 …

探索 padding-top 的机密

当 padding-top 的值为百分比时,参考的对象是父级元素的宽度

这句话圈起来,是重点,要考~

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }
    html, body {
      width: 100%;
      height: 100%;
      /* 设置子元素 A 垂直程度居中 */ 
      display: flex;
      align-items: center;
      justify-content: center;
    }
    .a {
      /* 设置 margin 左右间距为 10px */
      margin: 0 10px;
      background: #F00;
      /* 设置宽度为 100%,父级容器宽度的 100%,理论宽度会受到弹性盒子的影响 */
      width: 100%;
      height: 0;
      /* calc 办法动静计算:padding-top 的值为父级容器宽度的 1 /2,所以是 (100vw - 20px) / 2 */
      padding-top: calc(50% - 10px);
    }
  </style>
</head>
<body>
  <div class="a"></div>
</body>
</html>

此处也能够抉择应用padding-bottom

此刻你再低头时,看到了面试官那饱含了称心如意、孺子可教的热烈眼神 …

最初的机密

padding-toppadding-bottommargin-topmargin-bottom 属性设置为百分比时,参考对象都是父级元素的宽度

要记住呀,下回还得考~

后记

以上就是胡哥明天给大家分享的内容,喜爱的小伙伴记得 点赞 珍藏 呦,关注胡哥有话说,学习前端不迷路,欢送多多留言交换 …

胡哥有话说,专一于大前端技术畛域,分享前端零碎架构,框架实现原理,最新最高效的技术实际!

退出移动版