2010-10-20 2 views
8

Три столбца должны заполнять ширину родительского контейнера. Ширина левого и правого столбцов не должна быть меньше 150 пикселей. Центральная колонка не должна превышать ширину 200 пикселей.3 колонки: одна с максимальной шириной, две другие с минимальной шириной

Я сделал a reference page, который использует JavaScript для создания макета. Можно ли сделать тот же макет с чистым CSS?

screenshot http://elv1s.ru/files/html+css/min-width_max-width_columns.png

Он должен работать по крайней мере в IE 8, Firefox 3.6, Chrome 7, Safari 5 и Opera 10.63.

+0

Это может зависеть только от того, насколько совместим с браузером. –

+0

Последние версии IE, Firefox, WebKit и Opera. – NVI

ответ

3

Я не эксперт, но я уверен, что если ответ да, что именно на этой странице:

этой страницы (и весь сайт) является блестящим - он показывает вам, как достичь множества разных макетов (используя только CSS), и объясняет, как именно и почему они работают. Даже если эта страница не содержит макет, который вам подходит, есть хорошая вероятность, что страница даст вам приблизительное представление о том, какой подход вам нужно предпринять.

Также удачи!

+0

Это хорошая страница, но, похоже, она не охватывает мою проблему с min-width/max-width. – NVI

2
<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<style type="text/css"> 
#container { max-width:960px; width:100%; min-width:400px; overflow:auto;} 
#aside { height:300px; width:40%; min-width:150px; float:left; background-color:grey; } 
#primary { height:300px; width:20%; max-width:200px; float:left; background-color:red; } 
#secondary { height:300px; width:40%; min-width:150px; float:right; background-color:grey; } 
</style> 
</head> 
<body> 
<div id="container"> 
    <div id="aside">Leftmost content</div> 
    <div id="primary">Primary content</div> 
    <div id="secondary">Secondary content</div> 
</div> 
</body> 
</html> 

Пару вещей об этом макете:

  1. я определил высоту и фона только для отображения.
  2. Overflow auto находится на содержащем элементе, чтобы очистить поплавки; хотя вы также можете использовать более четкий div.
  3. Контейнер имеет ширину жидкости, но имеет максимальную длину при 960. Я выбираю это число произвольно, но это хорошая идея, чтобы максимизировать ширину жидкости до того, как линии текста станут слишком длинными.
  4. Если вы храните жидкость в контейнере, макет будет сломать, если окно просмотра становится достаточно маленьким. EDIT: Я добавил минимальную ширину 400 пикселей в контейнер, это должно устранить проблему.

Кроме того, я бы взглянул на http://www.alistapart.com/articles/holygrail/. Хотя это статья, в которой подробно описывается расположение трех столбцов с фиксированной жидкостью, я считаю, что есть несколько идей, которые вы могли бы использовать для улучшения моего макета, если бы вы были так склонны.

+0

Это не работает, когда я отключу 'max-width: 960px' http://elv1s.ru/i/3-columns-one-with-max-width-another-two-with-min-width-bug .png. Когда #container больше ширины 1000px, #aside и #secondary все еще 40% ширины. В этом случае боковые столбцы должны быть более 40% ширины, чтобы соответствовать # контейнеру. – NVI

+0

@NV Поскольку средний столбец имеет максимальную ширину 200 пикселей и установлен на 20% контейнера, когда 20% контейнера превышает 200 пикселей, макет перестает расширяться. Вы можете замаскировать этот эффект, установив фон контейнера так же, как средний столбец.Тем не менее, я не могу представить много сценариев, где вы хотели бы оптимизировать для просмотра более 1000. – Moses

Смежные вопросы