Теперь существует гораздо более простое решение, чем когда этот вопрос был задан пять лет назад. CSS Flexbox делает макет из двух колонок изначально простым. Это эквивалент таблицы в оригинальном вопросе:
<div style="display: flex">
<div>AAA</div>
<div>BBB</div>
</div>
Одной из приятных особенностей Flexbox является то, что он позволяет вам легко указать, как дочерние элементы должны уменьшаться и увеличиваться в зависимости от размера контейнера. Я расширю приведенный выше пример, чтобы сделать прямоугольник на всю ширину страницы, сделать левый столбец шириной не менее 75 пикселей и увеличить правый столбец, чтобы захватить оставшееся пространство. Я также перенесу стиль в отдельный блок, назначу некоторые цвета фона, чтобы столбцы были видны, и добавлю устаревшую поддержку Flex для некоторых старых браузеров.
<style type="text/css">
.flexbox {
display: -ms-flex;
display: -webkit-flex;
display: flex;
width: 100%;
}
.left {
background: #a0ffa0;
min-width: 75px;
flex-grow: 0;
}
.right {
background: #a0a0ff;
flex-grow: 1;
}
</style>
...
<div class="flexbox">
<div class="left">AAA</div>
<div class="right">BBB</div>
</div>
Flex является относительно новым, и поэтому, если вы застряли с необходимостью поддержки IE 8 и IE 9, вы не сможете его использовать. Однако на момент написания статьи http://caniuse.com/#feat=flexbox указывает, по крайней мере, частичную поддержку браузерами, которые используют 94,04% рынка.