Skip to content

เบ็ดเตล็ด

คลาสยูทิลิตี้เพิ่มเติมสำหรับพฤติกรรมการเลื่อน สถานะทางภาพ และการจัดรูปแบบเฉพาะส่วนประกอบที่ไม่เข้าในหมวดยูทิลิตี้อื่น

ยูทิลิตี้แถบเลื่อน

การซ่อนแถบเลื่อน

ชื่อคลาสคำอธิบายเอฟเฟกต์
.spr-hidden-scrollsซ่อนแถบเลื่อน webkit ในขณะที่ยังคงการทำงานการเลื่อนใช้ spr-hidden กับ ::-webkit-scrollbar

แอนิเมชันและเอฟเฟกต์ทางภาพ

แอนิเมชันการโหลดโครงกระดูก

ชื่อคลาสคำอธิบายคุณสมบัติ CSS
.spr-skeletal-loaderสร้างแอนิเมชันเต้นพร้อมพื้นหลังไล่ระดับสำหรับสถานะการโหลดโครงกระดูกspr-animate-pulse
spr-border-neutral-200
spr-bg-[linear-gradient(...)]

ตัวอย่างการใช้งาน

การซ่อนแถบเลื่อน

ใช้เมื่อคุณต้องการรักษาการทำงานการเลื่อนแต่ซ่อนแถบเลื่อนเพื่อให้ดูสะอาดขึ้น:

html
<!-- คอนเทนเนอร์ที่มีแถบเลื่อนซ่อน -->
<div class="spr-hidden-scrolls overflow-y-auto max-h-96">
  <div class="space-y-4">
    <!-- เนื้อหาที่เกินความสูงคอนเทนเนอร์ -->
    <div class="p-4">รายการ 1</div>
    <div class="p-4">รายการ 2</div>
    <div class="p-4">รายการ 3</div>
    <!-- ... รายการเพิ่มเติม -->
  </div>
</div>

<!-- คอนเทนเนอร์แชทหรือข้อความ -->
<div class="spr-hidden-scrolls overflow-y-auto h-64 p-4">
  <div class="space-y-2">
    <div class="spr-background-color-surface p-3 rounded">ข้อความ 1</div>
    <div class="spr-background-color-surface p-3 rounded">ข้อความ 2</div>
    <!-- ... ข้อความเพิ่มเติม -->
  </div>
</div>

ตัวโหลดโครงกระดูก

ใช้สำหรับสถานะการโหลดเพื่อปรับปรุงประสิทธิภาพที่รับรู้:

html
<!-- ตัวโหลดโครงกระดูกพื้นฐาน -->
<div class="spr-skeletal-loader spr-h-4 spr-w-full"></div>

<!-- โครงกระดูกการ์ด -->
<div class="spr-background-color p-6 rounded-lg space-y-4">
  <!-- โครงกระดูกหัวข้อ -->
  <div class="spr-skeletal-loader spr-h-6 spr-w-3/4"></div>

  <!-- โครงกระดูกบรรทัดเนื้อหา -->
  <div class="space-y-2">
    <div class="spr-skeletal-loader spr-h-4 spr-w-full"></div>
    <div class="spr-skeletal-loader spr-h-4 spr-w-full"></div>
    <div class="spr-skeletal-loader spr-h-4 spr-w-2/3"></div>
  </div>

  <!-- โครงกระดูกปุ่ม -->
  <div class="spr-skeletal-loader spr-h-10 spr-w-24 spr-rounded-border-radius-md"></div>
</div>

<!-- โครงกระดูกโปรไฟล์ -->
<div class="flex items-center space-x-4">
  <!-- โครงกระดูกอวาตาร์ -->
  <div class="spr-skeletal-loader rounded-full spr-h-12 spr-w-12"></div>

  <div class="space-y-2 flex-1">
    <!-- โครงกระดูกชื่อ -->
    <div class="spr-skeletal-loader spr-h-4 spr-w-32"></div>
    <!-- โครงกระดูกอีเมล -->
    <div class="spr-skeletal-loader spr-h-3 spr-w-48"></div>
  </div>
</div>

