Bootstrap时间轴响应式布局问题

时间:2015-04-07 09:27:59

标签: html css twitter-bootstrap

我一直在使用使用Bootstrap构建的示例时间轴,到目前为止它工作得相当好,但在调整大小时,某些布局并不完全排列。我已经自定义了代码,以便所有时间轴项都位于行本身的右侧,现在我遇到问题,排列每个项目的图标以及最后的最终图标。

我为这个凌乱的小提琴道歉,但这是我的小提琴:

http://jsfiddle.net/36yt7srz/

你可以看到在底部的最后一个圆圈上,当窗口很小时,它大致在时间轴的中间排列,但是当调整窗口大小时,它与该线不同步。我可以使用一些媒体查询,但我觉得这将不可避免地最终得到一个圆圈,在某些窗口尺寸下仍然会出现问题。

我正在寻找一种基本上让圆圈跟随线的方法。

这是HTML:

<!-- content -->
        <div class="col-md-12 content page">

      <!-- header icon -->
      <div class="col-xs-3">

        <img class="img-responsive" src="http://s21.postimg.org/s3hybqfwz/icon.jpg">

      </div>

      <!-- header text -->
      <div class="col-xs-9 schedule-header-text">

        <img class="img-responsive" src="http://s27.postimg.org/4y34y273z/text.jpg">

      </div>

      <!-- Timeline -->
      <div class="col-xs-12">
        <ul class="timeline">

          <li class="timeline-inverted">
            <div class="tl-circ"></div>
            <div class="timeline-panel">
              <div class="tl-heading">
                <h4>Date</h4>
              </div>
              <div class="tl-body">
                <p>Content</p>
                <p><small class="text-muted"><i class="fa fa-map-marker"></i> Location</small></p>
              </div>
            </div>
          </li>

          <li class="timeline-inverted">
            <div class="tl-circ"></div>
            <div class="timeline-panel">
              <div class="tl-heading">
                <h4>Date</h4>
              </div>
              <div class="tl-body">
                <p>Content</p>
                <p><small class="text-muted"><i class="fa fa-map-marker"></i> Location</small></p>
              </div>
            </div>
          </li>

          <li class="timeline-inverted">
            <div class="tl-circ-empty"></div>
          </li>

        </ul>
      </div>

这是CSS:

/** timeline box structure **/
.timeline {
  list-style: none;
  padding: 20px 0 20px;
  position: relative;
}

.timeline:before {
  top: 0;
  bottom: 0;
  position: absolute;
  content: " ";
  width: 2px;
  background-color: #504f4f;
  left: 5%;
}

.timeline li {
  margin-bottom: 25px;
  position: relative;
}

.timeline li:before, .timeline li:after {
  content: " ";
  display: table;
}
.timeline li:after {
  clear: both;
}
.timeline li:before, .timeline li:after {
  content: " ";
  display: table;
}

/** timeline panels **/
.timeline li .timeline-panel {
  width: 90%;
  float: left;
  background: rgba(0,0,0,0.6);
  padding: 10px;
  position: relative;
  top: 23px;
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  border-radius: 4px;
}

.timeline li .timeline-panel.noarrow:before, .timeline li .timeline-panel.noarrow:after {
  top:0;
  right:0;
  display: none;
  border: 0;
}

.timeline li.timeline-inverted .timeline-panel {
  float: right;
}

.timeline li.timeline-inverted .timeline-panel:before {
  border-left-width: 0;
  border-right-width: 15px;
  left: -15px;
  right: auto;
}

.timeline li.timeline-inverted .timeline-panel:after {
  border-left-width: 0;
  border-right-width: 14px;
  left: -14px;
  right: auto;
}


/** timeline circle icons **/
.timeline li .tl-circ {
  position: absolute;
  top: 23px;
  left: 5%;
  text-align: center;
  background: url(../img/schedule-icon.png);
  color: #fff;
  width: 35px;
  height: 35px;
  margin-left: -13px;
  z-index: 99999;
}

.timeline li .tl-circ-empty {
    position: absolute;
  top: 35px;
  left: 46px;
  text-align: center;
  background: #434343;
  width: 15px;
  height: 15px;
  margin-left: -13px;
  border: 3px solid #434343;
  border-top-right-radius: 50%;
  border-top-left-radius: 50%;
  border-bottom-right-radius: 50%;
  border-bottom-left-radius: 50%;
  z-index: 99999;
}

/** timeline content **/

.tl-heading h4 {
  margin: 0 0 10px 0;
  color: #fafafa;
}

.tl-body p, .tl-body ul {
  margin-bottom: 0;
  color: #fafafa;
}

.tl-body > p + p {
  margin-top: 5px;
}

/** media queries **/
@media (max-width: 991px) {
  .timeline li .timeline-panel {
    width: 90%;
  }
}

@media (max-width: 700px) {
  .page-header h1 { font-size: 1.8em; }

  ul.timeline:before {
    left: 40px;
  }

  ul.timeline li .timeline-panel {
    width: calc(100% - 90px);
    width: -moz-calc(100% - 90px);
    width: -webkit-calc(100% - 90px);
  }

  ul.timeline li .tl-circ {
    top: 22px;
    left: 22px;
    margin-left: 0;

  }

  ul.timeline > li > .timeline-panel {
    float: right;
  }

  ul.timeline > li > .timeline-panel:before {
    border-left-width: 0;
    border-right-width: 15px;
    left: -15px;
    right: auto;
  }

  ul.timeline > li > .timeline-panel:after {
    border-left-width: 0;
    border-right-width: 14px;
    left: -14px;
    right: auto;
  }
}

.schedule-header-text {
    padding-top: 12px;
}

.schedule-header-text img {
    max-width: 75%;
}

.content.page {
    padding: 5%;
}

1 个答案:

答案 0 :(得分:0)

我不知道我是否理解正确。 但这就是我所做的让它对齐(我改变了可见度的颜色)

.timeline li .tl-circ-empty {
  position: absolute;
  top: 35px;
  left: 5%;
  text-align: center;
  background: red;
  width: 15px;
  height: 15px;
  margin-left: -7.5px;
  border: 3px solid red;
  border-radius: 50%;
  z-index: 99999;
}

我添加了以下内容

@media (max-width: 700px){
  ul.timeline li .tl-circ-empty {
    left: 22px;
    margin-left: 10px;
  }
}

我急于去某个地方。告诉我,如果这没有解决你的问题。

<强> EDIT1

PS。就像我上面提到的,我没有足够的时间完全阅读你的css。我专注于.tl-circ-empty类来创建修复,而不触及整个css结构以缩小损伤。

EDIT2

我记得我自己处理垂直时间表。 我在this之后学到了很多东西。