b标签设置margin值没用_【震惊】paddingtop的百分比值参考对象竟是父级元素的宽度...

引言

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

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

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

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

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

题目须知:

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

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

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

页面布局:要考虑DOM的结构和CSS的样式

html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Documenttitle>
  <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的值为百分比时,参考的对象是父级元素的宽度

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

html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Documenttitle>
  <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属性设置为百分比时,参考对象都是父级元素的宽度

要记住呀,下回还得考~

以上就是胡哥今天给大家分享的内容,喜欢的小伙伴记得收藏转发,点击在看推荐给更多的小伙伴。

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

0191ddaf153cc8f181b5880986b33d32.png

要实现 Vue 中子元素的高度等于父元素宽度,可以使用 Vue 的内置指令 v-bind 和 v-on,以及 CSS 中的 padding 或者 margin 属性,通过动态绑定样式来实现。具体实现方法如下: 1. 使用 padding ```html <template> <div class="parent" :style="{ width: parentWidth + 'px' }"> <div class="child" :style="{ paddingTop: parentWidth + 'px' }"></div> </div> </template> <script> export default { data() { return { parentWidth: 200 // 父元素宽度 }; } }; </script> <style> .parent { position: relative; } .child { position: absolute; top: 0; left: 0; width: 100%; height: 0; background-color: #f00; } </style> ``` 在上面的代码中,首先使用 v-bind 指令将父元素宽度绑定到一个 data 属性 parentWidth 上。然后通过 :style 绑定样式,将父元素宽度设置为 parentWidth,并将子元素paddingTop 设置为 parentWidth,以实现子元素的高度等于父元素宽度。 2. 使用 margin ```html <template> <div class="parent" :style="{ width: parentWidth + 'px' }"> <div class="child" :style="{ height: parentWidth + 'px' }"></div> </div> </template> <script> export default { data() { return { parentWidth: 200 // 父元素宽度 }; } }; </script> <style> .parent { position: relative; } .child { position: absolute; top: 0; left: 0; width: 100%; height: 100%; margin-top: 100%; background-color: #f00; } </style> ``` 在上面的代码中,同样使用 v-bind 指令将父元素宽度绑定到一个 data 属性 parentWidth 上。然后通过 :style 绑定样式,将父元素宽度设置为 parentWidth,并将子元素的高度设置为 parentWidth,以实现子元素的高度等于父元素宽度。同时通过 margin-top: 100%,将子元素的顶部向上移动,让其与父元素的底部重合。 需要注意的是,在 Vue 中使用动态绑定样式时,需要将样式绑定到一个对象上,并且样式的需要使用字符串拼接的方式来进行动态绑定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值