CSS 移除样式时的高度过渡="display:none;"

CSS height transition on removal of style="display:none;"

我有html这个基本上是这样的:

<span>
  <input name="checked_field" type="text" />
  <p class="has-warning danger" style="display:none;">{{ error.first() }}</p>
</span>

display:none 在加载时由 JavaScript 添加。如果用户在 checked_field.

中键入无效值,它将被删除

由于框架通过简单地 删除 style="display:none;" 来控制可见性,我想知道:是否可以通过纯 CSS 规则来转换高度和可见性当通过 JavaScript 删除 display:none 时?同样,考虑到我无法添加第二个 class,但我坚持使用 JavaScript 框架删除 style.

我们可以通过重写 display:none 属性.

来实现
.has-warning, .has-warning[style*='display:none'] {
    transition: all 1s;
    display: block !important;
    height: 0;
    opacity: 0;
}

.has-warning:not([style*='display:none']) {
    height: 50px;
    opacity: 1;
}

这是一个 JS Fiddle: https://jsfiddle.net/eywraw8t/165903/

警告! CSS 将看到 display:nonedisplay: none 不同(space 在两者之间)所以如果它不开始工作,检查这个。