面试官在“逗”你系列:padding-top的百分比值参考对象竟是...

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

引言


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


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


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


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


在对面,一本正经的面试官和蔼可亲的说道:我们来道简单的面试题,写写代码吧。你一脸微笑的说道:好哒。


题目须知:


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


  1. 元素A在页面内水平、垂直居中;


  1. 元素A距离页面左右的间距为10px,元素A的宽度随页面宽度变大而变大;


  1. 设置元素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属性设置为百分比时,参考对象都是父级元素的宽度


要记住呀,下回还得考~


相关文章
|
4月前
|
存储 JavaScript 前端开发
【面试题】JS的14种去重方法,看看你知道多少(包含数组对象去重)
【面试题】JS的14种去重方法,看看你知道多少(包含数组对象去重)
|
4月前
|
JavaScript 前端开发 Java
【面试题】new 一个对象时,js 做了什么?
【面试题】new 一个对象时,js 做了什么?
|
13天前
|
存储 网络协议 安全
【专栏】30 道初级网络工程师面试题为广大网络工程师提供参考。
【4月更文挑战第28天】本文为初级网络工程师提供了30道面试题,涵盖OSI七层模型、TCP/IP协议栈、IP地址分类、ARP、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN、网络拓扑、广域网、以太网、网络存储、网络拥塞、流量监控、延迟、网络安全、网络攻击防范、协议分析、性能优化、故障排查、网络虚拟化和云计算等基础知识。这些问题旨在帮助面试者准备并提升网络工程领域的知识和技能。
|
1月前
|
缓存 算法 NoSQL
京东物流面试真题(附参考答案)
京东物流面试真题(附参考答案)
21 1
|
2月前
|
消息中间件 存储 监控
深入剖析:Kafka流数据处理引擎的核心面试问题解析75问(5.7万字参考答案)
Kafka 是一款开源的分布式流处理平台,被广泛应用于构建实时数据管道、日志聚合、事件驱动的架构等场景。本文将深入探究 Kafka 的基本原理、特点以及其在实际应用中的价值和作用。 Kafka 的基本原理是建立在发布-订阅模式之上的。生产者将消息发布到主题(Topic)中,而消费者则可以订阅这些主题并处理其中的消息。Kafka包括多个关键组件,如生产者、消费者、主题分区、ZooKeeper 等,Kafka 实现了高性能的消息传递和存储。特点:高吞吐量、可持久化存储、水平扩展、容错性和实时性等。
113 0
|
2月前
|
存储 缓存 算法
Java入门高频考查基础知识4(字节跳动面试题18题2.5万字参考答案)
最重要的是保持自信和冷静。提前准备,并对自己的知识和经验有自信,这样您就能在面试中展现出最佳的表现。祝您面试顺利!Java 是一种广泛使用的面向对象编程语言,在软件开发领域有着重要的地位。Java 提供了丰富的库和强大的特性,适用于多种应用场景,包括企业应用、移动应用、嵌入式系统等。下是几个面试技巧:复习核心概念、熟悉常见问题、编码实践、项目经验准备、注意优缺点、积极参与互动、准备好问题问对方和知其所以然等,多准备最好轻松能举一反三。
66 0
Java入门高频考查基础知识4(字节跳动面试题18题2.5万字参考答案)
|
2月前
|
设计模式 缓存 算法
探索设计模式的魅力:创新思维与面试中的设计模式问题(超详细38题3万8字参考答案)
设计模式是在软件设计中经常出现的问题的解决方案。它是由经验丰富的开发人员在解决常见设计问题时总结出来的一套通用的解决方案,是一种对反复出现的设计问题的可重用的抽象描述。设计模式可以用于高质量的软件开发,它在软件开发过程中提供了一种复用可扩展性简化代码维护等方面的解决方案。设计模式通常包括以下几个要素:用来描述问题、解决方案和效果的简洁术语。描述了在何时使用该模式以及问题的背景和条件。
95 0
|
6月前
|
设计模式 Java 数据库
持续霸榜GitHub的面试神器:字节跳动Java面试参考手册,限时开源
最近又赶上跳槽的高峰期(招聘旺季),好多读者都问我有没有面试字节的神器,我苦苦寻到了一份内部资料《2023字节跳动Java面试参考手册(第二期)》。
|
7月前
|
Java
【面试题精讲】JVM中哪些对象可以被称为GC ROOT对象
【面试题精讲】JVM中哪些对象可以被称为GC ROOT对象
|
7月前
|
Java
Java 最常见的面试题:怎么判断对象是否可以被回收?
Java 最常见的面试题:怎么判断对象是否可以被回收?