2011-02-03 3 views
1

У меня есть несколько проблем с настройкой макета с горизонтальными секциями, которые должны иметь автоматическую высоту в зависимости от ее содержимого.Проблема с компоновкой css - полные секции ширины с автоматической высотой?

Это моя структура страницы.

<div id="#page-wrap"> 
<header> 
    <div class="inner"> 
     #navigation 
     #logo floated right 
    </div> 
</header> 
<section id="services"> 
    <div class="inner"> 
     #some floated boxes 
    </div> 
</section> 
<section id="main"> 
    <div class="inner"> 
     #secteion content 
     #aside sidebar 
    </div> 
</section> 
<footer> 
    <div class="inner"> 
     #footer stuff 
    </div> 
</footer> 
</div> 

заголовок, разделы и нижние колонтитулы всегда на 100%. Каждый раздел имеет .inner div, который центрирован с полем: 0 авто.

.inner { 
    margin: 0 auto; 
    padding: 96px 72px 0; 
    width: 1068px; 
    color: #3C3C3C; 
} 

и в качестве примера это мой заголовок:

header .inner { 
    background: #fff url('images/years.png') no-repeat top right; 
    position:relative; 
    /*height:100px;*/ 
} 

#logo { 
    position:absolute; 
    right:70px; 
    top:15px; 
    float:right; 
} 

ПРОБЛЕМЫ: если я не установить заголовок на определенную высоту фонового изображения получить срез. Если я проверю заголовок с помощью инструмента разработки, такого как firebug, навигация внутри него выглядит вне поля заголовка. Поэтому, если я не устанавливаю высоту 100 пикселей, горизонтальная навигация отключает фоновое изображение, даже если оно находится в том же заголовке.

любая идея, что я должен рассмотреть здесь.

ответ

1

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

edit // у вас также есть заявил, что логотип плавает, но затем показывает, что он позиционируется абсолютно - что это? и как навигация позиционируется? необходима дополнительная информация

+0

ОК, понял. однако возможно иметь в моем заголовке фоновое изображение высотой 500 пикселей, даже если заголовок имеет высоту всего 100 пикселей. -> Это действительно проблема ma. Поэтому мое фоновое изображение всегда отключается, потому что заголовок как контейнер сам по себе составляет всего 100 пикселей. есть ли способ расширить его за пределами этого контейнера, а также в качестве фона в следующем разделе? – matt

+0

Боюсь, вам нужно будет гораздо яснее в формировании ваших вопросов. Да, вы можете иметь фоновое изображение размером 500 пикселей на элементе высотой 100 пикселей (и 400 пикселей изображения не будет видно). Вы спрашиваете, может ли фоновое изображение выходить за пределы своего контейнера? Если это так, ответ - нет. В зависимости от дизайна есть несколько вещей, которые вы можете сделать. Можно было бы, чтобы заголовок действительно расширялся по высоте, когда это необходимо, чтобы выявить больше фонового изображения. Другим было бы разделение изображения на части и размещение их на разных элементах. Или поместите изображение на тело или другой элемент ... – wolfcry911

1

header, section и footer элементы не являются контейнерными элементами - если вы хотите, чтобы вести себя так, как будто они были вы должны установить их display: block - это заставит их вести себя как нормальный div бы

+0

поставили их на блокировку! моя проблема не зависит от тегов html5, а от общего стиля CSS. – matt

+0

- элемент #navigation, который также перемещается? –

+0

Да, он плавает слева. Однако ничего не меняет, если я не плаваю. – matt

1

Я думаю, что это может быть clearfix issue-- вы можете попробовать добавить <div style="clear: both;"></div>, прежде чем закрыть свой заголовок, или добавьте следующие свойства к вашему заголовку

.header { 
    overflow: hidden; 
    display: inline-block; /* Necessary to trigger "hasLayout" in IE */ 
    display: block; /* Sets element back to block */ 
} 

однако, если ваша навигация будет иметь вещи, которые вывешивают его контейнера иногда (например, выпадающего списка), лучше использовать что-то вроде метода в http://www.positioniseverything.net/easyclearing.html.

Наконец, вы также можете попробовать обернуть все это (заголовок и содержимое) в другом div, который будет иметь только свойство фона. таким образом, изображение bg не будет отключено.

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