Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

min-height:100%; height:100%; not working

Tags:

I cant figure out what is wrong with my styles.
Hope someone could help me with this.
Code example:

<style type="text/css"> .maindiv {     overflow:hidden; border:#000 1px solid;     width:450px; min-height:250px; } .left_inner {     float:left; width:200px;     min-height:100%; background:#00CC33; } .right_inner {     float:left; width:150px; background:#C93; } </style> <div class="maindiv">     <div class="left_inner">Left Block content</div>     <div class="right_inner">Right block content<br />sample txt<br />sample txt</div> </div> 

The way it should be is like in Opera Browser (see image): Sample image

like image 688
wzazza Avatar asked Jan 09 '12 14:01

wzazza


People also ask

Why is not working on height in CSS?

Height % is based on it's parent (so you have to set every element above the target element to 100%) , there are a few workarounds to this though. For instance you can set it to height: 100vh; This will create the element to be 100% of your window height. Or you can use px instead.

How do I make my height 100% in HTML?

Adding min-height:100% gives you the default height you want body to have and then allows the page dimensions to fill the viewport without content breaking out of the body. This works only because html has derived its 100% height based on the viewport.

How do you set height to 100% of a parent?

container div has two parent elements: the <body> and the <html> element. And we all know that the default value of the height property is auto , so if we also set the height of <body> and <html> elements to 100%, the resulting height of the container div becomes equal the 100% height of the browser window.

Can I use min height and max-height together?

Min height always overwrites height and max-height, so you can't just use both. You can use both, but the min-height will take precedence if it ever conflicts with max-height or height.


1 Answers

The How

http://jsfiddle.net/L9GEa/

The Why

  1. One might intuitively assume (as I once did) that the html element already has a determined height, but it does not (at least in this context). Luckily (or by design) this one element has the unique property of it's height being determinable when it is assigned a percentage height. That is the essential concept because in order to calculate (determine) the height of any other element which is assigned a percentage height you must also be able to determine the height of it's parent.
  2. Anyone that has worked with CSS and the DOM enough likely will tell you they hate floats. This is because it pulls the element out of the flow, which requires additional work and thinking to juggle the effects. Instead use display:inline-block;vertical-align:top; with the one caveat that you will then have to add html comments around any white space between those elements.

The CSS

.maindiv {     overflow:hidden; border:#000 1px solid;     width:450px;min-height:250px;     /*changes*/     height:100%; } .left_inner {     float:left; width:200px;     min-height:100%; background:#00CC33;     /*changes*/     float:none;     display:inline-block;     vertical-align:top; } .right_inner {     float:left; width:150px; background:#C93;     /*changes*/     float:none;     display:inline-block;     vertical-align:top; } /*changes*/ html, body{     height:100%; } 

The HTML

<div class="maindiv">     <div class="left_inner">Left Block content</div><!--     --><div class="right_inner">Right block content<br />sample txt<br />sample txt</div> </div> 
like image 145
Lance Caraccioli Avatar answered Oct 20 '22 01:10

Lance Caraccioli