HTML and CSS

HTML and CSS

{Лаборатория экстремальной web-верстки...}

Возвращение к истокам

Возвращение к истокам

Спираль времен, закручена не слабо,
Прильнуть к истокам в гонке бытия,
На миг вернуться в прошлое хотя бы…
Вновь обрести и потерять себя…

Gordi


Периодически перечитываю свои старые посты, смотрю предложенные вашему вниманию практические примеры. Многое по прошествии времени кажется забавным и многое, если не все требует коррекции.

Знания, практика, а лозунг блога – “Практика HTML and CSS” никто не отменял, великая не заменимая вещь.

Тема “Иллюзия идеала” оказалась столь захватывающей, что никак не могу остановиться, взять передышку и опубликовать несколько постов на другие не менее интересные темы, хотя черновики давно пылятся в ящике стола - флешке :)

Но пока есть желание и время, хочется докопаться до истины, сделать маленький шажок в верном направлении. В данном случае разговор вновь пойдет о самом главном кирпичике “Техники Gordi” – блоке #middle.

Все начиналось с “Float…”, “Универсального шаблона”, его модернизации, далее - “Время шаблона…”, “Комплект шаблонов” да и в ряде других публикаций линия по выработке концепта прослеживается довольно четко.

Поиски приемлемого соотношения цена/качество, минимум html-кода и стилей, привели глубокой переработке именно центральной части из выше перечисленных ссылок на истоки и примеры. И как понимаю сейчас, многие тогда еще не осознанные до конца мысли, в общем, то и подвигли к созданию блочно-модульной концепции разметки web-страницы.

Сказывается и этот факт, что большинство моих разработок прямо или косвенно используются в скриптах Мастера Lasto. Поэтому, чем разнообразнее глобальная разметка страницы с минимумом html-кода и css, тем лучше для меня самого.

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

У меня нет полной статистики, в каком количестве разошлись по миру те же Lasto Blog, nano-CMS, portator, но то, что встречается, поверьте на слово, это сотни ресурсов, в 99% случаев нет никакого ухода от дефолта, кругом сплошные клоны и это прискорбно.

Уникальный, эксклюзивный дизайн отдельная и не менее интересная история. Но ничто не мешает применить принципы, заложенные в “Технике Gordi” и тут. Возможно, когда-нибудь дам линки на ресурсы сделанные не только мной и там будет на что посмотреть.

Ресурс, с использованием “Техники Gordi”, тестируется Вадимом Николаевичем на предмет респекта поисковиков, думаю, результаты, и их анализ будет им опубликован, о чем непременно будет сообщено дополнительно.

Вернемся к #middle.

Что представлял из себя html-код используемый мной в то время? Посмотрим ради спортивного интереса:

<div class="main">
 <div class="wrap">
   <div class="center">
     <div class="content">MIDDLE Content</div>
   </div>
   <div class="right">MIDDLE Right</div>
 </div>
 <div class="left">MIDDLE Left</div>
</div>

По человечески, да и исторической справедливости ради, стоит отметить, что прототипом послужил предложенный Александром Исаковым (uggallery) макет, впервые опубликованный на webmascon, но к сожалению, автор не пошел дальше, хотя его идея, оказалось весьма перспективной и плодотворной. В общем, респект и пожелание не останавливаться на полпути в будущем :)

Судите сами.

Вот каким он стал после соответствующих манипуляций направленных в сторону, как упрощения html, так и стилей его описывающих:

html

<div id="middle">
  <div class="wrap">
   <div class="content">MIDDLE Content</div>
  </div>
  <div class="right">MIDDLE Right</div>
  <div class="left">MIDDLE Left</div>
</div>

Встречается очень часто, но все фишка в стилях.

css

#middle {
  margin:2px auto;
  overflow:hidden;
  min-width:920px;max-width:960px;
}
*html #middle {width:960px;}
.wrap,.left,.right {
  margin-bottom:-32767px;
  padding-bottom:32767px;
}
.wrap {
  background-color:#fff;
  float:left;
  margin-right:-960px;
  width:100%;
}
.content {padding:0 200px;}
.left {
  background:url(left.png) repeat-y #eee;
  float:left;
  width:200px;
}
.right {
  background:url(left.png) repeat-y #ddd;
  float:right;
  width:200px;
}

