<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0">
   <channel>
      <title>Trifler Blog</title>
      <link>http://trifler.ru/blog/</link>
      <description>Lasto Blogging Engine</description>
      <language>ru</language>
      <copyright>gordi</copyright>
      <managingEditor>serg_gordi@mail.ru</managingEditor>
      <webMaster>serg_gordi@mail.ru</webMaster>
      <image>
         <title>Trifler Blog</title>
         <url>http://trifler.ru/blog/i/lastoblog.png</url>
         <link>http://trifler.ru/blog/</link>
      </image>

      <item>
         <title>Position: absolute;</title>
         <link>http://trifler.ru/blog/post_1243587066.html</link>
         <description>&lt;p&gt;Продолжая ставшим кажется уже бесконечным сериал о фиксированных блоках (колонках) на

&lt;em&gt;web&lt;/em&gt;-странице, предлагаю вашему вниманию еще одну из возможных реализаций.&lt;/p&gt; 

&lt;p&gt;Наверняка 

найдутся воинствующие критиканы и противники, сомнений тут у меня нет никаких, вот только 

не надо пальцы "веером", все аргументы "за" и "против" должны нести позитив с конкретными 

примерами на подобный функционал, ибо рассматриваемое сегодня по мимо неизбежных минусов 

имеет и ряд неоспоримых достоинств.&lt;/p&gt; 

&lt;p&gt;Останавливаться на тех и других, нет смысла, цикл посвященный фиксированным блокам 

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

с огромным количеством материала, о чем сообщу дополнительно.&lt;/p&gt;

&lt;p&gt;Хочется выразить признательность 

&lt;strong&gt;Вадиму &lt;a href="http://lasto.com/blog/"&gt;Ласто&lt;/a&gt;&lt;/strong&gt;, благодаря которому и 

появилась вариация на тему.&lt;/p&gt;

&lt;p&gt;Одной из главных проблем в предлагаемом мной методе разметки каркаса 

&lt;em&gt;web&lt;/em&gt;-страницы с фиксированными элементами, является вполне закономерное желание 

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

границ окна браузера при различных размерах диагонали и разрешениях экрана монитора с 

помощью привычной всем связки - &lt;em&gt;margin:0 auto;&lt;/em&gt; и &lt;em&gt;min/max-width&lt;/em&gt; с эмуляцией 

оного для IE6, без изменения остальных размеров.&lt;/p&gt;

&lt;p&gt;Рассмотрим базовую разметку:&lt;/p&gt;

&lt;img src="i/layouts/absolute/fixed_baza.png" style="display:block;margin:10px auto;width:476px;height:87px;" alt="fixed_baza"&gt;

&lt;pre class="pre"&gt;

&amp;lt;body&amp;gt;

  &amp;lt;div class="wrap"&amp;gt;

    &amp;lt;div class="header"&amp;gt;Header&amp;lt;/div&amp;gt;

    &amp;lt;div class="middle"&amp;gt;Middle&amp;lt;/div&amp;gt;

    &amp;lt;div class="footer"&amp;gt;Footer&amp;lt;/div&amp;gt;

  &amp;lt;/div&amp;gt;

  &amp;lt;div class="fixed"&amp;gt;Fixed&amp;lt;/div&amp;gt;

&amp;lt;/body&amp;gt;&lt;/pre&gt;

&lt;p&gt;Чтобы зафиксировать колонку, запретив ее прокручивание по вертикали, выполняем 

стандартную процедуру, прописав в стилях:&lt;/p&gt;

&lt;pre class="pre"&gt;

html {overflow-y:hidden;}

html,body,.wrap {height:100%;}

body,.wrap {position:relative;}

.wrap {overflow-y:auto;}

.fixed {

  position:absolute;top:XXpx;

  right:XXpx;bottom:XXpx;width:XXpx;

}&lt;/pre&gt;

&lt;p&gt;Теперь вертикальный скролл принадлежит контейнеру с классом &lt;em&gt;wrap&lt;/em&gt;, и вот тут-то 

начинаются разночтения, блоки &lt;em&gt;header, middle, footer&lt;/em&gt; позиционируются 

относительно границ &lt;em&gt;.wrap&lt;/em&gt;, а блок &lt;em&gt;.fixed&lt;/em&gt; относительно границ &lt;em&gt;body&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Если задать &lt;em&gt;margin:0 auto;&lt;/em&gt; и &lt;em&gt;min/max-width&lt;/em&gt; для &lt;/em&gt;.wrap&lt;/em&gt; 

