Here's the jsfiddle example
Here's the html:
<div class="header">header</div>
<div class="wrapper">
<div class="left"><div class="content"></div></div>
<div class="right">right</div>
</div>
Here's the css:
.left{
position:absolute;
width:30%;
background:red;
left:0;
height:100%;
display:block;
padding:5px;
}
.right{
overflow:hidden;
background:green;
position:absolute;
right:0;
width:70%;
height:100%;
}
html, body{
min-height:100%;
height:100%;
padding:0px;
margin:0px;
position:relative;
}
body {position:relative;}
.wrapper {
position:relative;
height:100%;
}
.header{
width:100%;
height:100px;
background:yellow;
display:none;
}
.left .content {
background:blue;
height:inherit;
width:100%;
}
You can see the red div being pushed out by the blue div. How can I prevent that? All the width and height are based on %. The only way I know is to give the red div a fixed width. I s there any other way that it can be done with %?
to fix this, you simply need to update the box-sizing parameter and set this to border-box in your css. Or you can do this for all elements by simply adding the following. This tells the browser to account for any border and padding in the values you specify for an element's width and height.
No, element width does not include padding, margin, or border. The basic difference between padding and width is that in padding you define the space around the element and on the other hand in the width you define the space of the element. Property Used: width: This property is used to define the size of the element.
For width it's easy, simply remove the width: 100% rule. By default, the div will stretch to fit the parent container. Height is not quite so simple.
In general, use margins when you're adjusting the spacing of an element in relation to another element (i.e a div in relation to another div on the page), and padding when you're adjusting the look of an individual element (i.e the amount of pixels between the edge of a div and the text within it).
You want to use box-sizing, see this updated example: http://jsfiddle.net/Lca5c/1/
Your CSS will look like:
.left{
position:absolute;
width:30%;
background:red;
left:0;
height:100%;
display:block;
padding:5px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
The reason it's been pushed out is due to the padding you've added to to div. Make sure you check out the browser compatibility (here) to see if it matches your requirements.
I know that is a old post. The best solution is to add
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
-o-box-sizing: border-box;
box-sizing: border-box;
on your element what is in your outher box.
You can do that with div, textarea, input, select or any other element in HTML.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With