-WEBKIT-TRANSITION用于显示样式

时间:2011-04-26 19:12:35

标签: javascript html css css3

我有一个代码(简化)。我想要“高度线性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>

2 个答案:

答案 0 :(得分:1)

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

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

执行此操作

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

答案 1 :(得分:0)

有些情况下转换会失败:

  1. display: none
  2. height: auto
  3. ..所以我需要更改css以使转换工作。以下是演示:http://jsbin.com/axijaz/4

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

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

    注意:

    1. 如果min-max有很大差异,您可能需要分解转换(参见第2点)
    2. min-heightmax-height仅触发转化的一方(请参阅版本67
    3. 或者如果您愿意使用包装器和js代码,有人已经提供了解决方案here

      希望它可以提供帮助。