>วิธีการวาดกราฟิกแบบเวกเตอร์ที่ปรับขนาดได้ (SVG) ด้วย JavaScript

เผยแพร่แล้ว: 2023-02-25

สมมติว่าคุณต้องการคำตอบโดยละเอียดเกี่ยวกับวิธีการวาด Scalable Vector Graphics หรือ SVG ด้วย JavaScript นี่เป็นวิธีหนึ่งที่จะทำได้ SVG เป็นรูปแบบภาพเวกเตอร์ที่ใช้ XML สำหรับกราฟิกสองมิติพร้อมรองรับการโต้ตอบและภาพเคลื่อนไหว ข้อกำหนด SVG เป็นมาตรฐานเปิดที่พัฒนาโดย World Wide Web Consortium (W3C) ตั้งแต่ปี 1999 ด้วย JavaScript คุณสามารถใช้ Document Object Model (DOM) เพื่อเข้าถึงและจัดการองค์ประกอบของเอกสาร SVG ตัวอย่างเช่น คุณสามารถเพิ่มหรือลบองค์ประกอบ เปลี่ยนคุณลักษณะ หรือทำให้องค์ประกอบเคลื่อนไหวได้ ต่อไปนี้คือตัวอย่างพื้นฐานของวิธีสร้างเอกสาร SVG ด้วยองค์ประกอบวงกลมหนึ่งองค์ประกอบและเพิ่มลงใน DOM ขั้นแรก สร้างเอกสาร HTML ด้วยองค์ประกอบและตั้งค่าแอตทริบิวต์ความกว้างและความสูง จากนั้น สร้างองค์ประกอบและตั้งค่าแอตทริบิวต์ cx และ cy เพื่อกำหนดพิกัด x และ y ของจุดศูนย์กลางของวงกลม จากนั้นตั้งค่าแอตทริบิวต์ r เพื่อกำหนดรัศมีของวงกลม สุดท้ายเพิ่มองค์ประกอบไปยังองค์ประกอบ รูปแบบไฟล์ .svg ซึ่งใช้ในการจัดเก็บรูปภาพและข้อมูล ช่วยให้ปรับขนาดแบบไดนามิกได้มากขึ้น มาร์กอัป XML ใช้เพื่ออธิบายวิธีการวาดและจัดแนวสิ่งเหล่านี้ แทนที่จะอธิบายง่ายๆ ว่าเส้นทางถูกวาดอย่างไร เมื่อคุณแสดงมาร์กอัปเป็นไฟล์ HTML มาร์กอัปนั้นจะปรากฏเหมือนกับไอคอนทุกประการ หากคุณต้องการเพิ่มไอคอน SVG แบบไดนามิกให้กับข้อมูลจากตำแหน่งระยะไกลในขณะที่กำลังแสดงผล คุณสามารถใช้วิธีนี้ได้ แท็ก XML เช่น องค์ประกอบ HTML สามารถสร้างและประกอบได้ ไฟล์ main.js ของไฟล์ XML สามารถสร้างได้โดยใช้ฟังก์ชัน XPath เราจะวางแท็กสมอไว้ในกราฟิกหลังจากที่สร้างแล้ว ทำให้สามารถเรียกใช้คุณลักษณะการเลื่อนได้ ด้วยเหตุนี้ องค์ประกอบใดๆ จึงสามารถจัดการได้เช่นเดียวกับองค์ประกอบอื่นๆ หลังจากนั้น มีตัวเลือกมากมายสำหรับการเพิ่มสไตล์ คลาส และที่สำคัญที่สุดคือแอตทริบิวต์ ไอคอนถูกเพิ่มไว้ล่วงหน้าสำหรับแต่ละโพสต์และสามารถใช้เป็นลิงก์ยึดเพื่อการเลื่อนที่ราบรื่น แพลตฟอร์ม SVG มีการเข้าถึงที่มากขึ้น คุณต้องติดตั้งสคริปต์เพื่อวาดองค์ประกอบบนหน้าจอโดยใช้ SVG นี่ไม่ใช่เวลาที่จะตรวจสอบว่าแบบทดสอบของคุณเสร็จสมบูรณ์หรือไม่ คุณสามารถแก้ไขได้ง่ายๆ โดยการอ่านหน้าเว็บก่อนทำแบบทดสอบ เราสามารถใช้ Javascript ใน Svg ได้หรือไม่ แหล่งที่มาของรูปภาพ: https://iconscout.com สามารถเพิ่ม JavaScript ลงในเอกสาร SVG จากที่ใดก็ได้ระหว่างแท็กเปิดและปิด svg> ควรวางสคริปต์ไว้ที่ส่วนท้ายของเอกสารเพื่อให้สามารถเข้าถึงได้อย่างเต็มที่ในขณะที่หลีกเลี่ยงการบล็อก สามารถดู SVG ได้ในลักษณะเดียวกับ HTML ด้วย Document Object Model (DOM) ด้วยเหตุนี้จึงสามารถใช้ Javascript เพื่อจัดการกับมันได้ค่อนข้างง่าย ในหลักสูตรนี้ ฉันจะกล่าวถึงวิธีใช้ SVG ทั้งแบบอินไลน์และภายนอก ตัวอย่างโค้ดมีอยู่ใน GitHub ซึ่งอยู่ที่ด้านบนสุดของโพสต์นี้ หากคุณใช้ SVG ภายนอก ไม่จำเป็นต้องใช้รหัสเดียวกันเมื่อแทรกองค์ประกอบ เนื่องจาก SVG ไม่สามารถเข้าถึงเอกสาร HTML ที่ฝังอยู่ในหน้า เราจึงสามารถใช้มันเพื่อแทนที่ SVG อื่นในหน้านั้น เมื่อคุณรวมรหัส JS ด้วย CDATA แล้ว XML จะแยกวิเคราะห์เป็นส่วนหนึ่งของ XML การสร้างและลบองค์ประกอบใน HTML จะเหมือนกัน เมธอด createElementNS() ของเอกสารที่เกี่ยวข้องต้องผ่านชื่อองค์ประกอบและเนมสเปซ SVG เพื่อให้คุณสร้างองค์ประกอบได้ หากคุณต้องการลบองค์ประกอบ ก่อนอื่นคุณต้องสร้างโหนดข้อความแยกต่างหากโดยใช้ createTextNode() แล้วจึงผนวกเข้ากับองค์ประกอบข้อความ ไม่มีอยู่ในเอกสารเดียวกัน ดังนั้นจึงทำงานได้ดีข้อดีข้อเสียของ Svg เนื่องจากรูปแบบเวกเตอร์ในรูปแบบ XML SVG จึงไม่ลดคุณภาพหรือขึ้นอยู่กับความละเอียด ทำให้ปรับขนาดใหม่ได้ง่าย สามารถใช้ CSS และ/หรือ JavaScript เพื่อจัดการและทำให้ SVG เคลื่อนไหวได้อย่างง่ายดาย เนื่องจาก SVG ใช้หน่วยความจำน้อยกว่าและใช้เวลาในการโหลดน้อยกว่า JPG, JPEG, PNG และรูปแบบอื่นๆ จึงเหมาะสำหรับการออกแบบที่ตอบสนอง SVG นอกจากจะเป็นรูปแบบไฟล์ที่หลากหลายแล้ว ยังรองรับภาพเคลื่อนไหวและความโปร่งใสอีกด้วย มีปัญหาเพียงอย่างเดียวในการใช้รูปแบบนี้: รูปแบบนี้ไม่ได้ใช้กันอย่างแพร่หลายเท่ากับรูปแบบมาตรฐานอื่น ๆ เช่น PNG ดังนั้นการอัปโหลดไปยังไซต์ของคุณและแสดงอย่างถูกต้องจึงไม่ใช่เรื่องง่ายเสมอไป และไม่สามารถเข้ากันได้กับเบราว์เซอร์รุ่นเก่าเสมอไป และอุปกรณ์ Svg Javascript ขึ้นอยู่กับลักษณะดั้งเดิมหรือไม่ เนื่องจากลักษณะดั้งเดิมของมัน จึงตอบสนองได้ดีมาก แต่ขาดความสามารถในการแสดงข้อความ และการโต้ตอบใดๆ กับองค์ประกอบนั้นขึ้นอยู่กับ JavaScript ภาพเวกเตอร์สามารถปรับขนาดได้โดยไม่ทำให้เกิดฝอย (แม้ว่าจะต้องมีการบีบอัด) ทุกรูปร่างที่วาดประกอบด้วยวัตถุใน SVG.Html หากต้องการ Svg Javascript เมื่อใช้ JavaScript คุณสามารถแปลง HTML เป็น SVG ได้ ซึ่งสามารถทำได้โดยใช้ไลบรารี เช่น canvg ด้วย canvg คุณสามารถแยกวิเคราะห์และแสดงผลเอกสาร SVG จากภายในหน้า HTML ได้ ซึ่งช่วยให้สามารถรวมกราฟิกแบบเวกเตอร์เข้ากับเทคโนโลยีเว็บอื่นๆ ได้ เราจะพูดถึงวิธีทำให้กราฟิกแบบเวกเตอร์แบบสเกลาร์ (SVG) ปรากฏบนหน้าในบทช่วยสอนนี้ หน้า HTML สามารถมีภาษา XML ที่แสดงข้อมูลในรูปแบบของรูปภาพ HTML หรือการประกาศ XML ในบทความนี้ เราจะเปรียบเทียบความแตกต่างของไวยากรณ์ JavaScript สำหรับการแทรกและแก้ไของค์ประกอบ HTML กับไวยากรณ์ SVG สำหรับการแทรกและแก้ไของค์ประกอบ HTML เราจะดูกรณีการใช้งานตัวอย่างก่อนที่จะพัฒนาวิธีการของเรา องค์ประกอบง่ายๆ เช่น a >div ควรจะสามารถเพิ่มลงใน SVG ได้ เมธอด createSVG ถูกใช้สองครั้งในตัวอย่างต่อไปนี้ เราสามารถควบคุม SVG ด้วย HTML และ CSS แบบละเอียด โดยใช้ JavaScript และ CSS เมธอด document.createElementNS ที่เราใช้ประกอบด้วยพารามิเตอร์สองตัว: document.createElementNS และ document.createElementNS ตัวแปรหนึ่งที่ใช้เพื่อระบุวัตถุที่จะผ่านเข้าไปคือ o ด้วยเหตุนี้ ในการค้นหาตัวพิมพ์ใหญ่และแทนที่ด้วยเส้นประ (-) ตามด้วยตัวพิมพ์เล็ก เราจึงใช้นิพจน์ทั่วไป /[AZ]/g ซึ่งใช้ออบเจกต์ camelCase และไวยากรณ์เส้นประเพื่อค้นหาตัวพิมพ์ใหญ่และแทนที่ มีขีดคั่น (-) ทันทีที่องค์ประกอบถูกส่งกลับ สิ่งที่เราต้องทำคือส่งกลับเป็นองค์ประกอบต่อท้ายSvg ใน Javascript: สิ่งที่คุณต้องรู้ คุณจะใช้ SVG บน JavaScript ได้อย่างไร เนื่องจากแต่ละส่วนประกอบของภาพเป็นส่วนประกอบที่สามารถจัดรูปแบบด้วย CSS หรือเขียนสคริปต์ด้วย JavaScript ได้ จึงเป็นเครื่องมือจัดรูปแบบ/เขียนสคริปต์ที่ยอดเยี่ยม คุณเขียนโค้ด svgs ใน HTML อย่างไร รูปภาพสามารถเขียนโดยตรงไปยังเอกสาร HTML โดยใช้แท็ก svg>/svg> คุณต้องทำตามขั้นตอนต่อไปนี้หากคุณต้องการใช้รูปภาพ SVG ในเอกสาร HTML ของคุณ: เปิดรูปภาพในโค้ด VS หรือ IDE ที่คุณต้องการ คัดลอกโค้ดแล้ววางลงในองค์ประกอบเนื้อหา เหตุใดจึงยังคงใช้ HTML sva อาจใช้เวลาสักระยะหนึ่ง แต่ขณะนี้ Silverlight ได้รับการสนับสนุนอย่างกว้างขวางในเบราว์เซอร์และอุปกรณ์หลักๆ ทั้งหมด ไฟล์ SVG มีขนาดเล็กมาก ค้นหาได้ ปรับเปลี่ยนได้ผ่านโค้ด และปรับขนาดได้ นอกเหนือจากการมีขนาดเล็กมาก ค้นหาได้ แก้ไขได้ และปรับเปลี่ยนได้ อุปกรณ์อเนกประสงค์เหล่านี้สามารถใช้ได้ทุกขนาดและเข้ากันได้กับ HTML (สร้างเว็บไซต์แต่ไม่ต้องการเขียนโค้ด) เพียงแค่คลิกที่รูปภาพหรืออินไลน์ คุณสามารถรับชุดอุปกรณ์เริ่มต้นฟรีสำหรับรถของคุณ แอปพลิเคชัน XML เช่น SVG สามารถใช้ XML 1.0 เช่นเดียวกับ XML Namespaces เมื่อรวมเนื้อหา SVG ในเอกสาร HTML ไวยากรณ์ HTML อาจนำไปใช้และอาจไม่เข้ากันกับ XMLSvg Javascript Examples มีตัวอย่างมากมายของการใช้ JavaScript กับ SVG ตัวอย่างเช่น คุณสามารถใช้ JavaScript เพื่ออัปเดตตำแหน่ง ขนาด หรือแอตทริบิวต์อื่นๆ ขององค์ประกอบ SVG แบบไดนามิก คุณยังสามารถใช้ JavaScript เพื่อทำให้องค์ประกอบ SVG เคลื่อนไหวได้ กราฟิกแบบเวกเตอร์สามารถยืดออกได้โดยใช้เทคนิคที่เรียกว่ากราฟิกแบบเวกเตอร์ที่ปรับขนาดได้ Extensible Markup Language (XML) เป็นรูปแบบภาพประเภทหนึ่งซึ่งมีลักษณะเฉพาะสำหรับกราฟิกแบบเวกเตอร์ ภาพ SVG สามารถใช้ได้หลายวิธีใน CSS และ HTML เราจะเรียนรู้หกเทคนิคที่แตกต่างกันในบทช่วยสอนนี้ ในบทเรียนนี้ เราจะแสดงวิธีใช้ sva เป็นพื้นหลัง CSS ในกรณีนี้ ต้องโหลดไฟล์ the.htaccess โดยใช้ไวยากรณ์เดียวกับเอกสาร HTML อย่างไรก็ตาม ในกรณีนี้ แทนที่จะใช้ HTML เราใช้ CSS เพื่อทำการปรับแต่งเพิ่มเติม คุณยังสามารถเพิ่มรูปภาพไปยังเว็บไซต์โดยใช้องค์ประกอบ HTML HTML เป็นไปได้ที่จะใช้ตัวเลือก >object> ในเบราว์เซอร์ทั้งหมดที่รองรับ Scalable Vector Graphics (SVG) ใน HTML และ CSS สามารถใช้องค์ประกอบ HTML ในไวยากรณ์ <embedsrc=happy.svg” /> เพื่อรวมรูปภาพได้ เบราว์เซอร์สมัยใหม่ส่วนใหญ่ไม่รองรับ >ปลั๊กอินของเบราว์เซอร์อีกต่อไป ดังนั้นต้องพึ่ง >embed[/gt; โดยทั่วไปไม่ใช่ความคิดที่ดี แปลงรูปภาพเป็น Svg สำหรับกราฟิกเว็บที่มีคุณภาพดีกว่า หากคุณไม่สะดวกใจที่จะเขียนโค้ด SVG มีเครื่องมือออนไลน์มากมายที่สามารถช่วยคุณในการแปลงรูปภาพเป็นรูปแบบที่เว็บสามารถเข้าถึงได้ เบราว์เซอร์ Canvas.js ซึ่งก่อนหน้านี้มีให้บริการใน Chrome, Firefox และ Opera เป็นหนึ่งในโปรแกรมยอดนิยม สร้างภาพ Svg แบบไดนามิกใน Javascript โดยใช้ JavaScript คุณสามารถสร้างภาพ SVG แบบไดนามิกได้ ซึ่งสามารถทำได้โดยการสร้างวัตถุ XMLHttpRequest() ใหม่ และตั้งค่า responseType เป็น “text/xml” เมื่อสร้างวัตถุแล้ว สามารถใช้เมธอด open() เพื่อเปิดการเชื่อมต่อกับไฟล์ SVG ภายนอกได้ เหตุการณ์ onload สามารถใช้เพื่อเรียกใช้ฟังก์ชันการเรียกกลับที่แยกวิเคราะห์ไฟล์ SVG และสร้างวัตถุ XMLDocument สุดท้าย สามารถใช้เมธอด createElementNS() เพื่อสร้างองค์ประกอบรูปภาพ SVG บทช่วยสอนนี้จะสอนวิธีสร้างองค์ประกอบไดนามิกด้วย sva เอกสาร MDN ระบุว่า http://www.w3.org/2000/svg เป็นไวยากรณ์สำหรับไฟล์ svg องค์ประกอบที่เรากำลังสร้าง – รูปสี่เหลี่ยมจัตุรัส ข้อความ วงกลม และอื่นๆ – จะต้องมีชื่อที่เข้าเกณฑ์ เราไม่กังวลเกี่ยวกับเรื่องนี้ เนื่องจากพารามิเตอร์ตัวเลือกเสริมไม่เกี่ยวข้อง แอตทริบิวต์การนำเสนอ CSS และรูปแบบอินไลน์คืออะไร เราสามารถเลือกแอตทริบิวต์หรือสไตล์อินไลน์เป็นตัวเลือกโดยใช้เครื่องมือ GreenSock สามารถใช้ CSS เพื่อจัดการแอตทริบิวต์ต่างๆ เช่น cy, cy, r และอื่นๆ ในเบราว์เซอร์สมัยใหม่ เป็นไปได้มากว่าคุณจะต้องการใช้คุณสมบัติของ CSS (สไตล์ชีตหรือสไตล์อินไลน์) ให้มากที่สุด ในบทความนี้ ฉันจะพูดถึงวิธีสร้างองค์ประกอบแบบไดนามิกโดยใช้แอตทริบิวต์ HTML, CSS และการนำเสนอ เราจะใช้ตัวแปรเพื่อกำหนดจำนวนของสี่เหลี่ยม ความกว้าง และความสูงที่เราต้องการให้ svg มี จะมีคุณสมบัติทางเรขาคณิตใหม่ที่รวมอยู่ในซอฟต์แวร์เวอร์ชันที่กำลังจะมาถึง ซึ่งมีชื่อว่า SVG2 แต่ฉันยังพูดอะไรเกี่ยวกับคุณสมบัติเหล่านี้ไม่ได้มากนัก เนื่องจากยังไม่ได้เปิดตัว เราต้องการเห็นองค์ประกอบเหล่านี้ในการดำเนินการเพื่อให้เราสามารถวัดประสิทธิภาพได้ สามารถใช้เครื่องมือ clip-path เพื่อเพิ่มองค์ประกอบไดนามิกให้กับรูทของ SVG ในการสาธิตนี้ เราจะสร้างวงกลมสีพื้นฐานในรูปแบบลายเส้นและเพิ่มลงในกลุ่ม เพื่อให้เราสามารถแสดงได้ทันที สี่เหลี่ยมผืนผ้าที่ตัดแต่ละอันจะมีทวีคูณ 100 และจะถูกวางไว้ใต้วงกลมที่ถูกตัด เมื่อตัวชี้ตำแหน่งกลับด้าน จะทำให้ทวีนกลับด้านเช่นกัน เนื่องจากเราคลิกที่จุดเริ่มต้นของทวีน จึงไม่มีอะไรเกิดขึ้น ณ จุดนั้น จากนั้นทวีตจะถูกถ่ายโอนไปยังแอนิเมชั่นของเรา เพื่อสาธิตวิธีสร้างมาตรวัดตัวเลข ฉันใช้วงในและวงนอกที่เป็นคลื่น วงในสร้างเส้นแนวตั้งห้าเส้นโดยการเรียกฟังก์ชัน makeLine() ในขณะที่วงนอกสร้างตัวเลขเหนือเครื่องหมายขีดที่สูงกว่าโดยเรียกฟังก์ชัน makeNumber() ช่วยให้คุณปรับเปลี่ยนสิ่งต่าง ๆ ได้ทันทีและไม่ต้องเปลี่ยนกลับเป็นซอฟต์แวร์เวกเตอร์ การสร้างวิวพอร์ต Svgวิวพอร์ตเป็นพื้นที่สี่เหลี่ยมที่สามารถดูเอกสาร SVG ได้ ตั้งค่าแอตทริบิวต์ viewBox ขององค์ประกอบ svg> เป็นรายการของตัวเลขสี่ตัว: min-x, min-y, min-width และ min-height ตำแหน่งและขนาดของวิวพอร์ต SVG ถูกกำหนดโดยแอตทริบิวต์ viewBox ซึ่งกำหนดไว้ในพื้นที่ผู้ใช้ แอตทริบิวต์ viewBox แทนตัวเลขสี่ตัว: min-x, min-y, width และ height วิวพอร์ตแสดงด้วย min-x ในตัวเลขแรก ตัวเลขที่สองระบุตำแหน่งบนสุดของวิวพอร์ต min-y ความกว้างของวิวพอร์ตในพื้นที่ผู้ใช้ถูกกำหนดเป็นความกว้างตัวที่สาม ค่าที่สี่ ความสูง กำหนดความสูงของวิวพอร์ตในพื้นที่ผู้ใช้ สามารถวาดวิวพอร์ตได้โดยสร้างองค์ประกอบที่มีแอตทริบิวต์ viewBox ก่อน จากนั้นจึงตั้งค่าเป็นค่าของวิวพอร์ต จากนั้นคุณสามารถใช้เมธอด draw() ขององค์ประกอบ svg> เพื่อวาดวัตถุ ตั้งค่าแอตทริบิวต์ viewBox ขององค์ประกอบ svg> เป็นตัวเลขสี่ตัว ได้แก่ min-x, min-y, min-z และ height-x องค์ประกอบ Svg ElementsSVG เป็นองค์ประกอบกราฟิกที่สามารถเพิ่มลงในเอกสาร HTML5 สามารถใช้เพื่อสร้างเส้น รูปร่าง และรูปภาพ และสามารถปรับแต่งด้วย CSS