Nuke Olaf - Log Store

HTML - 수평방향 타임라인 (Horizontal Timeline) 만들기 본문

Language/[PHP]

HTML - 수평방향 타임라인 (Horizontal Timeline) 만들기

NukeOlaf 2020. 1. 29. 19:07

1. HTML 

  • 순서없는 목록 대신 순서있는 목록을 사용하는것이 시멘틱한 면에서 더 정확
  • 내용이 없는 추가 항목이 있음
<section class="career-timeline">
    <h1>CAREER</h1>
    <ol>
        <li>
            <div>
                <time>2017</time>
                홍익대학교 입학
            </div>
        </li>
        <li>
            <div>
                <time>2019.8</time>
                Java 공부 시작, 게임 "펭귄은 못날아!"
            </div>
        </li>
        <li>
            <div>
                <time>2019.11</time>
                Android 공부 시작<br>
                커뮤니티앱 "금속인"<br>
                카메라앱 "올라프 카메라"<br>
                카메라 필터앱 "들꽃중년"
            </div>
        </li>
        <li>
            <div>
                <time>2020.1</time>
                PHP 공부 시작
            </div>
        </li>
        <li></li>
    </ol>
</section>

 

2. CSS

        .career-timeline {
            display: -webkit-flex;
            display: flex;
            height: 100vh;
            white-space: nowrap;
            background: #456990;
            -webkit-align-items: center;
            align-items: center;
            -webkit-justify-content: center;
            justify-content: center;
        }

        .career-timeline h1 {
            color: #f4f3ea;
            margin: 30px;
        }
        .career-timeline ol {
            -webkit-flex: 1;
            flex: 1;
            font-size: 0;
            width: 100vw;
            padding: 250px 0;
            transition: all 1s;
        }
        .career-timeline ol li {
            position: relative;
            display: inline-block;
            list-style-type: none;
            width: 160px;
            height: 3px;
            background: #fff;
        }
        .career-timeline ol li:last-child {
            width: 280px;
        }
        .career-timeline ol li:not(:first-child) {
            margin-left: 14px;
        }
        .career-timeline ol li:not(:last-child)::after {
            content: '';
            position: absolute;
            top: 50%;
            left: calc(100% + 1px);
            bottom: 0;
            width: 12px;
            height: 12px;
            transform: translateY(-50%);
            border-radius: 50%;
            background: #F45B69;
        }
        .career-timeline ol li div {
            position: absolute;
            left: calc(100% + 7px);
            width: 280px;
            padding: 15px;
            font-size: 1rem;
            white-space: normal;
            color: black;
            background: white;
        }

        .career-timeline ol li div::before {
            content: '';
            position: absolute;
            top: 100%;
            left: 0;
            width: 0;
            height: 0;
            border-style: solid;
        }

        .career-timeline ol li:nth-child(odd) div {
            top: -16px;
            transform: translateY(-100%);
        }

        .career-timeline ol li:nth-child(odd) div::before {
            top: 100%;
            border-width: 8px 8px 0 0;
            border-color: white transparent transparent transparent;
        }

        .career-timeline ol li:nth-child(even) div {
            top: calc(100% + 16px);
        }

        .career-timeline ol li:nth-child(even) div::before {
            top: -8px;
            border-width: 8px 0 0 8px;
            border-color: transparent transparent transparent white;
        }

        .career-timeline time {
            display: block;
            font-size: 1.2rem;
            font-weight: bold;
            margin-bottom: 8px;
        }

 

3. 결과물

 

솔직히 이게 왜 되는지, 어떻게 동작하는 지 코드분석을 제대로 하지 않아서 잘 모르겠다.
시간 남을때 천천히 다시 분석해봐야지

참고 사이트>>>

https://webdesign.tutsplus.com/ko/tutorials/building-a-horizontal-timeline-with-css-and-javascript--cms-28378

<그 외에 타임라인 관련 예제들 참고하기 좋은 사이트>

65 CSS Timelines

 

Comments