в течение некоторого времени я возился с конкретным вопросом макета, к которому я явно подхожу неправильно.
Вот подход, разбитый на его основные компоненты:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div class="stretched">
<div class="header">SOME HEADER</div>
<div class="someControls">
<input type="button" value="click me"/>
<input type="button" value="no me"/>
</div>
<div class="inner">
some text...
</div>
</div>
</body>
</html>
со следующим css:
.stretched {
position:absolute;
height:auto;
bottom: 0;
top: 0;
left: 0;
right: 0;
width: 250px;
margin: 30px auto 20px;
background-color: green;
}
.inner {
margin:10px;
background-color: red;
overflow: auto;
}
Что я пытаюсь сделать, так это иметь div stretched
, использующий все доступное пространство вертикального окна просмотра (минус несколько пикселей выше и ниже для верхнего и нижнего колонтитула) и центрированный по горизонтали с фиксированным with.
Кажется, это работает очень хорошо. Проблема в том, что свойство overflow: auto;
не применяется к содержимому inner
, как я хочу. Когда some text...
становится длиннее, div inner
перекрывает мой контейнер и не показывает полосы прокрутки.
Вот скрипт: скрипта №1
Я хочу избежать полос прокрутки в теле страницы и вместо этого иметь переполнение, управляемое полосами прокрутки внутри inner
div, что делает stretched
всегда полностью видимым.
Я мог бы применить тот же трюк с position: absolute; top: 0; ...
и к div inner
, но тогда мне нужно явно указать высоту header
+ someControls
, чего я хочу избежать, потому что она разная на всех моих страницах.
Вот как это работает, как я хочу (за исключением части top: 40px;
): скрипка #2
Что я здесь делаю неправильно? Заранее спасибо!