Свойство максимальной высоты CSS

Есть ли хороший способ кроссбраузерность установить свойство max-height для DIV, и когда этот DIV выходит за пределы max-height, он превращается в переполнение полос прокрутки?

не могли бы вы просто установить максимальную высоту и установить overflow: scroll;?

Jason 29.07.2009 03:43

@Jason Это работает со статической высотой, например. 200 пикселей. Однако, если ваш рост выражен в процентах, например 100%, тогда переполняющееся содержимое переопределит указанную высоту и просто растянет элемент вместо его обрезки или введения полос прокрутки.

Derek Dahmer 23.04.2010 19:44
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
47
2
77 405
6

Ответы 6

Не могли бы вы иметь обертку div с высотой, установленной как ваша высота и переполнение: прокрутка. Тогда внутренний div не имеет высоты, и по мере роста он будет заполняться, а затем использовать полосы прокрутки первого div?

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

Joel Coehoorn 18.11.2008 05:35

К сожалению, в IE6 нет необходимости использовать выражение для IE6, а затем установить максимальную высоту для всех других браузеров:

 div{
       _height: expression( this.scrollHeight > 332 ? "333px" : "auto" ); /* sets max-height for IE6 */
       max-height: 333px; /* sets max-height value for all standards-compliant browsers */
       overflow:scroll;
}

Переполнение: авто, скорее всего, сработает в большинстве случаев, если возникнут дополнительные утечки.

С этим есть проблема ... он выдает предупреждение в IE6 об активном содержимом.

mcherm 31.03.2009 00:04

Я никогда не использовал Visual Studio, но выражение css () является уникальным для Internet Explorer, поэтому я надеюсь, что их инструменты разработчика распознают его.

ethyreal 22.10.2010 01:10

переполнение: авто и переполнение-x: скрыто FTW !! :) спасибо за исправление

Tom Roggero 22.03.2011 06:29

Я попытался сделать это в пользовательском интерфейсе панели инструментов, который я создавал в jQuery, и испытал серьезное отставание в IE ... Остерегайтесь проблем с производительностью.

pixelbobby 13.04.2012 23:03

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

ethyreal 18.04.2012 00:21

в качестве альтернативы мы могли бы прекратить поддержку IE 6

ethyreal 18.04.2012 00:22

Сегодня я обнаружил проблему с этим широко распространенным решением: из-за некоторых проблем с синхронизацией / загрузкой браузера выражение не всегда оценивается. Нажатие CTRL-F5 для обеспечения результата обновления примерно с 50% успешностью ... Я бы поддержал запрет IE6!

Gone Coding 19.07.2012 19:12

Я нашел это решение из сообщения, сделанного в 2005 году (Быстрый взлом Min-Height). Это хитрость, но это простой и чистый CSS:

selector {
  max-height:500px;
  height:auto !important;
  height:500px;
}

Пример для max-height, но он работает для min-height, min-width и max-width. :)

* Примечание: вы должны использовать абсолютные значения, проценты не работают.

Все, что вам сейчас нужно, это "overflow: scroll;" чтобы это работало с полосами прокрутки

Это работает только в IE6 (единственный браузер, который больше не нуждается в взломе) для min-width/height, нетmax-width/height.

mercator 14.08.2009 16:53

Исправление (из спецификации): «Процент рассчитывается относительно высоты содержащего блока сгенерированного окна». как таковой, родительский элемент должен иметь установленную высоту, чтобы использовать min / max-height (или ширину).

Kevin Peno 28.04.2012 00:04
selector
{
    max-height:900px;
    _height:expression(this.scrollHeight>899?"900px":"auto");
    overflow:auto;
    overflow-x:hidden;
}

Кто-нибудь еще попробовал это с успехом?

chainwork 23.04.2012 20:59

Я нашел это из http://www.tutorialspoint.com/css/css_scrollbars.htm и немного изменил. Кажется, работает как для IE9, так и для FF19

<style type = "text/css">
.scroll{
    display:block;
    border: 1px solid red;
    padding:5px;
    margin-top:5px;
    width:300px;

    max-height:100px;
    overflow:scroll;
}
.auto{
    display:block;
    border: 1px solid red;
    padding:5px;
    margin-top:5px;
    width:300px;
    height: 100px !important;
    max-height:110px;
    overflow:hidden;
    overflow-y:auto;
}
</style>
<p>Example of scroll value:</p>

<div class = "scroll">
    I am going to keep lot of content here just to show
    you how scrollbars works if there is an overflow in
    an element box. This provides your horizontal as well
     as vertical scrollbars.<br/>
    I am going to keep lot of content here just to show
    you how scrollbars works if there is an overflow in
    an element box. This provides your horizontal as well
     as vertical scrollbars.<br/>
    I am going to keep lot of content here just to show
    you how scrollbars works if there is an overflow in
    an element box. This provides your horizontal as well
     as vertical scrollbars.<br/>
    I am going to keep lot of content here just to show
    you how scrollbars works if there is an overflow in
    an element box. This provides your horizontal as well
     as vertical scrollbars.<br/>        
     </div>

<br />
<p>Example of auto value:</p>

<div class = "auto">
    I am going to keep lot of content here just to show
    you how scrollbars works if there is an overflow in
    an element box. This provides your horizontal as well
     as vertical scrollbars.<br/>
   </div>

Основной хак (в стиле RedWolves):

.divMax{width:550px;height:200px;overflow-Y:auto;position:absolute;}
.divInner{border:1px solid navy;background-color:white;}

Мне не нравился атрибут max-height, поэтому у меня это уже было, и я преуспел с этими двумя классами. Но это некрасиво, поэтому в поисках лучшего ответьте на этот вопрос. DivMax, имеющий position:absolute, позволяет отображать содержимое под ним, но контролирует максимальную высоту divInner до 200 пикселей.

Другие вопросы по теме