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





Не могли бы вы иметь обертку div с высотой, установленной как ваша высота и переполнение: прокрутка. Тогда внутренний div не имеет высоты, и по мере роста он будет заполняться, а затем использовать полосы прокрутки первого div?
Хорошая мысль, но все равно требуется установить базовую высоту больше, чем он хочет для элемента уровня блока. В противном случае он просто установил бы эту высоту для элемента, который его действительно волнует.
К сожалению, в 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 об активном содержимом.
Я никогда не использовал Visual Studio, но выражение css () является уникальным для Internet Explorer, поэтому я надеюсь, что их инструменты разработчика распознают его.
переполнение: авто и переполнение-x: скрыто FTW !! :) спасибо за исправление
Я попытался сделать это в пользовательском интерфейсе панели инструментов, который я создавал в jQuery, и испытал серьезное отставание в IE ... Остерегайтесь проблем с производительностью.
убедитесь, что вы используете его только для той версии IE, для которой он необходим. IE 6 не самый лучший движок рендеринга с точки зрения производительности, поэтому во многих местах у него могут быть проблемы.
в качестве альтернативы мы могли бы прекратить поддержку IE 6
Сегодня я обнаружил проблему с этим широко распространенным решением: из-за некоторых проблем с синхронизацией / загрузкой браузера выражение не всегда оценивается. Нажатие CTRL-F5 для обеспечения результата обновления примерно с 50% успешностью ... Я бы поддержал запрет IE6!
Я нашел это решение из сообщения, сделанного в 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.
Исправление (из спецификации): «Процент рассчитывается относительно высоты содержащего блока сгенерированного окна». как таковой, родительский элемент должен иметь установленную высоту, чтобы использовать min / max-height (или ширину).
selector
{
max-height:900px;
_height:expression(this.scrollHeight>899?"900px":"auto");
overflow:auto;
overflow-x:hidden;
}
Кто-нибудь еще попробовал это с успехом?
Я нашел это из 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 пикселей.
не могли бы вы просто установить максимальную высоту и установить
overflow: scroll;?