Why padding is included in height sometimes?
css, padding
Solution
That depends on what `box-sizing` attribute you have used:
- `border-box` means that the height and width of the box, defined/calculated in CSS, will also include the padding(s) and border width(s) applied to it
- `content-box` is the default behavior, where padding(s) and border width(s) are added onto the defined/calculated height and width of the box.
By setting `box-sizing: border-box` as seen in your left example, you have defined the height of the element at 20px. This means that the actual content box will only be 8px tall, because the browser will subtract the border (1px top, 1px bottom) and padding (5px top, 5px bottom) form the defined height, leaving only 8px left, which is a tad bit too short to contain height of the entire line (therefore the word appears to be cut off).
Problem
I have a text area and I added some CSS to it ``` <textarea watermark="Have a question? ..." class="test-input" rows="4" cols="15" name="">Have a question? ...</textarea> ``` and CSS applied to it - ``` .test-input { border: 1px solid #D0D0D0; border-radius: 3px 3px 3px 3px; color: #646464; float: left; font-family: Arial; font-size: 12px; height: 20px; margin: 0 0 0 15px; padding: 5px; resize: none; width: 264px; } ``` And I get the text area with some padding inside it. In the cases when it works absolutely fine, text area height comes to be 20px with 5px padding not included in height. But, in few cases height of the text area includes padding and the height gets reduced to 8px. I have looked for any css if its overriding it but I didn't find. And I compared the result in both cases. Left is the reduced height and right is the expected height. I can fix this issue, in other case managing height specifically, adding !important or with help of some JavaScript. But, I am wondering what's the cause here that's making such effect. Why and in which cases paddings are getting included with height or width?