如何取消最大高度?


161

max-height如果先前已在某些CSS规则中设置了属性,如何将其重置为默认值?这不起作用:

pre {
  max-height: 250px;
}

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

Answers:


306

将其重置为none

pre {
  max-height: 250px;
}

pre.doNotLimitHeight {
  max-height: none;
}

参考


请注意,这不适用于min-heightnone不允许,并导致不覆盖该值)。
2016年

1
@乔恩这是正确的,默认值min-height是0,但由于“无限”是不是一个东西在CSS中,max-height默认为none
马达拉的幽灵

24

您可以使用以下css清除max-height属性:

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;
  }
}

您可以找到StyleSheetCssRule对象,但是对于简单的应用程序,我相信上面的内容就足够了。

很抱歉将此作为答案,但我没有50个代表,所以我无法发表评论。

干杯。


1

使用任一

max-height: none;

要么

max-height: 100%;

注意:第二个相对于包含块的高度。


1
抱歉,但是这是错误的,将max-height设置为:100%相对于包含块的高度。因此,它限制了实际的最大高度。
BiAiB

1

您可以使用

max-height: unset;

如果您要从其父项继承(将其用作关键字herent),它将重置属性为其继承的值;如果您不继承该属性,则会将其重置为其初始值(将用作关键字initial)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.