2014-01-30 2 views
1

im пытается построить 3 divs. «left» «Center» и Right «all float to left». «Left» и «Right» div фиксируются по ширине (например, боковые панели). «Центр» div (контент) либо авто, либо%. Когда i (например, центр div 60%), правый div переместится в нижнее положение. Если я использую (например, центр div auto), я получаю «левый» div на месте, «center» div принимает все оставшееся пространство и «правый» div ниже.CSS простой отзывчивый дизайн

Что мне нужно, это «левое» и «правое» измерение размера дуги 250 пикселей. «Центр» заполняет оставшееся пространство между «левым и правым» div. И при изменении размера только ширина «центра div» изменяется на соответствие.

(Примечание: конечно, я использую медиа-запрос) Этот материал будет полезен для меня от 750 до 950 пикселей.)

<style type="text/css"> 
#left { 
float:left; 
height: 200px; 
width: 250px; 
border: medium dashed #03F; 
} 

#center { 
float:left; 
height: 200px; 
width: 60%; 
border: medium solid #C00; 
} 

#right { 
float:left; 
height: 200px; 
width: 250px; 
border: medium dashed #0C6; 
} 
</style> 


<div id="left"> 
</div> 

<div id="center"> 
</div> 

<div id="right"> 
</div> 
+2

без использования запросов CSS3 медиа для адаптации к каждому размеру экрана вы бы лучше использовать жидкость раскладка. я.e процентов на основе размеров для всех столбцов, иначе на небольших устройствах ваш центральный столбец будет раздавлен. – luke2012

+0

Вы используете медиа-запросы? –

ответ

4

Проверьте это: http://jsfiddle.net/87enE/

Создать wrapper и использовать display:table;. Затем используйте dislay: table-cell для дочерних элементов:

HTML:

<div id="wrapper"> 

    <div id="left"></div> 
    <div id="center"></div> 
    <div id="right"></div> 

</div> 

CSS:

#wrapper{ 
    width: 100%; 
    display: table; 
} 

#left { 
    display: table-cell;  
    height: 200px; 
    width: 250px; 
    border: medium dashed #03F; 
} 

#center { 
    display: table-cell; 
    height: 200px; 
    border: medium solid #C00; 
} 

#right { 
    display: table-cell; 
    height: 200px; 
    width: 250px; 
    border: medium dashed #0C6; 
} 

Для отзывчивым беспокойства, лучше использовать percentage вместо fixed ширина:

Fiddle: http://jsfiddle.net/87enE/3/

+0

Я не вижу, как это работает на мобильном устройстве, центральный столбец будет раздавлен. – luke2012

+0

@ luke2012 Я согласен с вами, но, тем не менее, это то, о чем просили. – tsterker

+0

@tsterker Это просто кажется неправильным, возможно, лучше получить больше информации от человека, чем просто предоставить им неадекватное исправление. Когда кто-то говорит отзывчивый, я уверен, что они хотят, чтобы он работал на небольших устройствах, этого не будет. – luke2012

1

You sh ould положить все div под table tr td и дать first и last td до размер заправки вы хотите (в%) и center до 100%.

Попробуйте это:

<style type="text/css"> 
#left { 
float:left; 
height: 200px; 
width: 100%; 
border: medium dashed #03F; 
} 

#center { 
float:left; 
height: 200px; 
width: 100%; 
border: medium solid #C00; 
} 

#right { 
float:left; 
height: 200px; 
width: 100%; 
border: medium dashed #0C6; 
} 
</style> 


<table style="width:100%;"> 
<tr> 
<td style="width:20%;"> 
<div id="left"> 
</div> 
</td> 
<td style="width:60%;"> 
<div id="center"> 
</div> 
</td> 
<td style="width:20%;"> 
<div id="right"> 
</div> 
</td> 
</table> 

вот demo

Примечание: Если вы хотите сохранить его в ответ, вы должны предоставить всю ширину в % вместо px. Также вы можете получить более подробную информацию о медиа-запросах here

Это должно помочь вам!

Спасибо.

0

В таких случаях, я считаю, FlexBox справляется с ситуацией лучше. #center 's ширина изменится, чтобы заняться оставшимся пространством.

<style> 
#container { 
    display:flex; 
    flex-flow: row nowrap; 
} 
#left { 
    height: 200px; 
    width: 250px; 
    order:0; 
    border: medium dashed #03F; 
} 
#center { 
    flex:1; 
    order:1; 
    height: 200px; 
    border: medium solid #C00; 
} 
#right { 
    height: 200px; 
    width: 250px; 
    order:2; 
    border: medium dashed #0C6; 
} 
</style> 
0

Вы можете попробовать это:

Fiddle Here:

<div id="wrapper" class="clearfix"> 

    <div class="div" id="left"> 
    </div> 
    <div class="div" id="center"> 
    </div> 
    <div class="div" id="right"> 
    </div> 

</div> 

удачи ..

Смежные вопросы