Семь строк, тут пущено столбиком для наглядности и визуально по более кажется :) Согласитесь, если не рекорд, то близко к нему. А если учесть, что различные варианты расположения колонок отведенных под навигацию и рекламные блоки относительно области контента, не требуют полной переработки стилей, изменение двух-трех параметров в каждом конкретном случае и удаление из html-кода правой или левой колонок, вот собственно и все.

Остается направить вас на тестовую страницу, ищем ссылку #middle, где есть дополнительные пояснения. Семь вариантов, которые по мановению волшебной палочки предстанут пред вами во всей своей красе. Такой легкости исполнения и трансформации из одного состояния в другое вы вряд ли найдете где-нибудь еще.

По терзайте поиск, возможно, вам улыбнется удача, и с полным на то основанием вы сможете заявить о плагиате с моей стороны :) Чему, безусловно, буду рад, ну не может такого быть, чтобы кому-то еще не пришла в голову похожая идея.

Вот так кратко и закончим бесконечную и порядком, поднадоевшую эпопею с возможным, но явно не скорым продолжением.


RSS лента ВСЕГО блога с комментариями RSS лента ВСЕГО блога БЕЗ комментариев RSS лента этой КАТЕГОРИИ с комментариями RSS лента этой КАТЕГОРИИ и БЕЗ комментариев RSS лента ЭТОГО ПОСТА с комментариями к нему

23 августа 2008, 14:24
№ 1Без темы
Данную структуру хтмл-кода я использую уже как минимум год-полтора (http://dimox.name/3_column_css_layout/). По сравнению с твоим примером разница лишь в используемых стилях. Но принцип тот же самый.
Dimox
24 августа 2008, 23:55
№ 2Все проще и сложнее
Да Дмитрий :)
Так и написал: "Встречается очень часто, но вся фишка в стилях."
gordi
28 августа 2008, 16:17
№ 3Без темы
Очень интересно. Сейчас экспериментирую с этим шаблоном. Пока все возникающие проблемы легко удается решить.
28 августа 2008, 17:02
№ 4Проблем по сути две
1. Предварительный просмотр и печать в IE
2. Поведение страницы при перемещении по ней с помощью меток-якорей без перезагрузки самой страницы.
Говорил об этом в одной из предыдущих публикаций.
Обе связаны именно с применением overflow:hidden;
Будет интересно познакомиться с результатами экспериментов.
gordi
01 сентября 2008, 14:45
№ 5Без темы
Проверяю шаблон по несколько другим критериям, которым мой шаблон соответствует.
1. Колонки полной высоты не всегда нужны, для проверки я их отключаю.
2. Вставляю в каждую колонку картинку заведомо избыточно ширины (too long picture, как я это называю). Шаблон с защитой от дурака должен обрезать часть картинки не входящую по ширине.
Сразу видно возникшие проблемы, особенно в IE6
http://uggallery.audiopeace.ru/examples/gordi-tech /3col!.html
Проблему решил добавлением "подкладки" в центральную колку и заданием ей и боковым колонкам overflow:hidden. Но в IE6 это не решает проблему целиком Link
Подкладка растягивается по ширине картинки, уходя под правую колонку. Задание ширины в пикселях, вроде, снимает эту проблему, но я пока не пробовал подключать скрипты для эмуляции min-max-width. Не возникнет ли чего неожиданного. Еще не знаю.
Настроение: сдержанный оптимизм. Пока я не готов отказаться полностью от своего шаблона в пользу этого, но надежда остается.
Еще пара вопросов:
А. Правильно я понял, что абсолютно честных 100% ширины на этом шаблоне не добиться? Мы привязаны к min-max-width так или иначе?
Б. Что с прибитым footer-ом? Реализуемо? Пока что у меня не получилось. Хотя старался не сильно.
Может в статьях есть ответы, но я их прочесть пока не смог. Много, да и трудна для моего понимания манера, в которой статьи написаны, често признаюсь.
Буду рад ответам.
uggallery
01 сентября 2008, 18:54
№ 6Будем оптимистами
Может быть, и не совсем полно, по пунктам:

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

