Резиновая верстка - какие свойства задать DIV-у?

#1 23 ноября 2012 в 00:27
И снова прошу помощи у знатоков программирования по пустяковому вопросу… Так сложилось, очень плохо ориентируюсь в "резиновой" верстке дивами — всегда резиновые сайты верстал таблицами (там все просто...) и не на этой системе — но да это не важно… Столкнулся с такой задачей:
По задумке, в шапке сайта 2 блока. Один фиксированный по размеру (красный справа) и второй — резиновый. Вот примерно так:

Т.е. при изменении габарита браузера, левый блок должен сжиматься а правый оставаться как есть…
Но к сожалению, по факту, происходит вот такая ерунда:

Вне зависимости от ширины браузера, если содержимое блока становится больше текущей ширины браузера, мой фиксированный правый (красный) блок просто скачет вниз, а на его место выходит распирающий…
Все это сейчас оформлено таким кодом (фрагмент из шаблона):
  1.  
  2. <div>
  3. <div style="float:left; padding-left: 15px;"> //глобальный левый блок, который должен расширяться...
  4. <div id="hed_nws"><?php $inPage->printModules('hed_nws'); ?></div> //содержимое резинового блока
  5. <div id="topmenu"><?php $inPage->printModules('topmenu'); ?></div>
  6. <div id="topmenu"><?php $inPage->printModules('topmenu2'); ?></div>
  7. <div id="pathway">
  8. <?php $inPage->printPathway('&#8594;'); ?>
  9. </div>
  10. </div>
  11. <div style="float:right;"><?php $inPage->printModules('rand_ph'); ?></div>//фиксированный правый блок
  12. </div>
  13.  
Снова очень прошу — подскажите плиз, кто знает КАК! Спасибо!)
#2 23 ноября 2012 в 01:42
ALreD, это не самый лучший способ, но рабочий. Заметьте, php я комментировал, фоны прописал для себя. Также по коду правый блок, должен быть сверху левого.
  1.  
  2. <div>
  3. <div style="float:right; background: red; width: 250px;">
  4. <?php //$inPage->printModules('rand_ph'); ?>111
  5. </div>
  6. <div style="padding-left: 15px; background: green; margin-right: 250px;">
  7. <div id="hed_nws"><?php $inPage->printModules('hed_nws'); ?></div>
  8. <div id="topmenu"><?php $inPage->printModules('topmenu'); ?></div>
  9. <div id="topmenu"><?php $inPage->printModules('topmenu2'); ?></div>
  10. <div id="pathway">
  11. <?php //$inPage->printPathway('>'); ?>222
  12. </div>
  13. </div>
  14. <div style="clear: both;">
  15. </div>
#3 23 ноября 2012 в 01:55
Сорри, вот это не понял:

Также по коду правый блок, должен быть сверху левого.

Dezerit
Т.е. у меня полюбому не получится собрать эти блоки рядом? Или я туплю?)
Так… из того что я вижу… Вы задали жесткий размер правому блоку — у меня он тоже задан, но в стилевом файле, не стал просто уточнять… Далее… Вы меняете блоки местами и просто даете псевдо-левому блоку правый margin, таким образом освобождая правый блок от сдвига левым… Хм, щас попробую так сделать…
#4 23 ноября 2012 в 02:02
ALreD, в исходном коде посмотрите, я поднял код правого блока выше левого, чтобы он загружался браузером первый.
#5 23 ноября 2012 в 18:16
Dezerit, да, Вы совершенно правы. Ваш метод работает… Единственное, что Вы имели в виду что это "не самый лучший способ"? Можно решить более грамотно такую задачу?
Спасибо за подсказку!)
#6 23 ноября 2012 в 20:35
ALreD, метод рабочий, но имеет минусы:
будь это контентная часть, то ваша правая сторона попадала в код раньше самого основного контента. Как утверждали сеошники, это не гуд. Сейчас не знаю т.к. пользуюсь более сложной схемой, примерно такой
#7 23 ноября 2012 в 21:57
Dezerit, спасибо, внимательно посмотрю то что Вы прислали.
#8 23 ноября 2012 в 23:52
Как вариант попробуйте (контент идет "выше" сайдбара):

  1. <div>
  2. <div style="float:left; margin-left:-305px; width:100%;">
  3. <div style="margin-left:305px;">
  4. content
  5. </div>
  6. </div>
  7. <div style="float:right; width:305px;">
  8. sidebar
  9. </div>
  10. <div style="clear: both"></div>
  11. </div>
Ширина правого блока 305 пикс.
Только стили вынести отдельно не забудьте.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.