У меня есть div с фиксированной высотой и overflow:hidden;
Я хочу проверить с помощью jQuery, имеет ли div элементы, которые выходят за пределы фиксированной высоты div. Как я могу это сделать?
javascript
jquery
html
Джастин Мельцер
источник
источник
Ответы:
На самом деле вам не нужен jQuery, чтобы проверить, происходит ли переполнение или нет. Используя
element.offsetHeight
,element.offsetWidth
,element.scrollHeight
иelement.scrollWidth
вы можете определить , если ваш элемент имеет содержание больше , чем его размер:Смотрите пример в действии: Fiddle
Но если вы хотите знать, какой элемент внутри вашего элемента видим или нет, вам нужно сделать больше вычислений. Есть три состояния для дочернего элемента с точки зрения видимости:
Если вы хотите считать полупрозрачные элементы, вам понадобится скрипт:
А если вы не хотите считать полупрозрачным, вы можете рассчитать с небольшой разницей.
источник
<p>
является элементом уровня блока и занимает 100% ширины. Если вы хотите попробовать это с количеством текста внутри р просто сделайтеp{display:inline}
. Таким образом, текст внутри определяет ширинуp
.У меня был тот же вопрос, что и у ОП, и ни один из этих ответов не соответствовал моим потребностям. Мне нужно простое условие, для простой необходимости.
Вот мой ответ:
Кроме того, вы можете изменить
scrollWidth
,scrollHeight
если вам нужно проверить любой случай.источник
Поэтому я использовал переполненную библиотеку jquery: https://github.com/kevinmarx/overflowing
После установки библиотеки, если вы хотите назначить класс
overflowing
всем переполняющим элементам, вы просто запускаете:Это даст класс
overflowing
, как<div class="targetElement overflowing">
и все элементы, которые переполнены. Затем вы можете добавить это в некоторый обработчик событий (щелчок, наведение мыши) или другую функцию, которая будет запускать вышеуказанный код, чтобы он обновлялся динамически.источник
Частично на основе ответа Мохсена (добавленное первое условие охватывает случай, когда ребенок скрыт перед родителем):
Тогда просто сделайте:
источник
Одним из способов является проверка scrollTop против самого себя. Присвойте контенту значение прокрутки, превышающее его размер, а затем проверьте, равно ли его scrollTop 0 или нет (если оно не равно 0, у него переполнение.)
http://jsfiddle.net/ukvBf/
источник
Простым английским: получить родительский элемент. Проверьте его высоту и сохраните это значение. Затем переберите все дочерние элементы и проверьте их индивидуальную высоту.
Это грязно, но вы можете получить основную идею: http://jsfiddle.net/VgDgz/
источник
Вот чистое решение jQuery, но оно довольно грязное:
источник
Это решение JQuery, которое работало для меня.
offsetWidth
и т.д. не сработало.Если это не работает, убедитесь, что родительский элемент имеет желаемую ширину (лично я должен был использовать
parent().parent())
.position
Относительно родительского. Я также включил,extra_width
потому что мои элементы («теги») содержат изображения, которые занимают небольшое время загрузить, но во время вызова функции они имеют нулевую ширину, что портит вычисления. Чтобы обойти это, я использую следующий код вызова:Надеюсь это поможет.
источник
Я исправил это, добавив еще один div в тот, который переполняется. Затем вы сравниваете высоты двух делений.
и JS
Это выглядит проще ...
источник