css 你真的了解padding吗?

前言

padding 简写属性在一个声明中设置所有内边距属性,实际上在使用过程中它对block元素和内联元素的处理是不一样的。

正文

对于block元素

如果宽度非auto那么容器会变大,如果容器宽度自适应或者设置了box-sizing:border-box,并且值在可控区间内是不会影响内容宽度的,如果值暴走那么容器肯定会变化。

对于内联元素

内联元素的padding只会影响左右尺寸,上下尺寸不影响但是背景色会显现,当上下值暴走的时候会影响外容器的高度。
利用这一特性我们可以做类似于:注册 | 登陆 这种中间的间隔线

margin,padding的百分比是相对与父元素的宽度来进行计算的

如果父元素没有设置宽度(脱离文档流[float,absolute,fixed]),那又该怎样计算呢??

实践的答案是:padding的百分比没有用了,这里不是说padding不生效,而是脱离文档里后,父元素没有宽度了,和高度了,这个时候父元素宽度就是内部元素宽度,所以padding是没有意义的。当然需要设置父元素的宽度为100%,这个时候依然有效。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div style="position:relative">
 <div style="position:absolute">
   <span style="display:inline-block;padding: 200px;">
  test the padding
   </span>
 </div>
    </div>
</body>
</html>

相关推荐