시간선을 어떻게 만드는가: 시간선

CSS를 사용하여 반응형 '시간선'을 만들어보세요.

시간선

2017

Lorem ipsum dolor sit amet, quo ei simul congue exerci, ad nec admodum perfecto mnesarchum, vim ea mazim fierent detracto. Ea quis iuvaret expetendis his, te elit voluptua dignissim per, habeo iusto primis ea eam.

2016

Lorem ipsum dolor sit amet, quo ei simul congue exerci, ad nec admodum perfecto mnesarchum, vim ea mazim fierent detracto. Ea quis iuvaret expetendis his, te elit voluptua dignissim per, habeo iusto primis ea eam.

2015

Lorem ipsum dolor sit amet, quo ei simul congue exerci, ad nec admodum perfecto mnesarchum, vim ea mazim fierent detracto. Ea quis iuvaret expetendis his, te elit voluptua dignissim per, habeo iusto primis ea eam.

직접 테스트해 보세요

시간선을 어떻게 만드는가

第一步 - HTML 추가:

<div class="timeline">
  <div class="container left">
    <div class="content">
      <h2>2017</h2>
      <p>Lorem ipsum..</p>
    </div>
  </div>
  <div class="container right">
    <div class="content">
      <h2>2016</h2>
      <p>Lorem ipsum..</p>
    </div>
  </div>
</div>

第二步 - CSS 추가:

* {
  box-sizing: border-box;
{}
/* 배경색 설정 */
body {
  background-color: #474e5d;
  font-family: Helvetica, sans-serif;
{}
/* 실제 시간선(수직 기준) */
.timeline {
  position: relative;
  max-width: 1200px;
  margin: 0 auto;
{}
/* 실제 시간선(수직 기준) */
.timeline::after {
  content: '';
  position: absolute;
  width: 6px;
  background-color: 백;
  top: 0;
  bottom: 0;
  left: 50%;
  margin-left: -3px;
{}
/* 내용을 포함하는 컨테이너 */
.container {
  padding: 10px 40px;
  position: relative;
  background-color: inherit;
  width: 50%;
{}
/* 시간선에 있는 원 */
.container::after {
  content: '';
  position: absolute;
  width: 25px;
  height: 25px;
  right: -17px;
  background-color: 백;
  border: 4px solid #FF9F55;
  top: 15px;
  border-radius: 50%;
  z-index: 1;
{}
/* 컨테이너를 왼쪽에 배치 */
.left {
  left: 0;
{}
/* 컨테이너를 오른쪽에 배치합니다 */
.right {
  left: 50%;
{}
/* 화살표를 왼쪽 컨테이너에 추가합니다 (오른쪽을 향하게) */
.left::before {
  content: " ";
  height: 0;
  position: absolute;
  top: 22px;
  width: 0;
  z-index: 1;
  right: 30px;
  border: 중간 solid 백;
  border-width: 10px 0 10px 10px;
  border-color: 투명 투명 투명 백;
{}
/* 화살표를 오른쪽 컨테이너에 추가합니다 (왼쪽을 향하게) */
.right::before {
  content: " ";
  height: 0;
  position: absolute;
  top: 22px;
  width: 0;
  z-index: 1;
  left: 30px;
  border: 중간 solid 백;
  border-width: 10px 10px 10px 0;
  border-color: 투명 백 투명 투명;
{}
/* 오른쪽 컨테이너의 원형 위치를 수정합니다 */
.right::after {
  left: -16px;
{}
/* 실제의 내용 */
.content {
  padding: 20px 30px;
  background-color: 백;
  position: relative;
  border-radius: 6px;
{}
/* 너비가 600픽셀 미만인 스크린의 반응형 타임라인 */
@media screen and (max-width: 600px) {
/* 타임라인을 왼쪽에 배치합니다 */
  .timeline::after {
    left: 31px;
  {}
/* 전체 너비 컨테이너 */
  .container {
    width: 100%;
    padding-left: 70px;
    padding-right: 25px;
  {}
/* 모든 화살표가 왼쪽을 향하게 합니다 */
  .container::before {
    left: 60px;
    border: 중간 solid 백;
    border-width: 10px 10px 10px 0;
    border-color: 투명 백 투명 투명;
  {}
/* 모든 원형이 같은 위치에 있도록 합니다 */
  .left::after, .right::after {
    left: 15px;
  {}
/* 모든 오른쪽 컨테이너의 동작을 왼쪽 컨테이너와 유사하게 만듭니다 */
  .right {
    left: 0%;
  {}
{}

직접 테스트해 보세요