2009-08-31 3 views
17

У меня довольно распространенная проблема с размещением, которую я традиционно использовал для решения таблицы, но хотел бы получить совет по ее выполнению с помощью CSS. У меня есть 3 изображения, которые составляют «контейнер». Левое и правое изображения обычно отображаются только с помощью тегов, а центральное изображение отображается как «фоновое изображение» с моим контентом поверх него, так что содержимое отображается в контейнере. Я уверен, что вы видели и б/у это миллион раз:CSS Layout - Динамическая ширина DIV

<table width="100" cellpadding="0"><tr> 
<td width="50"><img src="myleftimage" /></td> 
<td style="background: url('mymiddleimage');">Content goes here...</td> 
<td width="50"><img src="myrightimage" /></td> 
</tr></table> 

хорошая вещь об этом является то, что ширина таблицы всегда ширина браузер (или родителя) и средний столбец, где содержание динамически размеры, чтобы занять оставшееся пространство между правым изображениями влево/

то, что я хочу, чтобы это воссоздать это с помощью CSS, как мало трудно кодированной информации, как это возможно так что-то вроде этого:..

<div style="float:left; width:100%"> 
    <div style="width: 50px;float:left;"><img src="myleftimage" /></div> 
    <div style="background: url('mymiddleimage');float:left;width:???">Content goes here...</div> 
    <div style="width: 50px;float:left;"><img src="myrightimage" /></div> 
</div> 

Это отлично подходит для среднего div -how, я устанавливаю ширину? Прямо сейчас я могу записать его, скажем, на 92% и т. Д. Но хочу, чтобы я хотел, чтобы он автоматически заполнял пространство. Можно ли использовать только CSS?

ответ

21

попробовать

<div style="width:100%;"> 
    <div style="width:50px; float: left;"><img src="myleftimage" /></div> 
    <div style="width:50px; float: right;"><img src="myrightimage" /></div> 
    <div style="display:block; margin-left:auto; margin-right: auto;">Content Goes Here</div> 
</div> 

или

<div style="width:100%; border:2px solid #dadada;"> 
    <div style="width:50px; float: left;"><img src="myleftimage" /></div> 
    <div style="width:50px; float: right;"><img src="myrightimage" /></div> 
    <div style="display:block; margin-left:auto; margin-right: auto;">Content Goes Here</div> 
<div style="clear:both"></div>  
</div> 
+1

Спасибо, это были отличные ответы, но я думаю, что это соответствует моим потребностям наилучшим образом, так как он использует «авто» на полях. Таким образом, он будет немного более многоразовым, и если я изменю размер изображения с помощью JavaScript, он должен учитывать изменение (я думаю). –

9

Это сделает то, что вы хотите. Фиксированные стороны с шириной 50 пикселей, а содержимое заполняет оставшуюся область.

<div style="width:100%;"> 
    <div style="width: 50px; float: left;">Left Side</div> 
    <div style="width: 50px; float: right;">Right Side</div> 
    <div style="margin-left: 50px; margin-right: 50px;">Content Goes Here</div> 
</div> 
+1

При использовании поплавка на основе макетов, вам может понадобиться, чтобы очистить поплавки (http://www.dave-woods.co.uk/index.php/float-and-clear-a-comparison-of-css-c learing-methods /) и/или установить минимальную ширину в родительском div, чтобы предотвратить перенос поплавков. – AaronSieb

5

Или, если вы знаете ширину двух "боковых" изображения и не хотите иметь дело с поплавками:

<div class="container"> 
    <div class="left-panel"><img src="myleftimage" /></div> 
    <div class="center-panel">Content goes here...</div> 
    <div class="right-panel"><img src="myrightimage" /></div> 
</div> 

CSS:

.container { 
    position:relative; 
    padding-left:50px; 
    padding-right:50px; 
} 

.container .left-panel { 
    width: 50px; 
    position:absolute; 
    left:0px; 
    top:0px; 
} 

.container .right-panel { 
    width: 50px; 
    position:absolute; 
    right:0px; 
    top:0px; 
} 

.container .center-panel { 
    background: url('mymiddleimage'); 
} 

Примечания:

Позиция: относительная на родительском div используется, чтобы сделать абсолютно позиционированные дочерние элементы сами по себе относительно этого узла.

+0

Ваше решение работает как очарование для меня Спасибо! – bAN

0

делает dynamycal ширину с мобильных устройств поддерживают

http://www.codeography.com/2011/06/14/dynamic-fixed-width-layout-with-css.html

+0

В соответствии с политиками SO ответ не должен содержать только внешние ссылки. Попытайтесь выразить этот конкретный подход, и это преимущества в нескольких абзацах. –

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