วิธีสร้าง Svg Fit Container

เผยแพร่แล้ว: 2022-12-24

ภาพ SVG นั้นยอดเยี่ยมด้วยเหตุผลหลายประการ ภาพเหล่านี้เป็นภาพเวกเตอร์ ซึ่งหมายความว่าสามารถปรับขนาดเป็นขนาดใดก็ได้โดยไม่สูญเสียคุณภาพ นอกจากนี้ยังมีขนาดไฟล์ที่เล็กซึ่งเหมาะสำหรับเว็บแอปพลิเคชัน อย่างไรก็ตาม ปัญหาหนึ่งที่มักเกิดขึ้นคือภาพ SVG ไม่ได้ปรับขนาดให้พอดีกับคอนเทนเนอร์โดยอัตโนมัติ มีสองสามวิธีในการแก้ไขปัญหานี้ หนึ่งคือการตั้งค่าแอตทริบิวต์ความกว้างและความสูงขององค์ประกอบเป็น 100% สิ่งนี้จะทำให้รูปภาพปรับขนาดให้พอดีกับคอนเทนเนอร์ อีกวิธีคือตั้งค่าแอตทริบิวต์ viewBox สิ่งนี้จะกำหนดระบบพิกัดใหม่สำหรับรูปภาพ ซึ่งจะทำให้ปรับขนาดให้พอดีกับคอนเทนเนอร์ วิธีที่ง่ายที่สุดในการปรับขนาดรูปภาพ SVG ให้พอดีกับคอนเทนเนอร์คือตั้งค่าแอตทริบิวต์ความกว้างและความสูงเป็น 100% ซึ่งสามารถทำได้แบบอินไลน์หรือใน CSS อินไลน์: … CSS: .container { ความกว้าง: 400px; ความสูง: 300px; } .container svg { ความกว้าง: 100%; ความสูง: 100%; } เมื่อตั้งค่าความกว้างและความสูงเป็น 100% รูปภาพจะปรับขนาดให้พอดีกับคอนเทนเนอร์ หากรูปภาพมีขนาดใหญ่กว่าคอนเทนเนอร์ ภาพนั้นจะถูกลดขนาดลง หากรูปภาพมีขนาดเล็กกว่าคอนเทนเนอร์ รูปภาพนั้นจะถูกปรับขนาดให้ใหญ่ขึ้น นอกจากนี้ยังสามารถใช้แอตทริบิวต์ viewBox เพื่อปรับขนาดภาพ SVG ให้พอดีกับคอนเทนเนอร์ แอตทริบิวต์ viewBox กำหนดระบบพิกัดใหม่สำหรับรูปภาพ ใช้ดังนี้ … สองค่าแรกคือพิกัด x และ y ของจุดกำเนิดใหม่ สองค่าที่สองคือความกว้างและความสูงของรูปภาพ หากรูปภาพมีขนาดใหญ่กว่าคอนเทนเนอร์ ภาพนั้นจะถูกลดขนาดลง นอกจากนี้ยังสามารถใช้แอตทริบิวต์ viewBox เพื่อครอบตัดรูปภาพ หากรูปภาพมีขนาดใหญ่กว่าคอนเทนเนอร์ พื้นที่ส่วนเกินจะถูกครอบตัด หากรูปภาพมีขนาดเล็กกว่าคอนเทนเนอร์ พื้นที่ว่างจะถูกเติมด้วยสีพื้นหลัง สามารถใช้แอตทริบิวต์ viewBox ได้ดังนี้: ฉันจะปรับขนาด Svg ให้พอดีกับคอนเทนเนอร์ได้อย่างไร รูปภาพโดย: https://googleapis.com หากคุณต้องการปรับขนาด SVG ให้พอดีกับคอนเทนเนอร์ คุณสามารถใช้แอตทริบิวต์ viewBox ได้ แอตทริบิวต์ viewBox ใช้ตัวเลขสี่ตัวที่คั่นด้วยช่องว่าง: พิกัด x และ y ของมุมซ้ายบนของ viewBox ตามด้วยความกว้างและความสูง วิธีการปรับขนาดกราฟิกแบบเวกเตอร์ที่ปรับขนาดได้ (SVG) Amelia Bellamy-Royds ได้เขียนคำแนะนำที่น่าทึ่งในการปรับขนาด SVG มันไม่ง่ายเหมือนการปรับขนาดกราฟิกแรสเตอร์ แต่มันให้ความเป็นไปได้ที่น่าสนใจมากมาย สำหรับผู้เริ่มต้น อาจเป็นเรื่องยากที่จะเข้าใจวิธีการตั้งค่า SVG ในแบบที่เหมาะกับเขาหรือเธอ ภาพ Inaster มีสัดส่วนภาพที่ชัดเจน: อัตราส่วนของความสูงต่อความกว้าง หากคุณบังคับให้เบราว์เซอร์วาดภาพแรสเตอร์ในขนาดที่แตกต่างจากความสูงและความกว้างที่แท้จริง ภาพนั้นจะทำให้ภาพบิดเบี้ยว SVG แบบอินไลน์จะถูกวาดตามขนาดที่ระบุในโค้ดโดยค่าเริ่มต้น ไม่ว่าผืนผ้าใบจะมีขนาดใหญ่หรือเล็กก็ตาม ViewBox เป็นส่วนสุดท้ายในกระบวนการสร้างกราฟิกแบบเวกเตอร์ที่ปรับขนาดได้สำหรับกราฟิกแบบเวกเตอร์ ViewBox เป็นแอตทริบิวต์ขององค์ประกอบ >svg ค่าของมันคือรายการของตัวเลขสี่ตัวคั่นด้วยช่องว่างหรือลูกน้ำ: x, y, ความกว้าง และความสูง ต้องระบุระบบพิกัดสำหรับมุมซ้ายบนของวิวพอร์ตเป็น x และ y ความสูงคือจำนวนอักขระ/พิกัดที่ต้องปรับขนาดเพื่อเติมช่องว่างที่เหลือตามความสูง อัตราส่วนกว้างยาวของรูปภาพถูกตั้งค่าเป็นจริง ดังนั้นคุณจะไม่สามารถบิดเบี้ยวหรือยืดออกได้หากคุณกำหนดขนาดนอกเหนือจากนั้น ขณะนี้ CSS รองรับความสามารถในการปรับให้พอดีกับรูปภาพประเภทต่างๆ ซึ่งช่วยให้คุณทำสิ่งเดียวกันกับวัตถุได้ คุณยังสามารถกำหนดการตั้งค่าPreservRatioAspect=noneเพื่อปรับขนาดกราฟิกให้เหมือนกับภาพแรสเตอร์ได้ ภาพแรสเตอร์ทำให้คุณสามารถตั้งค่าความกว้างและความสูงได้ เช่นเดียวกับขนาดที่ปรากฏ สวาทำได้ไหม มันจะยากขึ้นเมื่อเวลาผ่านไปหลายเดือน คุณสามารถใช้มันสำหรับการปรับขนาดรูปภาพอัตโนมัติด้วยรูปภาพในไฟล์ >img> แต่คุณจะต้องแฮ็กมันเล็กน้อยจึงจะทำได้ นอกจากคุณสมบัติ CSS ที่หลากหลายแล้ว คุณสามารถควบคุมอัตราส่วนกว้างยาวขององค์ประกอบได้โดยการปรับความสูงและระยะขอบ เบราว์เซอร์อื่นจะเปลี่ยนขนาดของรูปภาพเป็น 300*150 โดยอัตโนมัติหากรูปภาพมี viewBox พฤติกรรมไม่ได้กำหนดไว้ในข้อกำหนดใดๆ หากคุณใช้เบราว์เซอร์ Blink หรือ Firefox ล่าสุด คุณสามารถปรับขนาดภาพให้พอดีกับ viewBox ได้ หากคุณไม่ระบุทั้งความสูงและความกว้าง เบราว์เซอร์ที่คุณต้องการจะใช้ความกว้างและความสูงเริ่มต้น วิธีที่ง่ายที่สุดในการแทนที่องค์ประกอบ เช่นเดียวกับ SVG แบบอินไลน์ และองค์ประกอบที่ถูกแทนที่อื่นๆ คือการใช้องค์ประกอบคอนเทนเนอร์ ในกราฟิก <svg> แบบอินไลน์ ความสูงอย่างเป็นทางการจะเป็นศูนย์ (ในกรณีส่วนใหญ่) ค่าของ preservRatioAspect จะส่งผลให้กราฟิกถูกปรับขนาดเป็นค่าว่าง แทนที่จะยืดกราฟิกของคุณ คุณควรดึงมันออกมาจนเต็มความกว้างทั้งหมดที่คุณให้ไว้ โดยปล่อยให้ส่วนหนึ่งของพื้นที่เสริมมีสัดส่วนภาพที่เหมาะสม สามารถใช้แอตทริบิวต์ ViewBox และการรักษา RatioAspect เพื่อให้ได้ผลลัพธ์ที่หลากหลาย ในสเกลกราฟิกอิสระ องค์ประกอบที่ซ้อนกันสามารถใช้กับแอตทริบิวต์สเกลของตัวเองเพื่อแยกส่วนต่างๆ ของสเกลของคุณ วิธีนี้จะช่วยให้คุณสร้างกราฟิกส่วนหัวที่ขยายจนเต็มหน้าจอกว้างโดยไม่เกินขีดจำกัดความสูง ฉันจะแก้ไขขนาด Svg ได้อย่างไร ภาพถ่ายโดย: https://svgmall.comไม่มีขนาดเดียวพอดี คำตอบทั้งหมดสำหรับคำถามนี้ เนื่องจากวิธีที่ดีที่สุดในการแก้ไขขนาดไฟล์ SVG จะแตกต่างกันไปตามไฟล์แต่ละไฟล์ อย่างไรก็ตาม บางวิธีในการแก้ไขขนาดไฟล์ SVG รวมถึงการใช้โปรแกรมแก้ไข SVG เพื่อปรับขนาดไฟล์หรือแปลงไฟล์เป็นรูปแบบอื่น ตัวกรองรูปภาพตัวใดตัวหนึ่งได้รับการแก้ไขให้ใช้ขนาดที่คำนวณได้แทนค่าเท็จสำหรับ SVG เราคาดว่าค่าของความสูงและความกว้างจะอยู่ในรูปแบบจำนวนเต็ม ดังนั้นเราจึงไม่ทราบปัญหานี้ WordPress ที่เพิ่งเปิดตัวล่าสุดมีคุณสมบัติใหม่ที่ช่วยให้คุณสามารถคำนวณขนาดจริงที่สร้างโดย WordPress ในการทดสอบของฉัน ฉันใช้ทั้งโปรแกรมแก้ไขแบบคลาสสิกและแบบบล็อก และฉันไม่เห็นความแตกต่างใดๆ ในมาร์กอัปรูปภาพระหว่างก่อนและหลังการแก้ไขนี้ ฉันได้ตรวจสอบอีกครั้งและค่อนข้างแน่ใจว่าฉันคิดออกแล้ว หากคุณดู SVG ของคุณและพบแอตทริบิวต์ที่ต้องการ ฉันจะบอกว่าไม่เหมือนกับที่คุณใช้ ดังที่คุณเห็นจากตัวอย่างของคุณ ช่องมองภาพ SVG ของคุณมีความสูง 27 และความกว้าง 23 แต่ต้องตั้งค่าความสูงและความกว้างจริงเป็น 1030 ดูเหมือนจะเป็นตรรกะใหม่ในฟังก์ชัน one_pixel_fix ซึ่งจะตั้งค่า ความกว้างเริ่มต้นของรูปภาพเป็น 100x100px หากตั้งค่าเป็น null ในเวอร์ชันก่อนหน้า ก็ไม่มีปัญหา เป็นเรื่องน่าขบขันที่จะสังเกตว่าความสูงและความกว้างนั้นแสดงผลสองครั้ง การทำซ้ำครั้งแรกและครั้งสุดท้ายจะเกิดขึ้นที่จุดเริ่มต้นและจุดสิ้นสุดของแท็ก IMG ตามลำดับ เนื่องจากเบราว์เซอร์คำนึงถึงเหตุการณ์ที่เกิดขึ้นครั้งแรก จึงแสดงผลเหตุการณ์นั้นแทนเหตุการณ์ถัดไป เมื่อใช้เวอร์ชันปัจจุบัน ให้คัดลอก >imgsrc=example-path/file.svg loading height=”70″ width=”68 โปรดแจ้งให้เราทราบหากคุณต้องการทดสอบการเปลี่ยนแปลงก่อนที่จะตกลงกับ PR เพื่อยกเลิกการเปลี่ยนแปลงเฉพาะเหล่านี้: https://github.com/safe-svg/pull/41การใช้รูปแบบกราฟิกเวกเตอร์ SVG ทำให้เราสามารถสร้างกราฟิกที่กำหนดเองได้ . เนื่องจาก SVG เป็นรูปแบบเวกเตอร์ จึงมีความยืดหยุ่นและความแม่นยำในระดับที่สูงกว่าภาพ PNG ตัวอย่างเช่น หากคุณต้องการสร้างกราฟิกแบบไหลโดยใช้ SVG คุณจะต้องลบแอตทริบิวต์ความสูงและความกว้างออก SVG จะตอบสนอง ซึ่งเป็นคุณสมบัติที่สำคัญสำหรับเว็บเพจ Viewbox มีประโยชน์อย่างยิ่งสำหรับเค้าโครง Svg เมื่อคุณต้องการเค้าโครงเอกสาร SVG และวางตำแหน่งองค์ประกอบที่เกี่ยวข้องกับวิวพอร์ต viewBox จะมีประโยชน์อย่างยิ่ง ฉันจะเติมคอนเทนเนอร์ Svg ได้อย่างไร มีหลายวิธีในการเติมคอนเทนเนอร์ svg แต่วิธีที่พบมากที่สุดคือการใช้แอตทริบิวต์ 'fill' สิ่งนี้สามารถนำไปใช้กับองค์ประกอบของคอนเทนเนอร์หรือกับแต่ละองค์ประกอบภายในคอนเทนเนอร์ แอตทริบิวต์การเติมสามารถตั้งค่าเป็นสี การไล่ระดับสี หรือรูปแบบได้