2015-08-25 3 views
1

Я реализовал липкую форму контакта, которая отлично работает. Но есть раздражающая функция, где она меняет ширину. Я пробовал всевозможные свойства ширины, такие как auto, inherit, initial, но до сих пор не могу заставить ширину оставаться такой же, как она начинает прокручиваться вниз!Ширина изменения - Sticky Div

Вот Javascript

<!-- Javascript Files --> 
<script type="text/javascript"> 
$(window).load(function(){ 
$(function() { 
    var a = function() { 
    var b = $(window).scrollTop(); 
    var d = $("#scroller-anchor").offset().top; 
    var c=$("#scroller"); 
    if (b>d) { 
     c.css({width:"initial",position:"fixed",top:"30px"}) 
    } else { 
     if (b<=d) { 
     c.css({width:"100%",position:"relative",top:""}) 
     } 
    } 
    }; 
    $(window).scroll(a);a() 
}); 
});//]]> 
</script> 

Вот скроллер ДИВ:

<div id="scroller-anchor"></div> 
    <div id="scroller" style="margin-top:10px;"> 

Существует контактная форма ниже, но не требуется для примера кода!

Любая помощь будет отличной, потраченной далеко на то, чтобы это не удавалось!

+0

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

+0

Это может быть что угодно, я только что проверил со случайным div с высотой 100px и синим фоном. Его единственная локальная версия на данный момент @JamesPederson – Frog82

+0

Когда вы пробовали width as inherit, был родительский элемент «скроллер»? Если да, то даете ли вы ширину ? – Chitrang

ответ

1

Мы сохраним начальную ширину контактной формы и присвоим ей такую ​​же ширину, как только вы прокрутите, и div будет зафиксирован.

<script type="text/javascript"> 
$(window).load(function(){ 
    $(function() { 
     var a = function() { 
     var $win = $(window); 
     var b = $win.scrollTop(); 
     var d = $("#scroller-anchor").offset().top; 
     var c=$("#scroller"); 

     //store initial width 
     var init_width = c.width(); 

     if (b>d) { 
      c.css({width:init_width,position:"fixed",top:"30px",right:($win.width()-c.offset().left-init_width)}) 
     } else { 
      if (b<=d) { 
      c.css({width:"auto",position:"relative",top:"auto",right:"auto"}) 
      } 
     } 
     }; 
     $(window).scroll(a);a() 
    }); 
});//]]> 
</script> 

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

+0

Это отлично! Спасибо Джеймсу! – Frog82

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