2. Проблема решается указанием background-color для левой и правой колонки, если будет отключена иллюзия одинаковой высоты колонок, возможно, картинка расположенная в центральной части наедет на правую колонку, также, чтобы ваша картинка в левой колонке обрезалась для .left_00 достаточно указать overflow: hidden;

Вообще, overflow:hidden; записанный так:
#middle_00,.wrap_00,.left_00,.right_00 {overflow:hidden;}
решает проблему без «прокладки».
Эмуляция min/max-width через expression для IE6 работает.

A. Почему же?
Удаление любого упоминания width, кроме, как у .wrap_00 {width:100%;} и указание для него же margin-right:-100%; дает сто процентную ширину макета.
Другой вопрос есть ли в этом необходимость.
На 21 диагонали область контента слишком широкая, читать текст не очень удобно.

B. Проблема footer-а, решаема, в ряде постов это было, но мое отношение к footer-у, который всегда внизу, скорее негативное и для блога со скролом анонсов постов и длинными постами в этом нет необходимости.

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

Жаль, что к решению проблем озвученных в № 4, пока нет подходов :)

Линк на страницу с исправлениями дам чуть позже.

Александр, ссылка на второй пример в комментарии пропала :) А на сохраненной страничке ее тоже нет.
Продублируйте еще раз, может кому и пригодится :)

http://trifler.ru/blog/ideal.html
Два линка на примеры под заголовком "Примеры к комментарию - Будем оптимистами"
gordi
03 сентября 2008, 15:24
№ 7Без темы
Спасибо за ответы. Все отлично. Решить проблему с переполненимем средней колонки мне удается, по-прежнему, только с подкладкой, но на мой взгляд это не проблема. Главное - всё работает. Даже в IE.
http://uggallery.audiopeace.ru/examples/gordi-tech /3col!4+abs-pos-header.html
Вообще, по поводу целесообразности того или иного поведения колонок и футеров... Бывают разные макеты и разные требования, поэтому хороший шаблон должен удовлетворять их как можно полнее, независимо от предпочтений отдельных разработчиков. Чем универсальнее шаблон и чем меньше он ограничивает свободу разработчика - тем лучше, я думаю.
А то, что будут постоянно спрашивать про прибитый футер - это сто процентов, к бабке не ходи. Таковы сейчас модные тенденции :))
PS: Вот ссылки к предыдущему комментарию:
http://uggallery.audiopeace.ru/examples/gordi-tech /3col!.html
Link
03 сентября 2008, 17:58
№ 8Компромиссы неизбежны...
"...Даже в IE."
Как писал, если не отключать иллюзию одинаковой высоты колонок, прокладка не нужна.
Ведь довольно часто требуется и вертикальные линии (border) отделяющие область контента от колонок под навигацию, да и фон им, совсем легкий, не будет лишним, а так только одним цветом заливка идет и чувство дискомфорта у меня это вызывает :)
Пока не тестировал. Но первые впечатления самые приятные. Чуть позже, более подробно отвечу.
"...Таковы сейчас модные тенденции"
Такое есть сплошь и рядом :)
Для главной страницы сайта это просто необходимое условие, но тут можно и попроще сделать.
Какой бы не была универсальной разметка, везде полно противоречий и компромиссы неизбежны :)
Поэтому и написал "Иллюзию идеала" :)
"Вот ссылки..."
Спасибо, линками сделаю.
gordi
04 сентября 2008, 17:41
№ 9Идеал все ближе...
Сначала об иллюзии одинаковой высоты колонок.
Говорим о примере из коммента № 7 с header и footer
Если убрать комментарии для
.wrap_00,.left_00,.right_00 {
margin-bottom:-32767px;
padding-bottom:32767px;}

