Сделайте так, чтобы каждый раздел отображался слева / справа от линии в середине. - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть эта зеленая линия внизу в середине страницы, как я могу сделать так, чтобы каждый раздел отображался слева, а затем справа, например, раздел 1 сверху и слева, раздел 2 справа и чуть ниже следующего.

И так далее

#line {
  height: 500px;
  width: 5px;
  border: 1px solid green;
  background: green;
  position: relative;
  left: 50%;
}
<div class='about'>
  <h2>About</h2>
  <p>A little journey throguh my life/career</p>
  <div class='timeline'>
    <div id='line'></div>
    <div id='section1'>
      <h3>xx.xx.xxxx</h3>
      <h3>Timeline Section Title</h3>
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Atque voluptatum quis perferendis consectetur distinctio sequi et laborum modi mollitia iste eum doloribus vel, ea eos, molestias explicabo cumque ut, assumenda.</p>
    </div>
    <div id='section2'>
      <h3>xx.xx.xxxx</h3>
      <h3>Timeline Section Title</h3>
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Atque voluptatum quis perferendis consectetur distinctio sequi et laborum modi mollitia iste eum doloribus vel, ea eos, molestias explicabo cumque ut, assumenda.</p>
    </div>
    <div id='section3'>
      <h3>xx.xx.xxxx</h3>
      <h3>Timeline Section Title</h3>
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Atque voluptatum quis perferendis consectetur distinctio sequi et laborum modi mollitia iste eum doloribus vel, ea eos, molestias explicabo cumque ut, assumenda.</p>
    </div>
    <div id='section4'>
      <h3>xx.xx.xxxx</h3>
      <h3>Timeline Section Title</h3>
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Atque voluptatum quis perferendis consectetur distinctio sequi et laborum modi mollitia iste eum doloribus vel, ea eos, molestias explicabo cumque ut, assumenda.</p>
    </div>
    <div id='section5'>
      <h3>xx.xx.xxxx</h3>
      <h3>Timeline Section Title</h3>
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Atque voluptatum quis perferendis consectetur distinctio sequi et laborum modi mollitia iste eum doloribus vel, ea eos, molestias explicabo cumque ut, assumenda.</p>
    </div>
  </div>
</div>

Ответы [ 3 ]

0 голосов
/ 13 февраля 2020

Не изменяя структуру HTML, вы можете сделать это следующим образом:

1) Добавить класс к разделам, что-то вроде .section.

<div class="section" id='section1'>
...
</div>
<div class="section" id='section2'>
...
</div>
<div class="section" id='section3'>
...
</div>
...

2) Затем измените относительную позицию на абсолютную позицию для элемента строки, чтобы он был абсолютно позиционирован посередине.

#line {
  height: 500px;
  width: 5px;
  border: 1px solid green;
  background: green;
  position: absolute;
  left: 50%;
}

3) Наконец, сделайте каждую секцию 50% от общей ширины и используйте селектор nth-of-type(), чтобы она чередовалась слева направо, используя поле слева для секций, которые будут справа.

.timeline .section:nth-of-type(2n) {
  margin-left: 50%;
}
.section {
  width: 50%;
}

Если вы хотите, чтобы каждый раздел был немного ниже предыдущего, вы можете добавить некоторую отрицательную маржу, которая немного странна, но в этом случае может работать хорошо.

Первый раздел не нуждается в этом. Селектор номер 2, потому что это второй ребенок, а не первый. Первый - это элемент about div.

.section {
  margin-top: -50px;
}
.timeline .section:nth-of-type(2) {
  margin-top: 0;
}
0 голосов
/ 13 февраля 2020

Генерация линии как отдельного элемента просто вызовет у вас проблемы с заданием правильной высоты.

Сделайте линию границей и используйте нечетное или четное положение элемента div, чтобы определить, какая сторона pu sh это и на какую сторону рисовать линию.

.timeline > div {
    overflow: hidden;
    margin: 0;
    padding: 0;
}

.timeline > div:nth-child(odd) {
    margin-right: calc(50% - 3px);
    border-right: 5px solid green;
}

.timeline > div:nth-child(even) {
    margin-left: calc(50% - 3px);
    border-left: 5px solid green;
}
<div class='about'>
  <h2>About</h2>
  <p>A little journey throguh my life/career</p>
  <div class='timeline'>
    <div id='section1'>
      <h3>xx.xx.xxxx</h3>
      <h3>Timeline Section Title</h3>
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Atque voluptatum quis perferendis consectetur distinctio sequi et laborum modi mollitia iste eum doloribus vel, ea eos, molestias explicabo cumque ut, assumenda.</p>
    </div>
    <div id='section2'>
      <h3>xx.xx.xxxx</h3>
      <h3>Timeline Section Title</h3>
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Atque voluptatum quis perferendis consectetur distinctio sequi et laborum modi mollitia iste eum doloribus vel, ea eos, molestias explicabo cumque ut, assumenda.</p>
    </div>
    <div id='section3'>
      <h3>xx.xx.xxxx</h3>
      <h3>Timeline Section Title</h3>
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Atque voluptatum quis perferendis consectetur distinctio sequi et laborum modi mollitia iste eum doloribus vel, ea eos, molestias explicabo cumque ut, assumenda.</p>
    </div>
    <div id='section4'>
      <h3>xx.xx.xxxx</h3>
      <h3>Timeline Section Title</h3>
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Atque voluptatum quis perferendis consectetur distinctio sequi et laborum modi mollitia iste eum doloribus vel, ea eos, molestias explicabo cumque ut, assumenda.</p>
    </div>
    <div id='section5'>
      <h3>xx.xx.xxxx</h3>
      <h3>Timeline Section Title</h3>
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Atque voluptatum quis perferendis consectetur distinctio sequi et laborum modi mollitia iste eum doloribus vel, ea eos, molestias explicabo cumque ut, assumenda.</p>
    </div>
  </div>
</div>
0 голосов
/ 13 февраля 2020

Попробуйте:

#section1,
#section3,
#section5{
  float: left;
  clear: both;
}

#section2,
#section4{
  float: right;
  clear: both;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...