tags:

views:

2046

answers:

2

I have 2 float:left div, the first is fixed and i want the second div stretch the remain space.

<div id="container">
 <div id="leftform"> </div>
 <div id="rightform"> </div>
</div>

Any idea? Thanks

+3  A: 

In CSS2:

#container {display:table; table-layout:fixed;}
#leftform, #rightform {display:table-cell;}
#leftform {width:100px;}

In world of IE hacks:

#container {padding-left:100px;}
#leftform {float:left; width:100px; margin-left:-100px;}
porneL
The IE hacks version is the usual way of doing it on any browser. Using ‘table-cell’ directly inside ‘table’ with no ‘table-row’ is undefined even if the browser supported table display values.
bobince
@bobince: you are wrong. CSS requires automatic generation of missing anonymous table elements. It is specified and works reliably: http://www.w3.org/TR/CSS21/tables.html#anonymous-boxes
porneL
A: 

use a javascript function to make both equal in height.

//fixing column height problem using Prototype
Event.observe(window,"load",function(){                         
    if(parseInt($('leftform').getStyle('height')) > parseInt($('rightform').getStyle('height')))
        $('rightform').setStyle({'height' : parseInt($('leftform').getStyle('height'))+'px'});
    else
        $('leftform').setStyle({'height' : parseInt($('rightform').getStyle('height'))+'px'});
});//observe

same problem here.

artarad