前端 html 一个元素padding-right,不起作用?毫无反应?padding right 无效

有没有宝子,开发html,给一个父元素padding-right,子元素却毫无反应,万分捉急,在线等,急!

我知道你着急,但是你先别急

我会在这里娓娓道来,带你走上一个新的技术台阶

1、一段基础代码

代码如下:

<!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>
    body {
      padding: 0;
      margin: 0;
    }
    .parent {
      width: 100%;
      height: 300px;
      background-color: rgb(83, 145, 63);
    }
    .child {
      width: 100%;
      height: 200px;
      background-color: rgb(101, 210, 175);
    }
  </style>
</head>
<body>
  <div class="parent">
    <div class="child">
      child
    </div>
  </div>
</body>
</html>

代码执行效果如下

 

这里,parent元素  width: 100%; 占满了浏览器,child元素  width: 100%; 占满了parent。

 

2、这时,想child与parent有个20px的左边距,如下,给parent 添加要给padding-left: 20px;

.parent {
      width: 100%;
      height: 300px;
      background-color: rgb(83, 145, 63);
      padding-left: 20px;
    }

 代码执行效果如下图:

 

3、得到了我们想要的效果,child偏移了20px,这时又想,child与parent有个20px的右边距,自然而然想到给parent 添加要给padding-right: 20px;

.parent {
      width: 100%;
      height: 300px;
      background-color: rgb(83, 145, 63);
      padding-left: 20px;
      padding-right: 20px;
    }
 代码执行效果如下图:

没有得到预想的child对parent右偏移,但是偏移值是有效的,看图右下角圆圈。怎么回事?

 

4、先给出解决方法,给parent添加一行 box-sizing: border-box;

.parent {
      width: 100%;
      height: 300px;
      background-color: rgb(83, 145, 63);
      padding-left: 20px;
      padding-right: 20px;
      box-sizing: border-box;
    }

 代码执行效果图

 得到了想要的偏移,看右小角圆圈:700的宽度变成了660,怎么回事?

 

5、首先得先理解html的盒子模型

看第一张图

 

看红色框,每个元素占据的空间,包括

  • Margin(外边距) -
  • Border(边框) - 
  • Padding(内边距) - 
  • Content(内容) -子元素能使用的空间

这里Margin、Border、Padding都是0,Content是700x300 

浏览器的宽度是700,Content内容区占据了全部的width,也就是700.

第二张图,给了一个padding

 Content内容区依然占据了全部的width:700. padding 的20没有起到什么作用。因为box-sizing 这个属性

box-sizing ,用于指定盒模型的计算方式,即如何计算元素的总宽度和总高度。它有以下两个常用的参数:

  1. content-box

    • 默认值。
    • 在计算元素的总宽度和总高度时,只包括内容区域(content area)的尺寸,不包括边框(border)和内边距(padding)。
    • 即元素的宽度和高度由内容的宽度和高度决定。
  2. border-box

    • 在计算元素的总宽度和总高度时,包括内容区域(content area)的尺寸、边框(border)和内边距(padding)。
    • 即元素的宽度和高度包括了边框和内边距,内容区域的尺寸会自动调整以适应剩余的空间

 于是,我们在第四张图,设置了box-sizing: border-box;

 Content内容区变成了660,两边padding分别是20,加起来是700

parent元素的Content内容区变成了660,child元素是其父元素的Content,所有只有660,效果就是有了左右的偏移。

 

两个重点:

1、元素with的计算方式

2、child元素是其父元素的Content,无法超出Content区

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章