LINUX.ORG.RU

Не соображу, как сверстать такой дизайн беcтаблично.

 , , ,


0

1

Логика страницы: три колонки. Левая (Block4) — общеинформационная, отдельная. Общее меню, сайтовые объявления и т.п.

Средняя (Block2) — контент, правая (Block3) — связанное с ним меню — контекстная и релевантная информация. Над ними — шапка (Block1), покрывающая эти две колонки.

https://lh4.googleusercontent.com/--N5OerW2qQY/T3LYVltr2sI/AAAAAAAAGVs/B8_aRx...

Фишка в том, что ширина центральной колонки, Block2 — плавающая. От 0 (ну, или некоторого min-width, не принципиально) до фиксированного значения max-width, либо на всю доступную ширину (зависит от настроек пользователя). Колонки меню B4/B3 — фиксированные. Шапка B1 по ширине равна ширине B2+B3.

А, да, ещё по логике сверху общая шапка сайта, а внизу — футер.

Общая ширина этой конструкции при достижении средней колонкой max-width, фиксируется и всё оказывается по центру.

Ну и, собственно, раз уж у нас не табличная вёрстка, то порядок в HTML должен идти именно так, как нумерованы блоки — шапка B1, центральная колонка B2, правая B3…

Реально такое без таблиц сделать? У меня не получается :)

★★★★★

Реально такое без таблиц сделать?

Конечно, и посложнее верстку делали. Что именно не получается?

mopsene ★★★
()
Ответ на: комментарий от mopsene

Что именно не получается?

Пока, для начала, сделать ширину W1 равной W2+W3 при плавающем W2.

Если я эту триаду окружаю общим блоком-контейнером и ставлю W1 в 100%/auto, то эта триада либо разворачивается на весь экран, либо обжимает контент W2 до его ширины.

М... Вижу нечёткость не только в формулировках, но и своих мыслях :D Буду додумывать, какое мне нужно поведение центрального блока. Вернусь, когда в мозгах прояснится :)

KRoN73 ★★★★★
() автор топика

Если 4 и 3 фиксированные, то можно сделать 1 и 2 на всю ширину и установить для них отступы на ширину 4 и 3.

note173 ★★★★★
()
Ответ на: комментарий от KRoN73

В общем я немного не понял зачем такое извращение, ты же знаешь максимальную длину правого контейнера? Ну и ставь в нее, а потом уже, в зависимости от настроек пользователя, меняй на лету.

mopsene ★★★
()
Ответ на: комментарий от note173

сделать 1 и 2 на всю ширину и установить для них отступы на ширину 4 и 3

И лепить 4 и 3 по абсолютным координатам внутри родителя? Да, наверное. Тоже буду думать :)

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от mopsene

ты же знаешь максимальную длину правого контейнера?

Э... Ширину?

Ну и ставь в нее, а потом уже, в зависимости от настроек пользователя, меняй на лету.

Проблема в том, что ширина центральной колонки задаётся в сантиметрах (собственно, настройки чисто эргономические имеются в виду) или иных абсолютных (на правильно настроенном экране) величинах. А ширина колонки — в пикселях. Так что какой будет ширина шапки (правого контейнера, если ты это имел в виду) до его вывода заранее неизвестно.

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

Э... Ширину?

Да, ее.

Так что какой будет ширина шапки (правого контейнера, если ты это имел в виду) до его вывода заранее неизвестно.

Рассчитывай и генерируй верстку на лету.

mopsene ★★★
()
Ответ на: комментарий от mopsene

Рассчитывай и генерируй верстку на лету.

CSS нужно иметь сформированным до вывода изображения. Иначе будет дёргаться и мерцать. А до вывода изображения я не узнаю, сколько в пикселах будет ширина колонки, заданной в сантиметрах :)

Или в JS доступны dpi устройства? Вроде, все примеры измерения DPI оперируют выведенным изображением.

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от muhas

Э... Главная идея — это регулируемая, но фиксированная максимальная ширина центральной колонки, вокруг которой строится всё остальное.

С полностью резиновой вёрсткой на весь экран вопросов нет.

Хочется, чтобы, например, при задании ширины центральной колонки в 10cm, вся конструкция потом не разворачивалась на весь экран, а находилась в центре страницы. Но чтобы ширину эту можно было менять, как фиксированными значениями, так и с разворачиванием на всю ширину окна браузера. При чём формирование CSS должно произойти до начала вывода контента.

Чтобы совсем конкретно. Нынешний дизайн — это:
http://balancer.ru/society/2007/05/t55456--moya-moskva.html

Сверху-слева есть выпадушка «Расстояние до монитора». Пощёлкай с разными значениями.

Вот хочется добавить правую колонку под общей с контентом шапкой и сделать при отсутствии разворачивания на всю ширину центровку всего контента.



В принципе, можно попробовать тупо допилить старый вариант, но там такое количество костылей и писался он так давно, что у меня крыша поедет разбираться :) Думал, что будет проще написать с чистого листа и без костылей под всякие IE6.

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

в моем варианте измени врапер #wrapper { width: 1000px; margin:0 auto; } тогда рассчитывать в зависимости от центральной будешь ширину обертки и нет проблем - даже для осла никаких костылей не понадобится (в моем примере для осла костыль только для min-width)

не вижу проблемы (хотя и полностью описание не допонимаю, по картинке fixed применительно к ширине смутил и дальше смотрел в пол глаза)

muhas ★★★
()
Ответ на: комментарий от KRoN73

В фоксе тоже. Не помню где, но видел жаба скрипт для проблемы сего рода. Он вычислял размер окна по горизонтали и центрировал дивы без заданной ширины.

ChavaiotH
()
Ответ на: комментарий от ChavaiotH

Он вычислял размер окна по горизонтали и центрировал дивы без заданной ширины.

Это возможно уже только после начала отображения страницы. Будет перерисовка на лету — дёргание/мигание. Ненавижу такие страницы :)

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от heisenberg

Что за фетиш, не пойму? Верстай таблицами

Хочется иметь указанный порядок загрузки компонентов. Чтобы на малых экранах без адаптации работало и во всяких текстовых браузерах корректно отображалось.

Я сам не сторонник бестабличной вёрстки ради себя самой и ничего не имею против таблиц не только при выводе данные, но и при вёрстке. Но не тогда, когда они мешают :)

KRoN73 ★★★★★
() автор топика

4 - width, float
1, 2, 3 - в div с margin-left
3 - width, float
2 - margin-right

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.