HTML and CSS

HTML and CSS

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

display:inline-block; and display:inline;

display:inline-block; and display:inline;

OPERA - кошка, что гуляет сама по себе.

Поиск альтернативных схем разметки, для меня начался не вчера. Все публикации, берущие свое начало со статьи "Верстка без float", написаны были давно. Просто часть из них ждала своего часа.

Под затянувшиеся праздники, явно пошли на пользу :)

Перебирание своих архивов, уточнение кое-каких деталей, что в основном свелось к проверке макетов в последних релизах браузеров, вышедших на этот день, привело, в конечном счете, к не большому циклу публикаций под условным названием "Верстаем без float".

Отвечу на возможно не заданный вопрос. К чему все эти заморочки, поиски альтернативы, ведь есть же устоявшиеся каноны? Тем более что верстка на основе техники float и на страницах этого блога представлена во всем совсем многообразии?

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

Сказанное в предыдущем абзаце, относится только к глобальной разметке и это надо правильно понимать.

К тому же, любовь автора к колонкам одинаковой высоты, ее иллюзии, превалирует над просто разметкой, а стремление сделать html-код и стили минимально возможными, приводят порой к поразительным результатам.

Это позволяет иначе взглянуть на некоторые стилевые свойства и само по себе открывает новые горизонты и перспективы по их использованию.

Но как говорится ближе к делу.

html и css

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

<style type="text/css">
#main {
  border:#000 1px solid;
  margin:5px auto;
  width:980px;
}
#middle {
  background:#ff9;
  border-right:#cc9 200px solid;
  border-left:#ddd 200px solid;
}
.left,.content,.right {
  display:inline-block;
  position:relative;
  vertical-align:top;
}
.content {background:#ff9;margin-right:-100%;width:100%;}
.left {left:-200px;width:200px;}
.right {right:-377px;width:200px;}

</style>
<!--[if lt IE 8]>
<style type="text/css">
.left,.content,.right {display:inline;}
</style>
<![endif]-->
<!--[if IE ]>
<style type="text/css">
.right {margin-left:3px;}
</style>
<![endif]-->

Контейнер с классом mail необходим для создания окантовки вокруг макета, и расположением его по центру окна браузера, и возможно, для реализации резиновой области, с ограничением по min/max-width, отведенной под контент.

На блок #middle возложена миссия создания иллюзии равной высоты колонок, для этих целей, как всегда пригодился border, это прием довольно часто используется мной, и давно уже стал фирменной фишкой для данного рода публикаций.

Для размещения колонок по горизонтали, вместо набившего оскомину float, "крутым" браузерам подсовываем display:inline-block;, а IE6(7) display:inline;

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

position:relative; для .content можно исключить, но может стать необходимым при разметке с иным расположением колонок навигации относительно области контента.

С размерами еще предстоит поиграть. А также поискать решение для придания области контента "резиновых" свойств. Это в будущем, но идея данной разметки надеюсь, вам понятна.

Что же касается OPERA, никогда не был ее поклонником. Причуды этого браузера, своеобразная манера понимания некоторых стилевых правил, часто не находит никакого приемлемого объяснения. И в этом смысле, иногда OPERA ведет себя в довольно простых ситуациях, когда нет явного "криминал", в не всякого сомнения, хуже, чем тот же IE.

Пример вам все покажет.

FireFox 3, IE6(7, 8beta2), SafariWin, Chrome - полет нормальный :)


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

14 января 2009, 17:30
№ 1Без темы
Мда... Подвела Опера. Интересно, есть ли решение, чтобы этот баг исправить...
Dimox
14 января 2009, 17:36
№ 2Фиг его знает
Да, OPERA еще тот кадр :)
Как исправить, даже не знаю :(
Вообще, это только рыба, может смена акцентов поможет.
Но хотелось бы, чтобы все было без float :)
gordi
14 января 2009, 23:35
№ 3Без темы
Почему у тебя стремление отказаться от использования float? Они какие-то трудности создают или что?
Dimox
15 января 2009, 12:35
№ 4Нет, float рулит...
Dimox >"Почему у тебя стремление... "
Интересно :)
Потом сделаю не большой анализ на основе этих публикаций, почему от float рано отазываться и что ему нет полноценной замены.
Но разные варианты разметок тоже пригодятся, при тех или иных недостатках им присущих, иногда проще испоьзовать именно их.
gordi
Адрес заметки: http://trifler.ru/blog/post_1231941540.html
Ваш комментарий к статье:



cod


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