наша фиксированная колонка при уменьшении размеров окна браузера будет наезжать или 

прятаться под него, здесь рулит &lt;em&gt;z-index&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Этого можно избежать передав стили: &lt;em&gt;margin:0 auto;&lt;/em&gt; и &lt;em&gt;min/max-width&lt;/em&gt; - 

&lt;em&gt;body&lt;/em&gt;, но вертикальная прокрутка принадлежащая контейнеру &lt;em&gt;wrap&lt;/em&gt; будет 

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

и нарушает целостную &lt;a href="i/layouts/absolute/centerfix_scroll.htm"&gt;картинку&lt;/a&gt;.&lt;p&gt;

&lt;p&gt;Идея Мастера &lt;strong&gt;Lasto&lt;/strong&gt; заключается в следующем - надо тем или иным способом 

попытаться скрыть вертикальный скролл. И ему удалось, мягко, но настойчиво побороть мои 

сомнения, относительно того, что для пользователя подобного рода изыск, может показаться 

ущербным и ввести его в ступор :)&lt;/p&gt;

&lt;p&gt;А ведь одним из минусов метода, является отсутствие возможности прокручивать страницу по 

вертикали, если курсор мыши находится над фиксированным блоком (колонкой), к этому теперь 

добавляется  свободное пространство между самой страницей и вертикальными границами окна 

браузера.&lt;/p&gt;

&lt;p&gt;Но стоит ли этого бояться?&lt;/p&gt; 

&lt;p&gt;Нечто подобное предлагалось пару лет назад - 

&lt;a href="http://www.alistapart.com/articles/conflictingabsolutepositions"&gt;оригинал&lt;/a&gt;, 

&lt;a href="http://designformasters.info/posts/absolute-position-layout/"&gt;перевод&lt;/a&gt;, но, 

посмотрев пример к статье и увидев дополнительные прокрутки, что абсолютно не украшают, 

кто бы, что не говорил, и не под каким "соусом" делать этого я бы не стал, а также отсутствие 

возможности простыми средствами прикрутить &lt;em&gt;min/max-width&lt;/em&gt;, в голову, так или иначе, 

придет мысль, что прием, озвученный в данной публикации - путь в никуда.&lt;/p&gt;

&lt;p&gt;В общем, предложение &lt;em&gt;Вадима&lt;/em&gt; прошло проверку в боевых условиях, даю 

&lt;a href="http://nanocms.name"&gt;линк&lt;/a&gt; на реально работающий ресурс, побродите по ссылкам 

меню, там есть несколько вариантов разметки, ставший полигоном для эксперимента, за что еще раз 

говорю большое спасибо Мастеру, не убоявшегося отдать свое детище в руки маньяка, которому 

дай только волю, а для этого дела времени и не жаль вовсе...&lt;/p&gt; 

&lt;p&gt;Поиздеваться над стилями и &lt;em&gt;html&lt;/em&gt; - ох, как люблю :)&lt;/p&gt;

&lt;p&gt;Стоит заметить, там разметка выполнена несколько по иному принципу и с использованием 

процентов, что при уменьшение размеров окна браузера, переходе с одного разрешения на другое, 

приводит к небольшим погрешностям - расстояние между областью контента и фиксированной 

колонкой, меняется.&lt;/p&gt; 

&lt;p&gt;В статьях автора, посвященным вопросам глобальной разметке, в большинстве примеров, 

почти всегда, все блоки имеют &lt;em&gt;border&lt;/em&gt;, что довольно наглядно показывает взаимное 

расположение их относительно друг друга, а также позволяет четко отследить возможные не 

состыковки в реальных условиях.&lt;/p&gt;  

&lt;p&gt;Вообще, абсолютное позиционирование, на мой взгляд, предполагает в качестве единиц 

измерения абсолютные значения, тогда практически все, можно вывести с точностью до пикселя.&lt;/p&gt;

&lt;p&gt;Вернемся к вертикальному скроллу.&lt;/p&gt;

&lt;p&gt;Так, как мы используем абсолютное позиционирование, проблем нет никаких.&lt;/p&gt; 

&lt;p&gt;Собственно в базовой разметке это решается сдвигом фиксированного блока в право, что 

