Ogoun
@Ogoun
Programmer

Вопрос по HTML разметке и кроссбраузерности?

Нужна следующая верстка:
7d0802aace74e9e2ed41056516f0b02d.png


Где левая и правая колонки не должны превышать высоту страницы. Т.е. сама страница не должна прокручитваться, прокручивается только контент в колонках. Решил при помощи следующих стилей:
<style>
        body
        {
            position: absolute;
            margin: 0;
            padding: 80px 0 0 0;
            right: 0;
            top: 0;
            left: 0;
            bottom: 0;
            display: block;
        }

        #area
        {
            width: 100%;
            height: 98%;
        }

        #header
        {
            position: absolute;
            width: 100%;
            height: 75px;
            top: 0px;
        }

        #left
        {
            position: relative;
            display: block;
            overflow: scroll;
            height: 100%;
        }

        #right
        {
            min-width: 400px;
            position: relative;
            display: block;
            overflow: scroll;
            height: 100%;
        }
    </style>



Которые применяю для такого HTML:
<body>
    <div id="header">
        <h1>Заголовок</h1>
    </div>
    <table id="area" border="1">
        <tr>
            <td style="height: 100%; width: 40%;">
                <div id="left">
                </div>
            </td>
            <td style="height: 100%;">
                <div id="right">
                </div>
            </td>
        </tr>
    </table>
</body>



Работает отлично в IE, Chrome, Opera и Safari, и совершенно не работает в Firefox.

Кто-нибудь может подсказать причину?

Сам я от верстки и HTML далек, и не в курсе, может есть более простые способы для решения такой проблемы?

Решения при помощи HTML5 и css-expressions не годятся. Нужен простой HTML и CSS.
  • Вопрос задан
  • 2746 просмотров
Пригласить эксперта
Ответы на вопрос 3
@Silver_Clash
Проблема в том что вы смешали размеры в абсолютных и относительных выражениях. Лучше использовать что то одно.

Если указывать размеры в относительных выражениях, то необходимо ЯВНО указать высоту/ширину (я так понял что основная проблема у Вас с высотой) для всех вышестоящих элементов начиная с body. При этом не забудьте так же в таблице прописать tbody и указать размеры и для него тоже. То есть всем элементам необходимо указать height=100%; (ну или сколько там требует ваша верстка).
Если хотя бы для одного родительского элемента размер не будет указан явно, что для такого элемента FF будет считать height/width = auto (растягивать по содержимому). Соответственно для всех дочерних элементов уже будет бесполезно указывать 100%, т.к. 100% от auto = auto.

Второй вариант указывать размеры в абсолютных величинах, но при этом не получится подстроить содержимое под высоту страницы без костылей. В качестве костылей можно использовать js что бы вычислить размеры на клиенте и при необходимости поменять их.
Ответ написан
Комментировать
medved13
@medved13
Ведущий front-end разработчик
Раз уж вы решили использовать position: absolute, попробуйте вот так: cssdesk.com/JeHff
Ответ написан
Комментировать
@egorinsk
Пробовали добавить тогда html { position: relative; height: 100%; }? Почитайте например, это: www.w3.org/TR/CSS2/visuren.html#positioning-scheme — у вас видимо body вырван из потока и у html высота 0.

И, насчет, «работает в IE» — вы погорячились, в 6-м ИЕ точно не будет рабоать, а может и в 7-м.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы