2014-12-10 3 views
1

У меня есть липкий div, который остается сверху, если я прокручу его. Но он изменяет размер до полного размера экрана, и я хочу, чтобы он сохранял тот же размер.Не изменяйте размер липкой div

Вот CSS-код для обертки и липкий класс:

.wrapper{ 
margin: 0 auto; 
width: 100%; 
height: 180px; 
background-color:#fff; 
border-top: 0; 
-webkit-box-shadow: 0 8px 6px -6px #B8B8B8; 
-moz-box-shadow: 0 8px 6px -6px #B8B8B8; 
box-shadow: 0 8px 6px -6px #B8B8B8; 
} 

.sticky { 
width: 100%; 
position: fixed; 
left: 0; 
top: 0; 
z-index: 100; 
border-top: 0; 
padding-left: 15px; 
padding-right: 15px; 
-webkit-box-shadow: 0 8px 6px -6px #B8B8B8; 
-moz-box-shadow: 0 8px 6px -6px #B8B8B8; 
box-shadow: 0 8px 6px -6px #B8B8B8; 
} 

А вот код JS:

var global = {}; 

$(document).ready(function(){ 

var element = $(".wrapper"); 
    offset = element.offset(); 

global.top = offset.top; 
global.height = element.outerHeight(); 

}); 

$(window).scroll(function() { 

var scroll_top = $(document).scrollTop(); 

if (scroll_top > global.top) { 
    $('.wrapper').addClass('sticky'); 
    $("body").css({ 
     "padding-top": global.height 
    }); 

} else { 

    $('.wrapper').removeClass('sticky'); 
    $("body").css({ 
     "padding-top": 0 
    }); 
} 

}); 

Я создал также скрипку: http://jsfiddle.net/44ep8dz4/1/

+2

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

+0

, но у меня есть отзывчивый дизайн в моем сознании, поэтому мне пришлось бы работать с контрольными точками? – Felix

+1

Если вы считаете отзывчивым @Felix, я бы не исправлял ничего на меньших дисплеях, так как он ненадежный и может вызвать проблемы с увеличением на мобильных устройствах. – wf4

ответ

4

You мог бы использовать inherit:

.sticky { 
    width: inherit; 
    ... 
} 

Для маленькой проблемы экрана, добавьте это:

@media(max-width: 768px) { 
    .sticky { 
     width: 100%; 
    } 
} 

Это отменяет width: inherit, если размер экрана меньше, чем 768px.

Демонстрация jsfiddle.

+0

Genius! Я не думал, что это сработает. Знаете ли вы, что это будет работать во всех соответствующих браузерах? – GolezTrol

+0

Блестящий - я никогда раньше этого не делал! – wf4

+0

Я только что протестировал это последние версии IE, Chrome, FF, Safari и Opera. Все работает как ожидалось :-) – wf4

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