วิธีการมี Svg Javascript มากกว่าหนึ่งรายการ
เผยแพร่แล้ว: 2023-01-28ไม่ใช่เรื่องแปลกที่นักพัฒนาเว็บจะต้องการรวม Scalable Vector Graphics (SVG) มากกว่าหนึ่งรายการบนหน้าเว็บของตน แม้ว่าจะมีหลายวิธีในการดำเนินการนี้ แต่วิธีหนึ่งคือการใช้ JavaScript เพื่อฝังโค้ด SVG ลงใน HTML โดยตรง ซึ่งสามารถทำได้โดยใช้
ในส่วนแรกของชุดนี้ เราได้ดูวิธีการวาดรูปทรงพื้นฐานและขั้นสูง ในส่วนที่สอง เราจะพูดถึงความสามารถขั้นสูง รวมถึงวิธีที่ SVG โต้ตอบกับเทคโนโลยีเบราว์เซอร์อื่นๆ เช่น CSS และ JavaScript โพสต์นี้มุ่งเน้นไปที่การเรียนรู้วิธีสร้างส่วนประกอบ JavaScript ในส่วนนี้ เราดูที่เส้นขีดและเติมแอตทริบิวต์ของ องค์ประกอบ SVG การไล่ระดับสีแบ่งออกเป็นสองประเภท: เชิงเส้นและแนวรัศมี คุณสามารถเปลี่ยนมุมของการไล่ระดับสีได้โดยการควบคุมความทึบของสต็อปต่างๆ นอกจากลวดลายแล้ว ยังสามารถใช้เพื่อเติมเต็มรูปทรงได้อย่างน่าสนใจอีกด้วย
ถ้าเราต้องการเติมรูปสามเหลี่ยมด้วยหน้ายิ้ม ลองจินตนาการว่าเรามี 30 รูป แอตทริบิวต์ ransform ช่วยให้คุณสามารถจัดการรูปร่างได้หลายวิธีโดยใช้ SVG ในการแสดงการแปลงอื่นๆ ทั้งหมดในเมทริกซ์ ตลอดจนองค์ประกอบของการแปลงอื่นๆ โดยใช้เมทริกซ์ การแปลงเมทริกซ์เป็นรูปแบบทั่วไปที่สุดในบรรดาทั้งหมด การคลิปและการมาสก์จะคล้ายกันตรงที่ทำหน้าที่เดียวกันกับการคลิป แต่การมาสก์อาจถูกบดบังด้วยพื้นหลังบางส่วน สไตล์ CSS ช่วยให้คุณกำหนดสไตล์องค์ประกอบ SVG ได้ในลักษณะเดียวกับองค์ประกอบ HTML การสร้างหน้า CSS ไม่เพียงแต่แยกรูปลักษณ์ของ CSS ออกจาก ไฟล์ SVG เท่านั้น แต่ยังแยกหน้า CSS ออกจากหน้า HTML อีกด้วย เมื่อใช้ตัวฟังเหตุการณ์ สามารถเพิ่มได้โดยตรงไปยังองค์ประกอบ SVG
เมื่อเลื่อนเมาส์ไปเหนือวงกลมในตัวอย่างต่อไปนี้ สีเติมจะเปลี่ยนจากสีเงินเป็นสีเหลือง รูปแบบ SVG เป็นรูปแบบกราฟิกที่สมบูรณ์และซับซ้อน เป็นรูปแบบเวกเตอร์ที่ใช้งานง่ายกว่า JPEG และ PNG ซึ่งทั้งสองรูปแบบเป็นรูปแบบแรสเตอร์ เป็นการดีที่สุดที่จะใช้เครื่องมือวาดภาพที่เหมาะสมในการทำงานให้ได้มากที่สุดด้วยวิธีที่มีประสิทธิภาพมากที่สุดเท่าที่จะเป็นไปได้ โชคดีที่มีเครื่องมือมากมายที่รองรับรูปแบบเอาต์พุต SVG คุณสามารถดูว่าผู้ใช้ผ่านอะไรมาบ้างแบบเรียลไทม์ด้วย SessionStack ซึ่งช่วยให้คุณเล่นซ้ำเซสชันของผู้ใช้เป็นวิดีโอได้ คุณสมบัติทางภาพที่น่าทึ่งของแอพนี้แสดงให้เห็นว่าเกิดอะไรขึ้นเมื่อพวกเขาโต้ตอบกับกราฟิกของคุณ วิธีที่พวกเขาพบ และระบุปัญหาใด ๆ ได้อย่างรวดเร็ว หากคุณต้องการลองใช้ SessionStack คุณสามารถทำได้ฟรีในระยะเวลาจำกัด
รวมสอง Svg Javascript
มีสองสามวิธีในการผสานสอง svg javascript แต่วิธีที่ง่ายที่สุดคือการใช้ไลบรารี เช่น D3.js ด้วย D3 คุณสามารถเลือกสององค์ประกอบที่คุณต้องการผสานและใช้ฟังก์ชัน .merge()
Svg หลายรายการในไฟล์เดียว
เป็นไปได้ที่จะมี SVG หลาย ไฟล์ในไฟล์เดียว แต่ไม่แนะนำ SVG แต่ละไฟล์ควรเป็นไฟล์ของตัวเองเพื่อการจัดระเบียบและประสิทธิภาพที่ดีที่สุด
ใน CodePen โค้ดทั้งหมดที่ปรากฏในตัวแก้ไข HTML คือโค้ดที่ปรากฏภายในเทมเพลต HTML5 พื้นฐาน หากคุณต้องการรวมชั้นเรียนที่มีผลกระทบโดยตรงกับเอกสารทั้งหมด นี่คือที่ที่ควรไป ผู้ขายคุณสมบัติและมูลค่ามักใช้คำนำหน้าผู้ขายกับคุณสมบัติและค่าที่ต้องดำเนินการ คุณสามารถเชื่อมต่อกับปากกาของคุณได้จากทุกที่ ทุกแห่งบนอินเทอร์เน็ต และใช้สคริปต์จากที่นั่น จากนั้น เพียงวาง URL ในช่อง URL ที่นี่ และ URL นั้นจะถูกเพิ่มก่อน JavaScript ในปากกา หากนามสกุลไฟล์ของสคริปต์ที่คุณลิงก์มีการเปลี่ยนแปลง เราจะพยายามดำเนินการก่อนที่จะนำไปใช้
อินไลน์ Svg Javascript
Inline SVG เป็นภาษามาร์กอัป XML ที่อนุญาตให้แสดงกราฟิกแบบเวกเตอร์ได้โดยตรงภายในเอกสาร HTML ซึ่งช่วยให้นักพัฒนาสามารถสร้างหน้าเว็บด้วยกราฟิกแบบเวกเตอร์แบบโต้ตอบได้ โดยไม่จำเป็นต้องใช้ปลั๊กอินหรือแอปพลิเคชันแยกต่างหาก Inline SVG ยังช่วยให้นักพัฒนาสามารถจัดรูปแบบกราฟิกแบบเวกเตอร์ด้วย CSS และทำให้กราฟิกเคลื่อนไหวด้วย JavaScript
ฟังก์ชัน Javascript สามารถดำเนินการได้โดยใช้ SVG แบบอินไลน์ ฉันพิจารณาแล้วว่าวิธีที่ฉันแนะนำไปนั้นใช้ไม่ได้ ดังนั้นฉันจึงทำตามขั้นตอนด้านล่าง เติมฟังก์ชันของคุณลงในบล็อก Javascript กำหนดเหตุการณ์ onclick และเพิ่มบล็อก Javascript ใส่ $action ในฟังก์ชั่นเพื่อให้การกระทำนั้นค้างอยู่ ตามคำแนะนำที่ฉันให้ไว้ในบทความก่อนหน้านี้ ฉันสร้าง PoC ด้านล่างขั้นตอนและทดสอบทันที เมื่อองค์ประกอบถูกคลิก ฉันจะใช้การดำเนินการกับไคลเอนต์ Handler_OnSVGClick ซึ่งมีเฉพาะข้อความเท่านั้น Jo*o มีวิธีแก้ปัญหาที่ชาญฉลาด และฉันยอมรับว่าเขาเป็นคนที่ฉลาดกว่าฉัน
Inline Svg ดีกว่า Svg ภายนอก
หากคุณต้องการสร้างไฟล์ svg แบบอินไลน์ ให้ใช้ไฟล์ svg ภายนอก ในกรณีส่วนใหญ่ SVG แบบอินไลน์เป็นตัวเลือกที่ดีที่สุด แม้ว่าข้อเท็จจริงที่ว่าไฟล์แบบฝังภายนอกอาจดีกว่าในบางกรณี ง่ายต่อการเขียนสคริปต์ จัดการ จัดรูปแบบ และบำรุงรักษา
ใส่ Svg ด้วย Javascript
การแทรก SVG ด้วย JavaScript สามารถทำได้หลายวิธี วิธีหนึ่งคือการใช้ไฟล์ SVG เป็นภาพพื้นหลังสำหรับองค์ประกอบ HTML ซึ่งสามารถทำได้โดยตั้งค่าคุณสมบัติ CSS 'background-image' เป็น 'url(“path/to/file.svg”)' อีกวิธีหนึ่งคือการใช้ ' ' แท็กและตั้งค่าแอตทริบิวต์ 'src' เป็น 'path/to/file.svg'
เช่นเดียวกับ HTML การแสดง svegetation จะแสดงโดยใช้ Document Object Model (DOM) ซึ่งหมายความว่าง่ายต่อการจัดการด้วย Javascript ในส่วนนี้ ฉันจะพูดถึงวิธีใช้ทั้ง SVG แบบอินไลน์และ ภายนอก ดูตัวอย่างโค้ดได้ที่ด้านบนของหน้านี้ ซึ่งคุณสามารถเข้าถึงได้โดยคลิกลิงก์ Github เมื่อใช้ SVG ภายนอก คุณต้องรวมรหัสเดียวกันเมื่อโหลดองค์ประกอบ <script> เนื่องจาก SVG ไม่สามารถมองเห็น SVG อื่นใดบนหน้า จึงสามารถสร้างได้โดยใช้เอกสาร HTML ที่ฝังอยู่ในหน้า เมื่อโค้ดอยู่ใน CDATA จะถือว่าโค้ด JS เป็นส่วนหนึ่งของ XML โดยไม่คำนึงว่าโค้ดจะอยู่ที่ใดในการแยกวิเคราะห์
การสร้างและลบองค์ประกอบใน HTML เป็นสิ่งเดียวกัน เมธอด createElementNS ของเอกสารที่เกี่ยวข้องต้องผ่านชื่อแท็กและเนมสเปซที่มีองค์ประกอบที่จะสร้างขึ้น จำเป็นต้องสร้างโหนดข้อความแยกต่างหากเพื่อลบองค์ประกอบ ซึ่งต้องต่อท้ายองค์ประกอบโดยใช้ createTextNode ใช้งานได้เนื่องจากไม่ได้อยู่ในเอกสารเดียวกัน
รูปภาพ Svg ใน Css
รูปภาพ SVG สามารถใช้งานได้หลากหลายใน CSS วิธีที่ง่ายที่สุดในการรวมไฟล์ SVG ในรูปภาพแบบอินไลน์คือการใช้รูปแบบ URI ข้อมูล ตัวอย่างเช่นพูดว่า br ออกเสียงว่า url (mySVG.svg) เป็นภาพพื้นหลัง คุณสามารถใช้วิธีนี้ในเบราว์เซอร์รุ่นใหม่ๆ โดยไม่ต้องเรียก encodeURIComponent() เพื่อรับค่าที่เข้ารหัสของคอมโพเนนต์ หากต้องการใช้ SVG โดยไม่เข้ารหัสใน CSS ให้ใช้พร็อพเพอร์ตี้สไตล์อินไลน์ [br] มันเป็นลูกเต๋าเล็กน้อย Inline-svg เป็นค่าเริ่มต้น มันจะถูกดำเนินการในเบราว์เซอร์สมัยใหม่ทั้งหมดโดยไม่ต้องใช้การเรียก encodeURIComponent() หากคุณต้องการใช้ SVG ใน CSS ของคุณในขณะที่ทำงานในเบราว์เซอร์รุ่นเก่าด้วย โปรดใช้คุณสมบัติชวเลข svg(): https://br.shtml อย่างที่คุณเห็น * เป็นตัวพิมพ์ใหญ่ ฉันจะใช้ svg() สำหรับพื้นหลัง เบราว์เซอร์สมัยใหม่ทั้งหมดรวมถึงเบราว์เซอร์ที่ไม่รองรับสไตล์อินไลน์จะใช้งานได้
วิธีใช้ Svg ใน Html
แท็ก svg> */svg> ช่วยให้คุณเพิ่มรูปภาพลงในเอกสาร HTML ได้โดยตรง ขั้นตอนต่อไปนี้คือการเปิด รูปภาพ SVG ในโค้ด VS หรือ IDE ที่คุณต้องการ คัดลอกโค้ดและวางลงในองค์ประกอบ body> ของเอกสาร HTML หากทุกอย่างเรียบร้อยแล้ว คุณควรมีหน้าเว็บที่มีลักษณะเหมือนกับตัวอย่างด้านล่างทุกประการ
การกำหนดระบบพิกัดใหม่และวิวพอร์ตเป็นหนึ่งในองค์ประกอบ SVG Scalable Vector Graphics (SVG) เป็นรูปแบบภาพประเภทหนึ่งที่ใช้ข้อมูลเวกเตอร์ เมื่อใช้ SVG รูปภาพของคุณจะไม่มีพิกเซลที่แตกต่างกัน เช่นเดียวกับรูปภาพประเภทอื่นๆ ข้อมูลเวกเตอร์ใช้เพื่อสร้างภาพที่สามารถปรับขนาดให้มีความละเอียดใดก็ได้ ในการสร้างรูปทรงสี่เหลี่ยมใน HTML ให้ใช้องค์ประกอบ >rect> สามารถสร้างดาวได้โดยใช้แท็ก PNG สามารถสร้างโลโก้ใน SVG โดยใช้การไล่ระดับสีเชิงเส้น
เนื่องจากขนาดไฟล์ที่เล็กลง การโหลดรูปภาพบนเว็บไซต์ของคุณโดยใช้ SVG จึงง่ายกว่า ความละเอียดไม่สำคัญสำหรับผู้สร้าง กราฟิก SVG เป็นผลให้โปรแกรมเหล่านี้เข้ากันได้กับอุปกรณ์และเบราว์เซอร์ที่หลากหลาย เมื่อรูปแบบแรสเตอร์ เช่น PNG และ JPG ขยายใหญ่ขึ้น รูปแบบเหล่านั้นจะกลายเป็นดิจิทัล Inline SVG เป็นวิธีง่ายๆ ในการโหลดไฟล์รูปภาพที่ไม่ขึ้นอยู่กับคำขอ HTTP หากเว็บไซต์ของคุณมีการตอบสนอง ผู้ใช้ของคุณจะสังเกตเห็นได้
Svg และ Css
SVG (Scalable Vector Graphics) เป็นรูปแบบภาพเวกเตอร์ที่ใช้ XML สำหรับกราฟิกสองมิติพร้อมรองรับการโต้ตอบและภาพเคลื่อนไหว CSS (Cascading Style Sheets) เป็นภาษาสไตล์ชีตที่ใช้สำหรับอธิบายการนำเสนอเอกสารที่เขียนด้วยภาษามาร์กอัป สไตล์ชีต CSS คือชุดของกฎที่บอกเว็บเบราว์เซอร์ถึงวิธีแสดงเอกสารที่เขียนด้วย HTML หรือ XML
แอตทริบิวต์การนำเสนอใช้เพื่อจัดรูปแบบองค์ประกอบ SVG และองค์ประกอบสามารถเป็นคุณสมบัติของ CSS ได้เช่นกัน ตัวอย่างเช่น สามารถใช้การเติมเพื่อเปลี่ยนสีขององค์ประกอบจากสีขาวเป็นสีแดงใน CSS เอฟเฟ็กต์ข้อความ การกำบัง การกรอง และการกรองคือตัวอย่างของ คุณสมบัติ CSS และ SVG คุณสมบัติ CSS ขององค์ประกอบ SVG แต่ละรายการจะแตกต่างจากองค์ประกอบอื่นเล็กน้อย ในซอฟต์แวร์เวอร์ชันล่าสุด คุณสมบัติทางเรขาคณิต เช่น rx และ ry ถูกกำหนดไว้แล้ว คุณสมบัติทางเรขาคณิตยังสามารถใช้เป็นคุณสมบัติ CSS ในลักษณะเดียวกับที่แอตทริบิวต์การนำเสนอ เช่น การเติมและเส้นขีด องค์ประกอบสามารถเปลี่ยนเป็นรูปร่างได้โดยใช้ CSS เป็นตัวแทนที่
สำหรับองค์ประกอบ >rect> คุณยังสามารถระบุความสูงและความกว้างโดยใช้ CSS รูปร่างขององค์ประกอบที่กำหนดสามารถระบุได้โดยใช้คุณสมบัติ d ด้วยการเพิ่ม a:active pseudoclass รูปร่างจะเปลี่ยนเป็นสี่เหลี่ยมจัตุรัสและสีเติมจะเปลี่ยนไปเมื่อคลิก หากต้องการเพิ่มการหน่วงเวลาของภาพเคลื่อนไหวให้กับแต่ละคลาสของรูปร่างใน CSS ให้ใช้การหน่วงเวลาของภาพเคลื่อนไหว ไม่จำเป็นต้องใช้เทคนิคเหล่านี้ในการผลิตทันที
Svg ผสาน
SVG Merge เป็นเครื่องมือบรรทัดคำสั่งที่ใช้ไฟล์ SVG หลายไฟล์และส่งออกไฟล์ SVG ไฟล์เดียว ไฟล์เอาต์พุตมีรูปร่างทั้งหมดจากไฟล์อินพุต รวมเป็นหนึ่งเดียว
ความสามารถในการรวมไฟล์ SVG หลายไฟล์เป็นไฟล์เดียวนั้นมาจากการใช้ SVG Merger เครื่องมือนี้สามารถใช้เพื่อส่งออกไฟล์ sva ที่ได้หลังจากเข้าร่วมภาพ SVG โปรแกรมนี้ทำงานในเว็บเบราว์เซอร์ใดก็ได้ โดยไม่คำนึงถึงระบบปฏิบัติการ ไม่แนะนำให้ขนาดไฟล์ SVG เกิน 10 MB
Svg กราฟิก
SVG เป็นรูปแบบกราฟิกแบบเวกเตอร์สำหรับกราฟิกสองมิติพร้อมรองรับการโต้ตอบและภาพเคลื่อนไหว ข้อกำหนด SVG เป็นมาตรฐานเปิดที่พัฒนาโดย World Wide Web Consortium (W3C) ตั้งแต่ปี 1999 ภาพ SVG และลักษณะการทำงานถูกกำหนดไว้ในไฟล์ข้อความ XML ซึ่งหมายความว่าสามารถค้นหา สร้างดัชนี เขียนสคริปต์ และบีบอัดข้อมูลได้ ในฐานะไฟล์ XML ภาพ SVG สามารถสร้างและแก้ไขได้ด้วยโปรแกรมแก้ไขข้อความใดๆ แต่มักจะสร้างด้วยซอฟต์แวร์วาดภาพ
Scalable Vector Graphics (SVG) เป็นไลบรารีกราฟิกสองมิติประเภทหนึ่ง แอปพลิเคชันแบ่งออกเป็นสองส่วน: รูปแบบไฟล์ที่ใช้ XML และอินเทอร์เฟซการเขียนโปรแกรมแบบกราฟิก สามารถใช้สไตล์การวาดภาพหลายประเภท รวมถึงรูปร่าง ข้อความ และกราฟิกแรสเตอร์แบบฝัง โดยใช้คุณลักษณะหลัก ภาษาสคริปต์ เช่น ECMAScript รวมถึงการสนับสนุนแอนิเมชั่นอย่างสมบูรณ์ ผู้ผลิตฮาร์ดแวร์การพิมพ์ชั้นนำกำลังพัฒนาเวอร์ชันของ SVG ที่ออกแบบมาโดยเฉพาะสำหรับการพิมพ์สำเนา มีกรณีการใช้งานมากมายที่รวมคำอธิบายเพจที่ใช้ XML ซึ่งตรงข้ามกับ Postscript และ PDF เนื่องจากเครื่องมือออกแบบจำนวนมากรองรับการนำเข้าและส่งออก SVG จึงสามารถใช้เป็นรูปแบบการแลกเปลี่ยนข้ามแพลตฟอร์มได้ ภาษา SVG อธิบายกราฟิกสองมิติใน XML
วัตถุกราฟิกสามารถแบ่งออกเป็นสามประเภท: กราฟิกแบบเวกเตอร์ รูปภาพ และข้อความ วัตถุสามารถจัดกลุ่ม จัดรูปแบบ แปลง และประกอบในบริบทกราฟิก อุปกรณ์สามารถควบคุมและตรวจสอบสิ่งต่างๆ เช่น ระบบควบคุมอุตสาหกรรมด้วย ส่วนหน้า SVG