Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

วิธีสร้างส่วนหัวคงที่/ติดตามเมื่อเลื่อนหน้าจอด้วย CSS และ JavaScript

ตัวอย่าง

หากต้องการสร้างส่วนหัวที่ติดตามเมื่อเลื่อนหน้าจอ (sticky header) ให้ใช้ position: fixed ร่วมกับ JavaScript ตรวจจับตำแหน่งการเลื่อน

<!DOCTYPE html>
<html>
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <style>
    body {
      font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
      margin: 0px;
      padding: 0px;
      height: 150vh; /* สร้างแถบเลื่อน */
    }
    .header {
      width: 100%;
      background-color: rgb(52, 21, 110);
      color: white;
      padding: 50px;
      font-size: 20px;
    }
    div.sticky {
      position: fixed;
      top: 0;
    }
  </style>
</head>
<body>
  <h1>ตัวอย่าง Fixed Sticky เมื่อเลื่อนหน้าจอ</h1>
  <h2>ข้อความส่วนหัวสุ่ม</h2>
  <h2>ข้อความส่วนหัวสุ่ม</h2>
  <div class="header">ข้อความส่วนหัว</div>
  <p style="font-size: 35px;">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Odit vel dolore delectus esse consequatur at nulla, consequuntur sint quas ea. Incidunt, ex. Consequatur ipsa earum veritatis fugiat iusto, doloremque sunt beatae quaerat laboriosam nemo soluta quidem porro quia. Dolore reprehenderit cum voluptatibus eius assumenda ipsam tenetur asperiores magni aliquid eligendi doloribus quidem ipsa et praesentium provident molestias quaerat laboriosam, veniam aspernatur repellendus. Debitis sapiente, odit iste voluptatibus nesciunt veritatis incidunt mollitia nostrum, vitae suscipit iusto molestias consequuntur rem facere perspiciatis ad! Ratione reiciendis asperiores aperiam vitae facilis accusantium non aliquid, facere cupiditate reprehenderit tempore veritatis eum accusamus omnis tempora quos!</p>
  <script>
    window.onscroll = function() {
      setSticky();
    };
    var header = document.querySelector(".header");
    var sticky = header.offsetTop;
    function setSticky() {
      if (window.pageYOffset > sticky) {
        header.classList.add("sticky");
      } else {
        header.classList.remove("sticky");
      }
    }
  </script>
</body>
</html>

ผลลัพธ์

โค้ดข้างต้นจะสร้างผลลัพธ์ดังนี้:

วิธีสร้างส่วนหัวคงที่/ติดตามเมื่อเลื่อนหน้าจอด้วย CSS และ JavaScript

เมื่อเลื่อนลงเล็กน้อย ส่วนหัวจะทำงานเป็น sticky header:

วิธีสร้างส่วนหัวคงที่/ติดตามเมื่อเลื่อนหน้าจอด้วย CSS และ JavaScript