Другие языки программирования и технологии

Как сверстать 2 блока?

Здравствуйте, дорогие верстальщики! Собственно, вопрос в заголовке я уже задал, теперь опишу его суть. Есть контейнер - #main { width: 90%; margin: 0 auto; background-color: #000000 } В нём блок контента - #content { max-width: 700px; float: left; margin-bottom: 50px; padding: 10px; background-color: #FFFFFF } И блок навигации - #navbar { max-width: 350px; float: right; margin-bottom: 50px; padding: 10px; background-color: #FFFFFF } ---------------------------------------------------------------Блок контента (при изменении размеров браузера) меняется соответсвующим образом прямо пропорционально размерам web-браузера. --------------------------------------------------------------- А вот следующий за ним блок навигации, ведёт себя не совсем корректно. Ширина этого блока остаётся неизменной и при сужении web-браузера, он просто падает вниз согласно заданному ему параметру float: right и в момент сужения просто перетикает в левую сторону, в то время как блок контента на глазах меняет своё расширение. Вопрос: -----------Как сделать так чтоб оба блока вели себя одинаково и занимали всю долю экрана (свободное пространство). Чтоб при сужении экрана и при достижении min-width: XXpx; у блока контента и навигации, блок навигации падал вниз занимая там должную ширину экрана (всё оставшееся пространство)? Да и хочется чтоб в оригинальном расширении (к примеру 1280X800 или 1024X768) сохранилась такая стилизация [ лево - право margin: 0 (либо 10px либо 10%), а между блоками либо определённый процент (меленький), либо к примеру 15px ]. Думаю что объяснил всё правильно и очень сильно надеюсь на вашу помощь.
Евгений 344
Евгений 344
194
штука в том, что чтобы оба блока меняли ширину пропорционально, им нужно задавать ширину в процентах.
но если будет достигнут предел min-width, то нижний блок сместится, но ширина его при этом будет не 100%. выход - @media

HTML(только body):

<div id="main">
<div id="content">
<div class="container">
...
</div>
</div>
<div id="navbar">
<div class="container">
...
</div>
</div><br class="clearfloat" />
</div>

CSS:

<style type="text/css">
<!--
body {
font: 100%/1.4 Verdana, Arial, Helvetica, sans-serif;
margin: 0;
padding: 0;
}
#main {
width: 90%;
max-width: 1240px;
min-width: 780px;
background-color: #000000;
margin: 0 auto;
overflow: hidden;
padding:0 0 50px;
}
#navbar {
float: left;
width: 35%;
background: #FFFFFF;
}
#content {
padding: 10px 0;
width: 65%;
float: left;
background: #FFFFFF;
}
.container { padding:10px; }
.clearfloat {
clear:both;
height:0;
font-size: 1px;
line-height: 0px;

}
@media all and (max-width: 780px){
#content, #navbar { width:100%; }
}
-->
</style>
<!--[if lt IE 8]>
<style type="text/css">
#navbar { margin-right: -1px; }
</style>
<![endif]-->

без исправлений для IE6 (min-width, max-width в нем работать не будут. )
.container - нужен только для отступов внутри блоков.
IE<9 не понимают CSS запросов вида @media all and (max-width: 780px)
для них скрипт:

<script type="text/javascript">
function ieSupport(){
document.getElementById('content').style.width=document.body.clientWidth<780?'100%':'65%';
document.getElementById('navbar').style.width=document.body.clientWidth<780?'100%':'35%';
}
if(document.all) window.onload=window.onresize=function(){ ieSupport(); }
</script>
Ваня Кетов
Ваня Кетов
60 969
Лучший ответ
тебе надо задать фиксированый размер внешнего блока, в котором два других.
плавающую точку во внутренних убери а сделай #main div{float:right};И попробуй у внутренних позиционирование задать релативным..
Олег Ляпунов
Олег Ляпунов
42 851
попробуй max-width сделать в % в обоих дивах
Dima Zavydniuk
Dima Zavydniuk
8 517