Макет Css — перекрывающиеся разделы

#css #layout #html #sticky-footer #overlapping

#css #макет #HTML #липкий нижний колонтитул #перекрывающиеся

Вопрос:

У меня действительно жесткий макет, который я просто не могу разрешить..

 - Left column - Fixed,Static (always in view)
- Right column - Fluid/liquid/scrollable
--- Header - fixed 
--- left/main fluid/liquid
--- Right/sidebar - fixed width
--- footer
  

(если вышесказанное непонятно — верхний, левый / основной, правый / сайдбар, нижний колонтитул находятся ВНУТРИ правого столбца)

теперь этот макет вроде как работает ,

 <div id="left-col">left col</div>

<div id="container">

    <div id="header">header</div>
    <div id="main">
        <div id="sidebar">sidebar</div>
        main
    </div>
    <div id="footer">footer</div>
</div>

#left-col {
    width: 50px;
    position: fixed;
    background: yellow;
    left: 0;
    top: 0;
}
#container {
    margin-left: 50px;
    background: black;
}
#header {
    background: green;
}
#main {
    background: blue;
    position: relative;
}
#sidebar {
    position: absolute;
    top: 0;
    right: 0;
    width: 50px;
    background: pink;
}
#footer {
    background: red;
}
  

но все же у меня есть одна досадная проблема —
когда основное содержимое недостаточно длинное — боковая панель и нижний колонтитул перекрываются ..
Это потому, что боковая панель расположена в абсолютном положении — но опять же, если я сделаю ее относительной, и страница изменит размер, боковая панель перейдет ПОД основную … (недостаточно места для fluid …)
итак, мой вопрос заключается в следующем ,
У кого-нибудь есть идея, как сохранить нижний колонтитул ПОД боковой панелью? (Липкие трюки jQuery не работают, а трюки CSS здесь довольно хитрые ..)
или какие-либо другие ide для достижения такого макета?

JSFIDDLE:http://jsfiddle.net/VNU6Z /

Комментарии:

1. JSFiddle очень бы помог.

2. спасибо Кайлу и Роберту за ответ — но JSFIddle , как бы это ни казалось милой игрушкой, не дает точных результатов. на самом деле, предложенные здесь макеты РАБОТАЮТ в JSFiddle, но не в самом браузере (проверено в ie6-7-8)..

Ответ №1:

Вы можете использовать float: right вместо position absolute

пример

Ответ №2:

Ким прав. Сделайте div id="sidebar" float: right и сделайте div id="main" overflow:hidden

div id="main" затем изменит размер ваших плавающих элементов, как если бы у него был float: left

Комментарии:

1. спасибо за ответ, у меня были некоторые остатки от экспериментов с css, которые вызвали все проблемы .. в любом случае, я проверил ваше решение во всех браузерах, которые я обычно подтверждаю, и ie6 (как обычно) на самом деле его не понимает… в любом случае, вы указали мне правильное направление. Мне просто нужно будет, наконец, начать отказываться от поддержки ie6. эй, если Microsoft не заботится о нас, почему мы должны заботиться о них, верно?

2. что ж, прошу прощения, но мне нужно кое-что обновить. это НЕ работает в IE — основной фрейм проходит ПОД левым колоном, если задана некоторая высота. Я начинаю думать, что получить подобный кроссбраузерный макет практически невозможно.