2011-04-26 55 views
0

我有一個代碼(簡化)。我想要「高度線性2s」轉換。有沒有辦法做到這一點使用display:block和display:none屬性?我不想指定內容的高度。-WEBKIT-TRANSITION顯示樣式

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

回答

0

有情況,過渡會失敗:

  1. display: none
  2. height: auto

所以我需要改變CSS來使轉換工作。以下是演示:http://jsbin.com/axijaz/4

然而,height:auto + max-height + min-height可以重現類似的效果:

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

注:

  1. 如果最小 - 最大有大的不同,您可能需要打破轉變(見第2點)
  2. min-height only或max-height只有將觸發只有一個過渡的一側(見6版本和7

或者,如果你願意使用的包裝和js代碼,已經有人給解決here

希望它可以幫助。