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>