Search code examples
htmlcssheightdirection

Can I invert the height direction from top-down to bottom-up?


I want to change the height growth path from top-down to bottom-up. Is it possible in CSS?

.button {
    margin-top:200px;
    margin-right:34px;
    width:150px;
    height:45px;
    background:black;
    float:right;
    transition-duration:2s;  
}
.buttom:hover{
    height:180px;
    transition-duration:2s;
}
<div class='button'> </div>

http://jsfiddle.net/yasharshahmiri/1pkemq1p/3/


Solution

  • All you need is to set position: absolute and bottom position like this:

    .buttom{
        margin-top:200px;
        margin-right:34px;
        width:150px;
        height:45px;
        background:black;
        float:right;
        position:absolute;
        bottom: 10px;
        transition: height 2s ease-in-out  
    }
    .buttom:hover{
        height:180px
    }
                           <div class='buttom'> </div>

    Use Rotate and transform-origin to be able to set position relative to the element

    .buttom{
        margin-top:200px; /* this shall be higher than the height on hover*/
        margin-right:34px;
        width:150px;
        height:45px;
        background:black;
        transition: height 2s ease-in-out ;
        transform: rotatex(180deg);
        transform-origin: top;
    }
    .buttom:hover{
        height:180px
    }
                           
    <div class='buttom'> </div>

    Or this way:

    .buttom{
        width:150px;
        height:45px;
        background:black;
        transition: height .3s cubic-bezier(0.175, 0.885, 0.32, 1.275) ;
        transform: rotatex(180deg) translate3d(0, -200px,0);/* the Y-Value shall be higher than the height on hover*/
        transform-origin: top;
    }
    .buttom:hover{
        height:180px
    }
        
    <div class='buttom'></div>