2013-07-25 2 views
0

У меня есть DIV фиксированного заголовка #header с position: fixed; на моей странице, которая в настоящее время накладками основного содержимого DIV #mainперед началом прокрутки. Одно решение для первоначального перемещения #main ниже #header должно было бы добавить margin-top в #main. Тем не менее, мой шаблон реагирует, и заголовок будет иметь разную высоту на разных устройствах. Есть ли способ добавить css в #main, чтобы сидеть 20px ниже #header независимо от того, насколько высока #header на самом деле?Фиксированный заголовок первоначально накладками основное содержание

+0

Вы можете использовать JQuery, чтобы получить высоту заголовка при загрузке страницы, а затем применить это значение в качестве маржи-топ на ваш главный. Один вопрос: если заголовок будет иметь разную высоту на разных устройствах, вы будете назначать высоту с разной шириной или будет определяться высота заголовка суммой высот его детей? –

+0

Заголовок содержит кучу встроенных блоков, поэтому его дети начнут складываться. – deinqwertz

ответ

0

Почему бы не использовать z-index для наложения заголовка и верхнего слоя: 20px для #main.

+0

На широкоформатных устройствах заголовок может иметь высоту 10 пикселей; в этом случае ваше решение будет работать. Но на узких устройствах заголовок дочерних элементов может начинаться с стека, увеличивая высоту заголовка до, скажем, 30 пикселей. В этом случае я бы спрятал 10px основного контента. – deinqwertz

0

К сожалению нет, это невозможно в css без использования верхнего края (или верхнего слоя) на контенте, потому что предоставление позиции заголовка: fixed устраняет его из потока документа, поэтому страница выиграла ' t знать об этом относительно относительно позиционирования любого содержания ниже этого.

Решение этой проблемы будет состоять в том, чтобы вычислить высоту заголовка на загрузке страницы и добавить это значение в начало main.

Вот пример того, что: http://jsfiddle.net/CxqrY/

$(document).ready(function(){ 
    var height = $('.header').height(); 
    $('.main').css('padding-top', height); 
}); 

Это будет работать, когда страница загружена, но не при изменении ориентации. Для этого вам потребуется функция изменения размера: http://jsfiddle.net/gSFYx/

$(window).resize(function() { 
    var height = $('.header').height(); 
    $('.main').css('padding-top', height); 
}); 
Смежные вопросы