приводит к накрыванию прокрутки.&lt;/p&gt; 

&lt;p&gt;Но лучше и проще всего, завести еще одну фиксированную колонку соответствующего размера 

по высоте и ширине, с фоновой заливкой цвета &lt;em&gt;body&lt;/em&gt;, позиционируя ее на вертикальную 

прокрутку и задав необходимый &lt;u&gt;отступ&lt;/u&gt; слева контейнеру с классом &lt;em&gt;wrap&lt;/em&gt; на туже ширину, 

что имеет дополнительная фиксированная колонка, получая строго отцентрированный 

каркас страницы при любых размерах диагонали и разрешениях экрана монитора.&lt;/p&gt; 

&lt;p&gt;&lt;a href="i/layouts/absolute/centerfix_no_scroll.htm"&gt;Пример&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Это наиболее универсальное решение и оно пригодится для иных макетов, производных от 

базовой разметки, не все, но возможные &lt;a href=" i/users/opera/fixed_lik.png"&gt;варианты&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Тогда наш &lt;em&gt;html&lt;/em&gt;-код примет следующий вид:&lt;/p&gt;

&lt;pre class="pre"&gt;

&amp;lt;body&amp;gt;

  &amp;lt;div class="wrap"&amp;gt;

    &amp;lt;div class="header"&amp;gt;Header&amp;lt;/div&amp;gt;

    &amp;lt;div class="middle"&amp;gt;Middle&amp;lt;/div&amp;gt;

    &amp;lt;div class="footer"&amp;gt;Footer&amp;lt;/div&amp;gt;

  &amp;lt;/div&amp;gt;

  &amp;lt;div class="fixed"&amp;gt;Fixed&amp;lt;/div&amp;gt;

  &amp;lt;div class="fixed_scroll"&amp;gt;&amp;lt;/div&amp;gt;

&amp;lt;/body&amp;gt;&lt;/pre&gt;

&lt;p&gt;При отсутствии вертикальной прокрутки, страница вглядит несколько не обычно, 

нет опознавательных знаков для пользователя, чтобы хотя бы приблизительно определиться на 

каком участке оной он находится, но меню расположенное в фиксированной колонке, которое 

всегда доступно, с лихвой окупает это маленькое досадное недоразумение :)&lt;/p&gt;

&lt;p&gt;Проверено и работоспособно в IE6(7,8), FireFox 3.08, Google Chrome, SafariWin.&lt;/p&gt; 

&lt;p&gt;OPERA, у меня стоит версия 9.64, в мадших версиях разметка не проверялась, вскоре по праву 

займет достойное место "дедушки" (IE6), которому давно пора на пенсию, хотя с возложенной на 

него задачей, даже не понимая одновременно &lt;em&gt;top:XX;&lt;/em&gt; и &lt;em&gt;bottom:XX;&lt;/em&gt; справился 

отменно, получив "черную" метку и будет первым браузером, занесенным мной в разряд 

&lt;em&gt;изгоев&lt;/em&gt;, за свою тупость :(&lt;/p&gt;&lt;!-- RSS_link_to_post start --&gt;



&lt;br&gt;

&lt;div style="margin-left:10px;color:#575;font-weight:bold;"&gt;&lt;a href="http://trifler.ru/blog/post_1243587066.html"&gt;Оставить комментарий&lt;/a&gt;&lt;/div&gt; 

&lt;div style="margin-left:10px;color:#575;font-weight:bold;"&gt;&lt;a href="http://trifler.ru/blog/post_1243587066.html"&gt;All Comments&lt;/a&gt;&lt;/div&gt; 



&lt;!-- RSS_link_to_post end --&gt;&lt;!-- RSS_link_to_post start --&gt;



&lt;br&gt;

&lt;div style="margin-left:10px;color:#575;font-weight:bold;"&gt;&lt;a href="http://trifler.ru/blog/post_1243587066.html"&gt;Оставить комментарий&lt;/a&gt;&lt;/div&gt; 

&lt;div style="margin-left:10px;color:#575;font-weight:bold;"&gt;&lt;a href="http://trifler.ru/blog/post_1243587066.html"&gt;All Comments&lt;/a&gt;&lt;/div&gt; 



&lt;!-- RSS_link_to_post end --&gt;</description>
         <pubDate>Fri, 29 May 2009 15:51:06 GMT</pubDate>
      </item>
   </channel>
</rss>
