วาดทรงหน้าเมื่อเลื่อน

เรียนรู้ว่าจะวาดทรงหน้าเมื่อเลื่อนด้วย JavaScript และ SVG

亲自试一试

วาดทรงหน้าเมื่อเลื่อน

ใช้ SVG และ JavaScript วาดทรงหน้าสามเหลี่ยมเมื่อเลื่อน - โปรดจำได้ว่า <path> องค์ประกอบ:

ตัวอย่าง

<svg id="mySVG">
  <path fill="none" stroke="red" stroke-width="3" id="triangle" d="M150 0 L75 200 L225 200 Z"/>
</svg>
<script>
// ได้รับ element <path> ที่มี id ว่า "triangle"
var triangle = document.getElementById("triangle");
// ได้รับความยาวของ element <path>
var length = triangle.getTotalLength();
// ตำแหน่งเริ่มต้นของการวาด (ตั้งค่าโมดูลแบบตรงตัน. ที่นี่ตั้งค่าเท่ากับความยาวของเส้นทาง ทำให้เส้นทางทั้งหมดถือเป็น "แบบตรงตันใหญ่")
triangle.style.strokeDasharray = length;
/* ตั้งค่าความเรียงตัวของแบบตรงตัน. ตอนแรกตั้งค่าเท่ากับความยาวของเส้นทาง ทำให้เส้นทางทั้งหมดถูกเรียงออกจากมุมมอง ซึ่งทำให้สามเหลี่ยมซ่อนไป
เมื่อเลื่อน ความเรียงตัวนี้จะลดขึ้นเรื่อยๆ และแสดงสามเหลี่ยมขึ้นเรื่อยๆ
ลบบรรทัดนี้เพื่อแสดงสามเหลี่ยมก่อนการวาด
triangle.style.strokeDashoffset = length;
// ติดตามเหตุการณ์ scroll ของหน้าต่างและเรียกฟังก์ชัน myFunction ขณะเกิดเหตุการณ์
window.addEventListener("scroll", myFunction);
function myFunction() {
  // คำนวณลิขภาพที่เลื่อน = (ความสูงที่เลื่อนปัจจุบัน) / (ความสูงที่สามารถเลื่อนได้ทั้งหมด)
  var scrollpercent = (document.body.scrollTop + document.documentElement.scrollTop) / (document.documentElement.scrollHeight - document.documentElement.clientHeight);
  // คำนวณความยาวที่ควรวาด = ความยาวทั้งหมด * ลิขภาพที่เลื่อน
  var draw = length * scrollpercent;
  // ขณะเรียกใช้ scroll คือการวาดทิ้งหลังแล้ว (จากเต็มไปยังไม่เต็ม) ดังนั้นที่นี่ใช้ความยาวทั้งหมดลดไปจากความยาวที่ควรวาด
  triangle.style.strokeDashoffset = length - draw;
}
</script>

亲自试一试

相关页面

教程:SVG 教程