Как сбросить максимальную высоту?


161

Как мне сбросить max-heightсвойство на его значение по умолчанию, если оно было предварительно установлено в каком-то правиле CSS? Это не работает:

pre {
  max-height: 250px;
}

pre.doNotLimitHeight {
  max-height: auto; // Doesn't work at least in Chrome
}

Ответы:


306

Сбросить его до none:

pre {
  max-height: 250px;
}

pre.doNotLimitHeight {
  max-height: none;
}

Ссылка


Просто обратите внимание, что это не работает min-height( noneне разрешено и приводит к тому, что значение не будет переопределено).
Джон

1
@Jon Правильно, значение по умолчанию для min-height0 равно 0, но, поскольку «Бесконечность» не является чем-то в CSS, по max-heightумолчанию используется none.
Призрак Мадары

24

Вы можете очистить атрибут max-height с помощью следующего css:

max-height:none; 

3

Просто обратите внимание, что если вы используете JavaScript для стилизации элемента, как $el.style.maxHeight = '50px';при использовании $el.style.maxHeight = 'none';не будет «сбрасывать» или «удалять» 50px, он просто переопределит его. Это означает, что если вы попытаетесь «сбросить» максимальную высоту элемента, используя $el.style.maxHeight = 'none';его, вы примените noneзначение к max-heightсвойству элемента, переопределив любые другие допустимые max-heightсвойства в правилах выбора CSS, которые соответствуют этому элементу.

Пример:

styles.css

.set-max-height { max-height: 50px; }

main.js

document.querySelectorAll('.set-max-height').forEach($el => {
  if($el.hasAttribute('data-hidden')){
    $el.style.maxHeight = '0px'; // Set max-height to 0px.
  } else {
    $el.style.maxHeight = 'none'; // 'Unset' max-height according to accepted answer.
});

Чтобы на самом деле «сбросить» встроенный стиль, вы должны использовать $el.style.removeProperty('max-height');.

Чтобы выполнить это для всего правила стиля, а не только для одного элемента, вы должны сначала найти правило, которое вы хотите изменить, а затем вызвать removePropertyфункцию этого правила:

for(let i = 0; i < document.styleSheets[0].cssRules.length; ++i){
  if(document.styleSheets[0].cssRules[i].selectorText == '.set-max-height'){
    document.styleSheets[0].cssRules[i].style.removeProperty('max-height');
    break;
  }
}

Вы можете найти объекты StyleSheetи CssRuleкак угодно, но для простого приложения я уверен, что вышеприведенного будет достаточно.

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

Приветствия.


1

Используйте либо

max-height: none;

или

max-height: 100%;

Примечание : второе относится к высоте содержащего блока.


1
извините, но это неправильно, установка max-height: 100% относится к высоте содержащего блока. Это ограничивает фактическую максимальную высоту.
BiAiB

1

Ты можешь использовать

max-height: unset;

который сбрасывает свойство к его унаследованному значению, если вы наследуете от его родителя (будет работать как наследование ключевого слова), а если вы не наследуете, оно сбрасывается к его начальному значению (будет работать как ключевое слово initial).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.