<!-- โครงกระดูกรายการ -->
<div class="space-y-3">
  <div v-for="i in 5" :key="i" class="flex items-center space-x-3">
    <div class="spr-skeletal-loader rounded spr-h-8 spr-w-8"></div>
    <div class="flex-1 space-y-2">
      <div class="spr-skeletal-loader spr-h-4 spr-w-3/4"></div>
      <div class="spr-skeletal-loader spr-h-3 spr-w-1/2"></div>
    </div>
  </div>
</div>

การใช้งานเฉพาะส่วนประกอบ

ตารางที่มีแถบเลื่อนซ่อน

html
<div class="spr-table-wrapper">
  <table class="w-full">
    <thead>
      <tr>
        <th>คอลัมน์ 1</th>
        <th>คอลัมน์ 2</th>
        <th>คอลัมน์ 3</th>
      </tr>
    </thead>
    <tbody class="spr-hidden-scrolls">
      <!-- แถวตาราง -->
    </tbody>
  </table>
</div>

สถานะการโหลดพร้อมโครงกระดูก

html
<!-- ก่อนโหลดข้อมูล -->
<div v-if="loading" class="space-y-4">
  <div class="spr-skeletal-loader spr-h-8 spr-w-64"></div>
  <div class="grid grid-cols-3 gap-4">
    <div class="spr-skeletal-loader spr-h-32"></div>
    <div class="spr-skeletal-loader spr-h-32"></div>
    <div class="spr-skeletal-loader spr-h-32"></div>
  </div>
</div>

<!-- หลังโหลดข้อมูลแล้ว -->
<div v-else>
  <h1 class="spr-heading-lg">เนื้อหาที่โหลดแล้ว</h1>
  <!-- เนื้อหาจริง -->
</div>

แนวทางปฏิบัติที่ดี

การซ่อนแถบเลื่อน

  • ใช้อย่างประหยัด: ซ่อนแถบเลื่อนเฉพาะเมื่อการออกแบบต้องการเท่านั้น
  • ตรวจสอบการเข้าถึง: ตรวจสอบให้แน่ใจว่าผู้ใช้ยังสามารถเข้าใจได้ว่าเนื้อหาสามารถเลื่อนได้
  • ให้สัญญาณทางภาพ: พิจารณาเพิ่มเอฟเฟกต์เฟดหรือตัวบ่งชี้การเลื่อน
  • ทดสอบข้ามอุปกรณ์: ตรวจสอบพฤติกรรมในระบบปฏิบัติการและเบราว์เซอร์ต่างๆ

ตัวโหลดโครงกระดูก

  • จับคู่โครงสร้างเนื้อหา: โครงกระดูกควรสะท้อนเลย์เอาต์เนื้อหาจริง
  • ใช้เวลาที่เหมาะสม: แสดงโครงกระดูกสำหรับการดำเนินการที่ใช้เวลามากกว่า 200ms
  • รักษาอัตราส่วน: ขนาดโครงกระดูกควรตรงกับเนื้อหาที่คาดหวัง
  • ผสมผสานกับทรานซิชัน: ใช้แอนิเมชันเฟดอินเมื่อการโหลดเสร็จสิ้น
html
<!-- โครงกระดูกที่ดี - ตรงกับโครงสร้างเนื้อหา -->
<div class="space-y-4">
  <div class="spr-skeletal-loader spr-h-6 spr-w-3/4"></div>
  <!-- หัวข้อ -->
  <div class="spr-skeletal-loader spr-h-4 spr-w-full"></div>
  <!-- บรรทัด 1 -->
  <div class="spr-skeletal-loader spr-h-4 spr-w-5/6"></div>
  <!-- บรรทัด 2 -->
  <div class="spr-skeletal-loader spr-h-10 spr-w-32 spr-rounded-border-radius-md"></div>
  <!-- ปุ่ม -->
</div>

<!-- ทรานซิชันเมื่อเนื้อหาโหลด -->
<transition name="fade" mode="out-in">
  <div v-if="loading" class="skeleton-container">
    <!-- เนื้อหาโครงกระดูก -->
  </div>
  <div v-else class="actual-content">
    <!-- เนื้อหาจริง -->
  </div>
</transition>