2016-10-26 87 views
1

我有一個元素,我想動畫,它必須增加高度,但是當動畫發生時,高度是向下獲得的。我該如何恢復?Css動畫,增加高度而不是降低

下面是一個例子:

https://jsfiddle.net/sppp7jdv/

例子中的代碼:

$(".triggerZone2").on("click", function() { 
 
    $(".rainbow").toggleClass("rainbowed"); 
 
});
.triggerZone2 { 
 
    width: 200px; 
 
    height: 100px; 
 
    border: 5px solid black; 
 
    margin-left: 15%; 
 
} 
 
.rainbow { 
 
    width: 10%; 
 
    height: 30px; 
 
    position: absolute; 
 
    z-index: -1; 
 
    top: 10%; 
 
} 
 
.rainbowed { 
 
    animation-name: myframes; 
 
    animation-duration: 2s; 
 
    animation-timing-function: ease-in-out; 
 
    animation-delay: 0s; 
 
    animation-iteration-count: 1; 
 
    animation-direction: normal; 
 
    animation-fill-mode: forwards; 
 
    animation-play-state: running; 
 
} 
 
@keyframes myframes { 
 
    from { 
 
    height: 0px; 
 
    } 
 
    to { 
 
    height: 400px; 
 
    } 
 
} 
 
.color1 { 
 
    width: 14%; 
 
    height: 100%; 
 
    background: linear-gradient(to right, white, #FF4540, #FF4540); 
 
    float: left; 
 
} 
 
.color2 { 
 
    width: 14%; 
 
    height: 100%; 
 
    background-color: #FF9840; 
 
    float: left; 
 
} 
 
.color3 { 
 
    width: 14%; 
 
    height: 100%; 
 
    background-color: #FFC540; 
 
    float: left; 
 
} 
 
.color4 { 
 
    width: 14%; 
 
    height: 100%; 
 
    background-color: #54C248; 
 
    float: left; 
 
} 
 
.color5 { 
 
    width: 14%; 
 
    height: 100%; 
 
    background-color: #486BBC; 
 
    float: left; 
 
} 
 
.color6 { 
 
    width: 14%; 
 
    height: 100%; 
 
    background-color: #5E49A3; 
 
    float: left; 
 
} 
 
.color7 { 
 
    width: 14%; 
 
    height: 100%; 
 
    background: linear-gradient(to right, #A266D0, #A266D0, white); 
 
    float: left; 
 
} 
 
.rainbowed { 
 
    max-height: 800px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="triggerZone2"> 
 
    <h1> 
 
      Animate 
 
     </h1> 
 
</div> 
 

 
<div class="rainbow"> 
 
    <div class="color1"> 
 
    </div> 
 
    <div class="color2"> 
 
    </div> 
 
    <div class="color3"> 
 
    </div> 
 
    <div class="color4"> 
 
    </div> 
 
    <div class="color5"> 
 
    </div> 
 
    <div class="color6"> 
 
    </div> 
 
    <div class="color7"> 
 
    </div> 
 
</div>

回答

4

在這種情況下,你需要去適應你的元素的top位置。 有關的jsfiddle的CSS代碼的例子爲.rainbowkeyframe是:

.rainbow{ width:10%; height:30px; top:370px; position:absolute; z-index: -1; } 

@keyframes myframes { 
    from { 
    height:0px; 
    top: 400px; 
    } to { 
    height:400px; 
    top:0px; 
} 
} 
+0

非常感謝你,這就是我所需要的。 – Sergi

0

或者,也許你可以嘗試

$(".triggerZone2").on("click", function(){ 
 
$(".rainbow").toggleClass("rainbowed"); 
 
});
.triggerZone2{width:200px; height:100px; 
 
border:5px solid black; margin-left:15%;} 
 

 

 
.rainbow{ width:10%; height:30px; position:absolute; z-index: -1; bottom:10%; } 
 
    
 
.rainbowed { 
 
    animation-name:myframes; 
 
    animation-duration: 2s; 
 
    animation-timing-function: ease-in-out; 
 
    animation-delay:0s; 
 
    animation-iteration-count:1; 
 
    animation-direction: normal; 
 
    animation-fill-mode: forwards; 
 
    animation-play-state: running;} 
 

 
@keyframes myframes { 
 
    from { 
 
    height:0px; 
 
    } to { 
 
    height:400px; 
 
} 
 
} 
 

 

 

 

 

 

 

 

 
.color1{width:14%; height:100%; background: linear-gradient(to right, white, #FF4540, #FF4540); float:left;} 
 
.color2{width:14%; height:100%; background-color:#FF9840; float:left;} 
 
.color3{width:14%; height:100%; background-color:#FFC540; float:left; } 
 
.color4{width:14%; height:100%; background-color:#54C248; float:left;} 
 
.color5{width:14%; height:100%; background-color:#486BBC; float:left;} 
 
.color6{width:14%; height:100%; background-color:#5E49A3; float:left;} 
 
.color7{width:14%; height:100%; background: linear-gradient(to right, #A266D0,#A266D0, white); float:left;} 
 

 
.rainbowed { 
 
max-height: 800px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<div class="triggerZone2"> 
 
    <h1> 
 
    Animate 
 
    </h1> 
 
     </div> 
 
    
 
    <div class="rainbow"> 
 
     <div class="color1"> 
 
     </div> 
 
     <div class="color2"> 
 
     </div> 
 
     <div class="color3"> 
 
     </div> 
 
     <div class="color4"> 
 
     </div> 
 
     <div class="color5"> 
 
     </div> 
 
     <div class="color6"> 
 
     </div> 
 
     <div class="color7"> 
 
     </div> 
 
    </div>

乾杯!