<div class="container">
    <section>
        <p>sticky positioning을 구현하는 예제입니다.</p>
        <p class="sticky">sticky 문단입니다.</p>
        <p>다른 요소와 겹칠 수도 있습니다.</p>

    </section>
    <section>
        <p>sticky positioning을 구현하는 예제입니다.</p>
        <p class="sticky">sticky 문단입니다.</p>
        <p>다른 요소와 겹칠 수도 있습니다.</p>
    </section>
    <section>
        <p>sticky positioning을 구현하는 예제입니다.</p>
        <p class="sticky">sticky 문단입니다.</p>
        <p>다른 요소와 겹칠 수도 있습니다.</p>
    </section>
    <section>
        <p>sticky positioning을 구현하는 예제입니다.</p>
        <p class="sticky">sticky 문단입니다.</p>
        <p>다른 요소와 겹칠 수도 있습니다.</p>
    </section>
</div>
.container { /* 스크롤 가능한 오버플로 영역 */
    overflow: auto;
    height: 300px;
    border: 5px solid red;
}
section { /* 가장 가까운 스크롤이 가능한 조상 요소(scrollport) */
    background-color: beige;
    height: 400px;
}
section + section {
    margin-top: 2em;
}
p {
    margin: 0;
}
.sticky {
    position: sticky;
    top: 0;
    color: #fff;
    padding: 1em;
    background-color: rgba(204, 51, 255, 0.7);
    border: 3px solid #39004d;
}
실제 적용된 모습 스크롤되는 영역을 스크롤해 보세요!
<section class="container">
    <div class="sticky-header">고정된 헤더</div>
    <div class="content">
        스크롤할 수 있는 길이가 긴 콘텐츠입니다.
        <br>
        X축(가로)으로 이 내용을 스크롤 해주세요.
    </div>
</section>
.container {
    width: 100%;
    overflow-x: auto;  /* 가로 스크롤 활성화 */
    display: flex;
    background: linear-gradient(to right, #f2f2f2, #777);
}
.content {
    width: 150vw; /* 내용이 너무 길어서 스크롤이 생기도록 설정 */
    padding: 1em;
    flex: none;
    color: blue;
}
.sticky-header {
    position: sticky;
    left: 0; /* X축에서 고정될 위치 */
    background: coral;
    color: #fff;
    padding: 1em;
    background-color: rgba(204, 51, 255, 0.7);
    border: 3px solid #39004d;
}
실제 적용된 모습
<section>
    <table>
        <thead>
            <tr>
                <th>ID</th>
                <th>이름</th>
                <th>직업</th>
                <th>나이</th>
                <th>국가</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>1</td>
                <td>홍길동</td>
                <td>개발자</td>
                <td>28</td>
                <td>한국</td>
            </tr>
            <tr>
                <td>2</td>
                <td>김철수</td>
                <td>디자이너</td>
                <td>30</td>
                <td>미국</td>
            </tr>
            <tr>
                <td>3</td>
                <td>박지은</td>
                <td>PM</td>
                <td>35</td>
                <td>영국</td>
            </tr>
            <tr>
                <td>4</td>
                <td>이순신</td>
                <td>분석가</td>
                <td>40</td>
                <td>일본</td>
            </tr>
            <tr>
                <td>5</td>
                <td>최수정</td>
                <td>마케터</td>
                <td>25</td>
                <td>캐나다</td>
            </tr>
        </tbody>
    </table>
</section>
section {
    height: 270px;
    overflow: auto;
}
table {
    width: 100%;
    border-collapse: collapse;
}
thead {
    position: sticky;
    top: 0;
    color: #fff;
    background-color: rgba(204, 51, 255, 0.8);
    
}
th, td {
    padding: 30px 10px;
    text-align: center;
}
실제 적용된 모습

caniuse.com에서 더 자세한 정보를 확인해 보세요.