23

I wonder how a browser calculates the initial height and width values for div elements without a given size. Given this div for example:

<div>
  TEST
</div>

My browser (Chrome) calculates the size of this div to 1255 x 18, with a windowsize of 1271 x 284. It seems like divs default to the height of a line and the inner width of the window minus some. But I would like to know more about it.

I couldn't find anything here: https://html.spec.whatwg.org/multipage/semantics.html#the-div-element

Where can I find this kind of information?

Flip
  • 6,233
  • 7
  • 46
  • 75

4 Answers4

30

div tags are block level elements. All block level elements inherit the width of their parent element by default.

In your example, the div is inheriting the width of the parent body tag, taking into account any margin or padding on the body element.

MDN is usually a great source of information for this sort of thing - see https://developer.mozilla.org/en/docs/Web/HTML/Block-level_elements

Josh Harrison
  • 5,927
  • 1
  • 30
  • 44
11

It has display: block so width is 100%, height is auto so it's the size of whatever's inside.

JordyvD
  • 1,565
  • 1
  • 18
  • 45
  • 3
    width 100% can outgrow the container if there are paddings and box sizing is content-box, while leaving width not set does not outgrow the container. – cipak Sep 29 '20 at 06:42
4

According to the spec, a default value of 8px is expected to be used for the margin.

For each property in the table below (margin-top, margin-right,margin-bottom,margin-left), given a body element, the first attribute that exists maps to the pixel length property on the body element. If none of the attributes for a property are found, or if the value of the attribute that was found cannot be parsed successfully, then a default value of 8px is expected to be used for that property instead.

That is why your width is 1255 which is (1271 - 8 * 2). The heigh is the from the content -- TEST.

I have created a slightly more complex example:

<body>
<div id="outer">
  <div style="display:inline">
    <div id="inner">
      X
    </div>
  </div>
</div>
</body>

Body

default size of a div

Outer div

outer div

Inline div

inline div

Inner div

enter image description here

Community
  • 1
  • 1
Devs love ZenUML
  • 11,344
  • 8
  • 53
  • 67
1

All block level elements takes the available width of their parent.

Soufiane Roui
  • 660
  • 6
  • 19