Opção 1
Use float:left
nos doisdiv
elementos e defina uma% de largura para os dois elementos div com uma largura total combinada de 100%.
Usar box-sizing: border-box;
nos elementos div flutuantes. O valor border-box força o preenchimento e as bordas na largura e altura, em vez de expandi-lo.
Use clearfix no <div id="wrapper">
para limpar os elementos filho flutuantes que farão com que a div do wrapper seja dimensionada para a altura correta.
.clearfix:after {
content: " ";
visibility: hidden;
display: block;
height: 0;
clear: both;
}
#first, #second{
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
#wrapper {
width: 500px;
border: 1px solid black;
}
#first {
border: 1px solid red;
float:left;
width:50%;
}
#second {
border: 1px solid green;
float:left;
width:50%;
}
http://jsfiddle.net/dqC8t/3381/
opção 2
Usar position:absolute
em um elemento e uma largura fixa no outro elemento.
Adicionar posição: relativo ao <div id="wrapper">
elemento para fazer com que os elementos filhos se posicionem absolutamente no <div id="wrapper">
elemento.
#wrapper {
width: 500px;
border: 1px solid black;
position:relative;
}
#first {
border: 1px solid red;
width:100px;
}
#second {
border: 1px solid green;
position:absolute;
top:0;
left:100px;
right:0;
}
http://jsfiddle.net/dqC8t/3382/
Opção 3
Use display:inline-block
nos dois div
elementos e defina uma% de largura para os dois elementos div com uma largura total combinada de 100%.
E novamente (igual ao float:left
exemplo) use box-sizing: border-box;
nos elementos div. O valor border-box força o preenchimento e as bordas na largura e altura, em vez de expandi-lo.
NOTA: os elementos de bloco embutido podem ter problemas de espaçamento, pois são afetados por espaços na marcação HTML. Mais informações aqui: https://css-tricks.com/fighting-the-space-between-inline-block-elements/
#first, #second{
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
#wrapper {
width: 500px;
border: 1px solid black;
position:relative;
}
#first {
width:50%;
border: 1px solid red;
display:inline-block;
}
#second {
width:50%;
border: 1px solid green;
display:inline-block;
}
http://jsfiddle.net/dqC8t/3383/
Uma opção final seria usar a nova opção de exibição denominada flex, mas observe que a compatibilidade do navegador pode entrar em ação:
http://caniuse.com/#feat=flexbox
http://www.sketchingwithcss.com/samplechapter/cheatsheet.html