-WEBKIT-TRANSITION 用于显示样式

Posted

技术标签:

【中文标题】-WEBKIT-TRANSITION 用于显示样式【英文标题】:-WEBKIT-TRANSITION for display styles 【发布时间】:2011-08-13 07:25:46 【问题描述】:

我有一个代码(简化版)。我想要“高度线性 2s”过渡。有没有办法使用 display:block 和 display:none 属性来做到这一点?我不想指定内容的高度。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script type="text/javascript">
const classes = new Array("shown", "hidden");
const classesCount = 2;
var curClass = 0;
function switchClass() 
    document.getElementById("divel").className=classes[curClass = (curClass + 1) % classesCount];

</script>
<style type="text/css">
    .hidden 
        display:none;
        -webkit-transition-property: height;
        -webkit-transition-duration: 2s;
        -webkit-transition-timing-function: linear;
    
    .shown 
        display:block;
        -webkit-transition-property: height;
        -webkit-transition-duration: 2s;
        -webkit-transition-timing-function: linear;
    
</style>
</head>
<body>
    <button onclick="switchClass()">Press me</button>
    <div id="divel" class="shown">
        Hello World<br>
        Hello World<br>
        Hello World<br> 
    </div>

</body>
</html>

【问题讨论】:

【参考方案1】:

基本示例:http://jsfiddle.net/DNeEv/

但是,您需要指定准确的高度。不知道如何使用height:auto

自动高度示例:http://jsfiddle.net/nB5Du/

【讨论】:

【参考方案2】:

有些情况会导致过渡失败:

    display: none height: auto

..所以我需要更改 css 以使过渡有效。这是演示:http://jsbin.com/axijaz/4

但是,height:auto + max-height + min-height 可以重现类似的效果:

http://jsbin.com/axijaz/8/edit

注意:

    如果 min-max 相差很大,您可能需要分解转换(参见第 2 点) min-height only 或 max-height only 只会触发转换的一侧(请参阅版本 6 和 7)

或者如果你愿意使用包装器和js代码,已经有人给出了解决方案here

希望对你有帮助。

【讨论】:

以上是关于-WEBKIT-TRANSITION 用于显示样式的主要内容,如果未能解决你的问题,请参考以下文章

在 vim 中用于 inc-search 的 Emacs 样式突出显示

css 外观属性用于使用基于用户操作系统主题的平台本机样式显示元素。

Pandas 样式不适用于 Google colab

WPFDataGrid多表头的样式设计

reactstrap 样式显示问题

Npm 包样式不适用于类