Panel animate

by dekkard

HTML

<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
<div class="container-fluid">
    <div class="row">
        <div class="col-xs-6">
            <div class="panel" id="panel_1">Panel 1
                <button> <i class="fa fa-expand"></i>
 <i class="fa fa-compress"></i>

                </button>
            </div>
            <div class="panel" id="panel_2">Panel 2
                <button> <i class="fa fa-expand"></i>
 <i class="fa fa-compress"></i>

                </button>
            </div>
        </div>
        <div class="col-xs-6">
            <div class="panel" id="panel_3">Panel 3
                <button> <i class="fa fa-expand"></i>
 <i class="fa fa-compress"></i>

                </button>
            </div>
            <div class="panel" id="panel_4">Panel 4
                <button> <i class="fa fa-expand"></i>
 <i class="fa fa-compress"></i>

                </button>
            </div>
            <div class="panel" id="panel_5">Panel 5
                <button> <i class="fa fa-expand"></i>
 <i class="fa fa-compress"></i>

                </button>
            </div>
        </div>
    </div>
</div>

CSS

html, body {
    background: #eee;
    margin: 0;
    padding: 0;
}
.container-fluid {
    padding: 0;
    margin: 15px;
}

.row div {
    -webkit-transition: width 0.5s ease, margin 0.5s ease;
    -moz-transition: width 0.5s ease, margin 0.5s ease;
    -o-transition: width 0.5s ease, margin 0.5s ease;
    transition: width 0.5s ease, margin 0.5s ease;
}

.panel {
    background: #fff;
    padding: 15px;
    height: 200px;
    border-radius: 0;
}
#panel_1 {
    border-top: 3px solid red;
}
#panel_2 {
    border-top: 3px solid orange;
}
#panel_3 {
    border-top: 3px solid green;
}
#panel_4 {
    border-top: 3px solid blue;
}
#panel_5 {
    border-top: 3px solid purple;
}
button {
    background: none;
    border: 0;
    float: right;
    background: #eee;
    padding: 5px;
}
.fa-compress {
    display: none;
}

JavaScript

$('button').click(function () {
    var $target = $(this).closest('.panel');
    var targetIndex = $('.panel').index($target);
    
    var singleHeight = $target.outerHeight(true);
    var totalHeight = singleHeight * targetIndex;
    
    $('.fa-compress').toggle();
    $('.fa-expand').toggle();
    $('.row > div').toggleClass('col-xs-6').toggleClass('col-xs-12');
    
    $('html').animate({
        scrollTop: totalHeight
    }, 30);    
});