"Single Column Responsive Timeline"
Bootstrap 3.3.0 Snippet by RobinLi

<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css"> <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script> <script src="//code.jquery.com/jquery-1.11.1.min.js"></script> <!------ Include the above in your HEAD tag ----------> <div class="container"> <!-- Timeline --> <div class="timeline"> <!-- Line component --> <div class="line text-muted"></div> <!-- Separator --> <div class="separator text-muted"> <time>2017-11-24</time> </div> <!-- /Separator --> <!-- Panel --> <article class="panel panel-primary"> <!-- Icon --> <div class="panel-heading icon"> <i class="glyphicon glyphicon-pencil"></i> </div> <!-- /Icon --> <!-- Heading --> <div class="panel-heading"> <h2 class="panel-title">Louis made field changes <a href="#panel-body-1" data-toggle="collapse"> <span class="pull-right glyphicon glyphicon-chevron-down" aria-hidden="true"></span> </a> </h2> </div> <!-- /Heading --> <!-- Body --> <div id="panel-body-1" class="panel-body"> <table class="grid-table table table-hover table-bordered table-striped"> <thead> <tr> <th>Column Name</th> <th>Original Value</th> <th>New Value</th> </tr> </thead> <tbody> <!-- ngRepeat: detailItem in vm.CurrentEditLog.Details --><tr ng-repeat="detailItem in vm.CurrentEditLog.Details" ng-form="rowForm" ng-class="vm.InlineEdit.ItemClass(detailItem)" class="ng-pristine ng-valid ng-scope" style=""> <td class="ng-binding">Stock Type</td> <td><span class="label label-default ng-binding">F-Faulty Stock</span></td> <td><span class="label label-success ng-binding">N-Normal Stock</span></td> </tr><!-- end ngRepeat: detailItem in vm.CurrentEditLog.Details --> </tbody> </table> </div> <!-- /Body --> <div class="panel-footer"> <small>2017-11-24 03:09:55</small> </div> </article> <article class="panel panel-primary"> <!-- Icon --> <div class="panel-heading icon"> <i class="glyphicon glyphicon-pencil"></i> </div> <!-- /Icon --> <!-- Heading --> <div class="panel-heading"> <h2 class="panel-title">Louis made field changes <a href="#panel-body-2" data-toggle="collapse"> <span class="pull-right glyphicon glyphicon-chevron-down" aria-hidden="true"></span> </a> </h2> </div> <!-- /Heading --> <!-- Body --> <div id="panel-body-2" class="panel-body collapse"> <table class="grid-table table table-hover table-bordered table-striped"> <thead> <tr> <th>Column Name</th> <th>Original Value</th> <th>New Value</th> </tr> </thead> <tbody> <!-- ngRepeat: detailItem in vm.CurrentEditLog.Details --><tr ng-repeat="detailItem in vm.CurrentEditLog.Details" ng-form="rowForm" ng-class="vm.InlineEdit.ItemClass(detailItem)" class="ng-pristine ng-valid ng-scope" style=""> <td class="ng-binding">Stock Type</td> <td><span class="label label-default ng-binding">F-Faulty Stock</span></td> <td><span class="label label-success ng-binding">N-Normal Stock</span></td> </tr><!-- end ngRepeat: detailItem in vm.CurrentEditLog.Details --> </tbody> </table> </div> <!-- /Body --> <!-- Footer --> <div class="panel-footer"> <small>2017-11-24 03:09:55</small> </div> <!-- /Footer --> </article> <!-- /Panel --> </div> <!-- /Timeline --> </div> </div>
.timeline { position: relative; padding: 21px 0px 10px; margin-top: 4px; margin-bottom: 30px; } .timeline .line { position: absolute; width: 4px; display: block; background: currentColor; top: 0px; bottom: 0px; margin-left: 30px; } .timeline .separator { border-top: 1px solid currentColor; padding: 5px; padding-left: 40px; font-style: italic; font-size: .9em; margin-left: 30px; } .timeline .line::before { top: -4px; } .timeline .line::after { bottom: -4px; } .timeline .line::before, .timeline .line::after { content: ''; position: absolute; left: -4px; width: 12px; height: 12px; display: block; border-radius: 50%; background: currentColor; } .timeline .panel { position: relative; margin: 10px 0px 21px 70px; clear: both; } .timeline .panel::before { position: absolute; display: block; top: 8px; left: -24px; content: ''; width: 0px; height: 0px; border: inherit; border-width: 12px; border-top-color: transparent; border-bottom-color: transparent; border-left-color: transparent; } .timeline .panel .panel-heading.icon * { font-size: 20px; vertical-align: middle; line-height: 40px; } .timeline .panel .panel-heading.icon { position: absolute; left: -59px; display: block; width: 40px; height: 40px; padding: 0px; border-radius: 50%; text-align: center; float: left; } .timeline .panel-outline { border-color: transparent; background: transparent; box-shadow: none; } .timeline .panel-outline .panel-body { padding: 10px 0px; } .timeline .panel-outline .panel-heading:not(.icon), .timeline .panel-outline .panel-footer { display: none; }

Related: See More


Questions / Comments: