Трехколоночный CSS-макет-исправлено / макс./переменная ширина
У меня возникли проблемы с получением следующего макета из трех столбцов для работы:
A B C
+-------+-------------------+------------+
| | | |
| Fixed | Use unused space | Resizable |
| | | |
+-------+-------------------+------------+
где:
- A фиксированная ширина.
- B использует любое доступное пространство в контейнере, не используемое столбцами A и C.
- C содержит содержимое, которое может изменить ширину и нужно "нажать" B на a разная ширина.
вот моя лучшая попытка создания этот: http://jsfiddle.net/x3ESz/
все другие темы, которые я рассматривал, предлагают иметь все три как плавающие с B, используя поля для предотвращения обертывания, но это не позволяет C изменять размер B на основе содержимого C (поскольку значение должно быть задано для правого поля B).
Я также очень хочу избежать обращения к JS для достижения этого.
3 ответов
Это можно легко решить с помощью добавлять overflow: hidden
to #div_middle
и удаление полей:
#div_middle {
overflow: hidden;
border:1px solid #0F0;
}
посмотреть: http://jsfiddle.net/thirtydot/x3ESz/1/
это работает во всех современных браузерах и IE7+.
вы можете исправить это без изменения макета, если вы используете этот скрипт:
$(document).ready(function() {
$('#div_right').click(function() {
$(this).append('--');
$('#div_middle').css("margin-right", $('#div_right').width() + 2 +"px");
});
});
даже работает с обеими боковыми панелями переменной ширины:
#div_left{
float:left;
border:1px solid #F00;
}
#div_middle {
overflow: hidden;
border:1px solid #0F0;
}
#div_right {
float:right;
border:1px solid #00F;
}