前端 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區

 

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