2016-05-16 3 views
1

Я ищу, чтобы добавить класс к элементу, но только если содержание требует, чтобы пользователь прокручивал.Добавить класс, только если элемент требует прокрутки

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

Я не уверен, как это сделать, но я уверен, что там будет решение js/jquery!

+0

показать код? –

+0

Вы просто хотите определить, имеет ли элемент полосы прокрутки? – WonderGrub

+0

Почему не просто использовать медиа-запросы css? Css-медиа-запросы лучше всего подходят для таких вещей. –

ответ

1

Для данного элемента, скажем, с идентификатором "MyId" вы можете сделать это:

if ($('#MyId')[0].scrollHeight > $('#MyId').innerHeight()) 
{ 
    $('#MyId').addClass('myClass'); 
} 

Объяснение:

  • scrollHeight

это высота содержимое элемента, включая то, что не видно из-за переполнения.

  • innerHeight

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

в отличие от

  • clientHeight

что то же самое, но не принимает во внимание горизонтального переполнения.

+0

'scrollHeight' - это встроенная функция javascript, а не jQuery. –

+0

Вы правы, забыл [0] – zoubida13

1

Нечто подобное должно работать. В основном вы проверяете, больше ли фактическая высота элемента, чем просто видимая высота.

if($(element).innerHeight() < $(element)[0].scrollHeight) { 
    $(element).addClass('scrollable-div'); 
} 
+0

, это не сработает, если элемент имеет прописку – zoubida13

+0

, теперь это будет работать, за исключением того, что я точно так же, как и мой ответ: D – zoubida13

+0

Ваша точка? Вы ответили за 10 секунд до меня, и впоследствии вы отредактировали свой ответ. Кроме того, у вас нет никаких объяснений, как это работает. Вы всегда должны объяснять, как работает ваш ответ, чтобы он мог принести пользу будущим читателям, а также OP. –

0

Просто добавьте .scroll функцию, она не будет работать, если вы не прокручиваются.

$(window).scroll(function() {  
    var scroll = $(window).scrollTop(); 
    if (scroll >= 0) { 
     // do something 
    } 

}); 
Смежные вопросы