引言

书写页面样式与布局是前端工程师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属性设置为百分比时,参考对象都是父级元素的宽度

要记住呀,下回还得考~

后记

以上就是胡哥今天给大家分享的内容,喜欢的小伙伴记得点赞收藏呦,关注胡哥有话说,学习前端不迷路,欢迎多多留言交流...

胡哥有话说,专注于大前端技术领域,分享前端系统架构,框架实现原理,最新最高效的技术实践!

【震惊】padding-top的百分比值参考对象竟是父级元素的宽度的更多相关文章

  1. WPF利用VisualTreeHelper遍历寻找对象的子级对象或者父级对象

    原文:WPF利用VisualTreeHelper遍历寻找对象的子级对象或者父级对象 简介 本文将完整叙述我利用VisualTreeHelper实现题述功能的全部过程,想直接看函数实现的朋友可以跳到函数 ...

  2. 当padding,margin,top为百分比值,具体数值如何计算

    padding以及margin的四个方向设置值为百分数的时候,是以父元素的宽度为基数来进行计算. (为了保持横向和纵向方向上的margin/padding一致,但是其实也不是一定以父元素的宽度为参照物 ...

  3. css relative设置top为百分比值

    前言: 最近在学习HTML.CSS的过程中,想模仿一下百度首页.发现搜索框这一部分与上下其它元素的空白距离可以随着窗口大小变化(效果如下图所示),于是自己研究了一下并记录下来. 效果实现 <!D ...

  4. jQuery获取点击对象的父级

    一.使用$('body').on('click','.index',function(event){})绑定事件时,例: <div class="project-box"&g ...

  5. 左右margin top问题百分比值

    不想说今天心情有多差! 9点多開始发现一个"bug",需求是依据屏幕高度动态调整某个div的位置.代码大概是这种. <div style="margin-top: ...

  6. 使用padding后内容超出父级元素

    解决方法:

  7. css百分比值到底参考谁?

    一.元素宽高设置百分比 (1)width / min-width / max-width 参考块级父元素的宽度 (2)height / min-height / max-height 参考块级父元素的 ...

  8. margin/padding百分比值的计算

    1.百分比介绍 一般元素的宽度用百分比值表示时,元素的总宽度包括外边距取决于父元素的width,这样可能得到"流式"页面,即元素的外边距会扩大或缩小以适应父元素的实际大小.如果对这 ...

  9. CSS设置百分比值的问题

    当给元素设置width:100%:height:100% 的时候没有反应 因为,元素的宽高是根据内容来自动适应的,当设置百分比值时,是根据这个元素的父元素来确定百分比的 如果父元素没有固定的值,那就需 ...

随机推荐

  1. 循序渐进VUE+Element 前端应用开发(27)--- 数据表的动态表单设计和数据存储

    在我们一些系统里面,有时候会需要一些让用户自定义的数据信息,一般这些可以使用扩展JSON进行存储,不过每个业务表的显示项目可能不一样,因此需要根据不同的表单进行设计,然后进行对应的数据存储.本篇随笔结 ...

  2. [原题复现]2018护网杯(WEB)easy_tornado(模板注入)

    简介 原题复现:  考察知识点:模板注入  线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题 [护网杯 2018]eas ...

  3. python-网络安全编程第三天(正则表达式)

    python 正则表达式 正则表达式本身是一种小型的.高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配.正则表达式模式被编译成一系列的字节码,然后由用 ...

  4. linux 用户组操作

    1. 添加用户到...目录中useradd -M -s /目录 username 2. 添加用户属于多个组 usermod -G 本组(用户名),组1,组2... 用户名 3. mysql添加禁止登录 ...

  5. 如何突出显示PDF文档中的一些重要文本信息

    PDF文档中如果存在着太多的文字时,阅读者会容易遗漏很多重要的信息.但如果,文档中存在着一些特殊标记的文字时,比如标黄.标红文本时,很多人都会给予特别关注. 因此,当大家在使用pdfFactory专业 ...

  6. Ubuntu sudo 出现unable to resolve host 解决方法

    Ubuntu sudo 出现unable to resolve host 解决方法 Ubuntu环境, 假设这台机器名字叫abc(机器的hostname), 每次执行sudo 就出现这个警告讯息: s ...

  7. 解决Maven项目中pom.xml文件报错(Failure to transfer....)的问题

    打开pom.xml文件,查看错误,如果错误类型为:Failure to transfer.........之类的,则表明你的pom中依赖的jar包没有完全下载. 解决方法:找到你本地的maven仓库, ...

  8. Invalid operation updata 错误解决方法

    错误: huny@DESKTOP-N1EBKQP:/mnt/c/Users/Administrator$ sudo apt-get updata E: Invalid operation updata ...

  9. OpenCV计算机视觉学习(12)——图像量化处理&图像采样处理(K-Means聚类量化,局部马赛克处理)

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 准备 ...

  10. Tiops评测

    一.前言 前几天参加了一个新钛云服公有课,才了解到这家公司有发布自己产品Tiops云运维堡垒机. 在此之前有了解过JumpServer,可以完美支持windows和linux server运维管理,以 ...