使用Bootstrap行创建响应时间轴

时间:2016-02-15 12:01:37

标签: html css twitter-bootstrap

我有一个使用bootstrap的布局。在移动设备上,我希望我的每一行都被定位为时间轴上的点,以便我得到这样的最终结果:

TimeLine

对于我的桌面布局,我使用两个标签,如下所示,只是围绕这些线定位文本。但是,对于移动布局,如果带有文本的行也包含时间轴上的点,那将是很好的,所以无论文本包含多少行,它们总是正确排列。

<div class="middle-line-top"></div>
<div class="middle-line"></div>

的CSS:

.middle-line {
    position: fixed;
    height: 79vh;
    bottom: 0;
    width: 1px;
    left: 50%;
    background-color: white;
    z-index: -1;
}
.middle-line:before {
    border: 5px solid white;
    width: 18px;
    height: 18px;
    display: block;
    content: '';
    bottom: 100%;
    -webkit-transform: translateX(-51%);
    transform: translateX(-51%);
    position: absolute;
    box-sizing: border-box;
    border-radius: 50%;
    z-index: -1;
}
.middle-line-top {
    position: fixed;
    height: 3vh;
    top: 0vh;
    width: 1px;
    left: 50%;
    background-color: white;
}
.middle-line-top:after {
    border: 5px solid white;
    width: 18px;
    height: 18px;
    display: block;
    content: '';
    -webkit-transform: translateX(-51%);
    transform: translateX(-51%);
    position: absolute;
    bottom: -18px;
    box-sizing: border-box;
    border-radius: 50%;
}

1 个答案:

答案 0 :(得分:2)

请尝试使用此代码

&#13;
&#13;
.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;
}
&#13;
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>

<div class="container">

    <!-- Page header -->
    
    <div class="timeline">
    
        <!-- Line component -->
        <div class="line text-muted"></div>

        <!-- Separator -->
        <div class="separator text-muted">
            <time>26. 3. 2015</time>
        </div>
        <!-- /Separator -->
    
        <!-- Panel -->
        <article class="panel panel-danger panel-outline">
    
            <!-- Icon -->
            <div class="panel-heading icon">
                <i class="glyphicon glyphicon-heart"></i>
            </div>
            <!-- /Icon -->
    
            <!-- Body -->
            <div class="panel-body">
                <strong>Someone</strong> favourited your photo.
            </div>
            <!-- /Body -->
    
        </article>
        <!-- /Panel -->
    
        <!-- Panel -->
        <article class="panel panel-default panel-outline">
    
            <!-- Icon -->
            <div class="panel-heading icon">
                <i class="glyphicon glyphicon-picture"></i>
            </div>
            <!-- /Icon -->
    
            <!-- Body -->
            <div class="panel-body">
                <img class="img-responsive img-rounded" src="//placehold.it/350x150" />
            </div>
            <!-- /Body -->
    
        </article>
        <!-- /Panel -->
    
        <!-- Panel -->
        <article class="panel panel-primary">
    
            <!-- Icon -->
            <div class="panel-heading icon">
                <i class="glyphicon glyphicon-plus"></i>
            </div>
            <!-- /Icon -->
    
            <!-- Heading -->
            <div class="panel-heading">
                <h2 class="panel-title">New content added</h2>
            </div>
            <!-- /Heading -->
    
            <!-- Body -->
            <div class="panel-body">
                Some new content has been added.
            </div>
            <!-- /Body -->
    
            <!-- Footer -->
            <div class="panel-footer">
                <small>Footer is also supported!</small>
            </div>
            <!-- /Footer -->
    
        </article>
        <!-- /Panel -->

        <!-- Separator -->
        <div class="separator text-muted">
            <time>25. 3. 2015</time>
        </div>
        <!-- /Separator -->
    
        <!-- Panel -->
        <article class="panel panel-success">
    
            <!-- Icon -->
            <div class="panel-heading icon">
                <i class="glyphicon glyphicon-plus"></i>
            </div>
            <!-- /Icon -->
    
            <!-- Heading -->
            <div class="panel-heading">
                <h2 class="panel-title">New content added</h2>
            </div>
            <!-- /Heading -->
    
            <!-- Body -->
            <div class="panel-body">
                Anything you can write!
            </div>
            <!-- /Body -->
    
            <!-- List group -->
            <ul class="list-group">
                <li class="list-group-item">Like</li>
                <li class="list-group-item">list</li>
                <li class="list-group-item">groups</li>
                <li class="list-group-item">and</li>
                <li class="list-group-item">tables</li>
            </ul>
    
        </article>
        <!-- /Panel -->
    
        <!-- Panel -->
        <article class="panel panel-info panel-outline">
    
            <!-- Icon -->
            <div class="panel-heading icon">
                <i class="glyphicon glyphicon-info-sign"></i>
            </div>
            <!-- /Icon -->
    
            <!-- Body -->
            <div class="panel-body">
                That is all.
            </div>
            <!-- /Body -->
    
        </article>
        <!-- /Panel -->
    
    </div>
    <!-- /Timeline -->

</div>
</div>
&#13;
&#13;
&#13;