.scrollbox {
overflow: auto;
width: 200px;
max-height: 200px;
margin: 50px auto;
background:
/* Shadow covers */
linear-gradient(white 30%, rgba(255,255,255,0)),
linear-gradient(rgba(255,255,255,0), white 70%) 0 100%,
/* Shadows */
radial-gradient(50% 0, farthest-side, rgba(0,0,0,.2), rgba(0,0,0,0)),
radial-gradient(50% 100%,farthest-side, rgba(0,0,0,.2), rgba(0,0,0,0)) 0 100%;
background:
/* Shadow covers */
linear-gradient(white 30%, rgba(255,255,255,0)),
linear-gradient(rgba(255,255,255,0), white 70%) 0 100%,
/* Shadows */
radial-gradient(farthest-side at 50% 0, rgba(0,0,0,.2), rgba(0,0,0,0)),
radial-gradient(farthest-side at 50% 100%, rgba(0,0,0,.2), rgba(0,0,0,0)) 0 100%;
background-repeat: no-repeat;
background-color: white;
background-size: 100% 40px, 100% 40px, 100% 14px, 100% 14px;
/* Opera doesn't support this in the shorthand */
background-attachment: local, local, scroll, scroll;
}
<div class="scrollbox">
<ul>
<li>Not enough content to scroll</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
</div>
<div class="scrollbox">
<ul>
<li>Ah! Scroll below!</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>The end!</li>
<li>No shadow there.</li>
</ul>
</div>
Элемент может быть переполнен вертикально, горизонтально или обоими. Эта функция вернет вам логическое значение, если элемент DOM переполнен:
Показать фрагмент кода
Пример ES6:
источник
$("#element").overflown()
):$.fn.overflown=function(){var e=this[0];return e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth;}
element.addEventListener ("overflow", () => log( "overflow" ), false);
ссылка: событие переполненияПо сравнению
element.scrollHeight
сelement.clientHeight
должен сделать задачу.Ниже приведены изображения из MDN, поясняющие Element.scrollHeight и Element.clientHeight.
источник
Я сделал многокомпонентную ручку, демонстрирующую вышеупомянутые ответы (например, используя overflow hidden и height), а также как вы будете расширять / сворачивать переполненные элементы
Пример 1: https://codepen.io/Kagerjay/pen/rraKLB (очень простой пример, без JavaScript, просто для обрезки переполненных элементов)
Пример 2: https://codepen.io/Kagerjay/pen/LBErJL (один обработчик события показывает больше / меньше на переполненных элементах)
Пример 3: https://codepen.io/Kagerjay/pen/MBYBoJ (Много обработчик событий во многих показывает больше / меньше на переполненных элементах)
Я также приложил пример 3 ниже , я использую Jade / Pug, так что это может быть немного многословно. Я предлагаю проверить codepens, которые я сделал, это проще понять.
источник
Будет ли что-то вроде этого: http://jsfiddle.net/Skooljester/jWRRA/1/ работать? Он просто проверяет высоту содержимого и сравнивает его с высотой контейнера. Если оно больше, чем вы можете вставить в код, добавьте кнопку «Показать больше».
Обновление: добавлен код для создания кнопки «Показать больше» в верхней части контейнера.
источник
Если вы используете jQuery, вы можете попробовать хитрость: сделать внешний
overflow: hidden
div с контентом и внутренний div с контентом. Затем используйте.height()
функцию, чтобы проверить, больше ли высота внутреннего блока, чем высота внешнего блока. Я не уверен, что это сработает, но попробуй.источник
используйте js, чтобы проверить, больше ли ребенок,
offsetHeight
чем родители .. если это так, сделайте так, чтобы родители переполняли все,scroll/hidden/auto
что вы хотите, а такжеdisplay:block
на большее деление ..источник
Вы можете проверить границы относительно родителя смещения.
Если вы передадите этому элементу элемент, он сообщит вам, полностью ли его границы находятся внутри контейнера, и по умолчанию будет смещенным родителем элемента, если не указан явный контейнер. Оно использует
источник
Другая проблема, которую вы должны рассмотреть, - это недоступность JS. Думайте о прогрессирующем очаровании или постепенном ухудшении. Я бы предложил:
источник
Вот скрипка для определения того, был ли переполнен элемент, используя div обертки с overflow: hidden и JQuery height () для измерения разницы между оболочкой и внутренним div содержимого.
Источник: рамки и расширения на jsfiddle.net
источник
Это решение JQuery, которое работало для меня.
clientWidth
и т.д. не сработало.Если это не работает, убедитесь, что родительский элемент имеет желаемую ширину (лично я должен был использовать
parent().parent())
.position
Относительно родительского. Я также включил,extra_width
потому что мои элементы («теги») содержат изображения, которые занимают небольшое время загрузить, но во время вызова функции они имеют нулевую ширину, что портит вычисления. Чтобы обойти это, я использую следующий код вызова:Надеюсь это поможет.
источник
Это сработало для меня. Спасибо.
источник
Альтернативой jquery ответа является использование клавиши [0] для доступа к необработанному элементу, например так:
источник
Я расширил элемент по причинам инкапсуляции. Из микрофонного ответа.
Используйте это так
источник