Привет, я работаю над фиксированным/закрепленным Div также после изменения размера окна браузера. Для исправления Div нет проблем, но я не могу автоматически изменять размер ширины с помощью jquery. Мой текущий код:
<script type="text/javascript">
$(window).load(function(){
function fixDiv() {
var $cache = $('.pin');
if ($(window).scrollTop() > 100)
$cache.css({'position': 'fixed', 'top': '10px', width: $('.pin-wrapper').width()});
else
$cache.css({'position': 'relative', 'top': 'auto', width: $('.pin-wrapper').width()});
}
$(window).scroll(fixDiv);
fixDiv();
});
$(document).ready(function(){
fixDiv();
});
$(window).resize(function(){
fixDiv();
});
</script>
Html выглядит так:
<div class="grid-12 parent"> <!-- Kolos 12.02.2014 -->
<div class="pin-wrapper">
<div id="header" class="main-menu-container grid-12 hide-mobile pin"></div></div></div>
спасибо за любую помощь Cheers, Carol
Вы сталкиваетесь с проблемой fixDiv()
метод fixDiv()
объявляется внутри обработчика onload. Вместо этого вы можете использовать:
function fixDiv() {
var $cache = $('.pin');
if ($(window).scrollTop() > 100) $cache.css({
'position': 'fixed',
'top': '10px',
width: $('.pin-wrapper').width()
});
else $cache.css({
'position': 'relative',
'top': 0,
'width': $('#header').width()
});
}
$(window).on('load resize scroll', fixDiv);
Но в вашей размещенной HTML-разметке появляется, как нет элемента с header
класса, похоже, что вы нацеливаете элемент с header
ID. Но тогда #header
- это тот же самый элемент, что и $cache
, довольно запутанный.
Как отметил А. Вольф, вы не должны добавлять свои события в функцию load
. Поскольку вы делали это, ваше событие прокрутки не было запущено.
Вы вообще не нуждаетесь в load
как здесь видно:
Если вы scroll
или resize
вы увидите, что они работают.
Кроме того, из практики я рекомендую отделить ваши scroll
и resize
для использования отдельной функции. В функции будет легче поддерживать.
$(window).on('load resize scroll', fixDiv);
было бы достаточно. Теперь, что касается вашей проблемы, вы должны повторить ее на jsFiddle. Кстати'width': $('.header')
не имеет смысла, и ваш селектор.header
выглядит неправильно, и т.д ...