и добавить контента, до появления вертикальной прокрутки, в OPREA фон правой и левой колонок пойдет выше footer-а, лечится указанием для .footer
position:relative;z-index:100;
Введение дополнительного контейнера .lining для умиротворения IE6 вполне оправдано, но может быть стоит ограничить ему функционал и только для него сделать фиксированную ширину макета, тем самым, избавляясь от этого блока. К тому же в центральной части могут находиться блоки с фиксированной шириной, при таком раскладе приуменьшении размеров окна браузера по горизонтали в IE6 все смотреться будет не очень хорошо.
В примере, линк находится ниже, класс lining стоит под звездным хаком.
Footer.
Смотрим:
Link
Все лишнее убрано, дан цвет для наглядности. При добавлении контента в любую из колонок, для быстрой оценки наводим курсор мыши на ссылку «Делаем колонку длиннее», разметка ведет себя идеально.
А вот первоначальное состояние страницы вызывает чувство дискомфорта. Если вся страница залита однородным фоном, то все замечательно.
Но тогда о какой универсальности может идти речь? Учитывая, что просмотр страницы может происходить на мониторах с разным размером диагонали и разрешением, проблема стоит достаточно остро. Тем более, что OPERA 9.5 при первоначальном открытии страницы footer поджимает.
Опять же, высота footer-а фиксирована и приходится менять массу параметров при настройке.
Возможно, другие методы привязывания footer-а к нижней границе окна браузера, смогут исправить положение.
Никогда не уделял этому серьезного внимания, может кому-то удастся решить и эту проблему без особых наворотов и лишней разметки.
Может излишне придирчив, но мы же стремимся к идеалу :)
gordi
05 сентября 2008, 19:16
№ 10Footer Gordi
Решение, предложенное uggallery с прижатием footer-а к нижней границе окна браузера не показалось мне идеальным :)

Похоже, тут традиционные методы проигрывают по всем статьям. Использовал свой метод опубликованный в http://trifler.ru/blog/post_1213870726.html
Не без изъяна конечно, но пока лучше ничего в голову не приходит.

Возможно, в будущем при наличии свободного времени, удастся сбросить его ниже по html-коду блока #middle.

Идем сюда: http://trifler.ru/blog/ideal.html далее ищем ссылку footer_gordi.

Все легко интегрируется в другие макеты, описанные в этом посте.
Никаких дополнительных блоков и прокладок для IE6 не предусмотренно.
Слегка модернизированы стили, без этого никак :)

1. Не отключайте правила отвечающие за одинаковую высоту колонок
2. Всегда задавайте левой и правой колонком необходимый вам background-color или background:url(...) repeat-y
3. Если вас не устраивает наличие минимальной вертикальной прокрутки, то просто убейте все border-ы, особенно это поможет в IE6.

Эти не хитрые правила дадут вам полную "Иллюзию идеала" :)
gordi
08 сентября 2008, 18:26
№ 11Без темы
С футером ловко получилось :) Еще один способ в копилку - это очень хорошо.
08 сентября 2008, 21:09
№ 12Без темы
Перенос footer-а ниже блока #middle по html-коду тоже получается нормально :)
А вот с высланным тебе "super_graal", номер не проходит :)
Причем в IE6 все "ОК", а вот семерка и FF2(3) с OPERA 9.xx растягивать по высоте контейнер #middle не желают :)
gordi

Трекбэки:

06 сентября 2008, 23:24
Рекомендую обратить внимание на новинку в области HTML-CSS-шаблонов: "Техника Gordi", как ее сам автор называет.
Адрес заметки: http://trifler.ru/blog/post_1219421644.html
Ваш комментарий к статье:



cod


Примечание:
Обязательные для заполнения поля помечены карандашом
email при указании не будет опубликован.
Адреса с http:// преобразуются в ссылки автоматически
Теги запрещены
English German French Spanish Italian Japanese
  • Programming V. Lasto
  • Designer S. Gordi
  • Created in 0,03910 seconds
  • © 2007-2010