แอตทริบิวต์ ViewBox: สร้างมาตราส่วนภาพ SVG เป็นขนาดของคอนเทนเนอร์

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

หากคุณเคยพยายามสร้างสเกลภาพ SVG ให้พอดีกับพื้นที่ใดพื้นที่หนึ่ง คุณอาจสังเกตเห็นว่ามันใช้งานไม่ได้เหมือนกับภาพทั่วไป หากคุณตั้งค่าความกว้างและความสูงของภาพ SVG เป็น "100%" ภาพจะถูกยืดให้พอดีกับคอนเทนเนอร์ สิ่งนี้อาจเป็นสิ่งที่ไม่พึงประสงค์ โดยเฉพาะอย่างยิ่งหากคุณกำลังพยายามสร้างการออกแบบที่ตอบสนอง วิธีหนึ่งในการปรับขนาดภาพ SVG ให้มีขนาดเท่าคอนเทนเนอร์คือตั้งค่าแอตทริบิวต์ viewBox แอตทริบิวต์ viewBox กำหนดระบบพิกัดสำหรับเนื้อหาของภาพ SVG ตามค่าเริ่มต้น ระบบพิกัดจะตั้งค่าเป็น 0 0 400 400 ซึ่งหมายความว่ามุมซ้ายบนของภาพอยู่ที่ 0,0 และมุมขวาล่างอยู่ที่ 400,400 หากคุณตั้งค่าแอตทริบิวต์ viewBox เป็น 0 0 100 100 รูปภาพจะถูกปรับขนาดเพื่อให้มุมซ้ายบนเป็น 0,0 และมุมล่างขวาเป็น 100,100 นอกจากนี้ยังสามารถใช้แอตทริบิวต์ viewBox เพื่อสร้างสเกลภาพ SVG ให้มีขนาดเท่ากับลูกของมัน ซึ่งจะมีประโยชน์หากคุณมีภาพ SVG ที่มีรายละเอียดเล็กๆ น้อยๆ จำนวนมาก ในการสร้างขนาดภาพ SVG ให้มีขนาดเท่าลูก คุณต้องตั้งค่าแอตทริบิวต์ viewBox เป็น 0 0 100 100 ซึ่งจะทำให้ขนาดภาพมุมบนซ้ายอยู่ที่ 0,0 และมุมล่างขวา อยู่ที่ 100,100.

บทความนี้จะแนะนำคุณเกี่ยวกับขั้นตอนการปรับขนาดกราฟิกแบบเวกเตอร์ (SVG) Amelia Bellamy-Royds ได้เขียนคำแนะนำที่น่าทึ่งในการปรับขนาด SVG แม้ว่าการปรับขนาดกราฟิกแรสเตอร์จะไม่ง่ายเหมือนการปรับขนาดกราฟิกแบบเวกเตอร์ แต่ก็มีศักยภาพที่จะน่าตื่นเต้น ผู้เริ่มต้นมักสับสนกับวิธีทำให้พฤติกรรมเป็นไปตามที่ต้องการ รูปภาพ Inaster มีอัตราส่วนภาพที่กำหนดไว้อย่างชัดเจน: อัตราส่วนของความกว้างต่อความสูง หากคุณบังคับให้เบราว์เซอร์วาดภาพแรสเตอร์ใน อัตราส่วนกว้างยาวที่แตก ต่างจากความสูงและความกว้างที่แท้จริง มันจะบิดเบือนสิ่งต่างๆ SVG แบบอินไลน์จะถูกวาดตามขนาดที่ระบุในโค้ด โดยไม่คำนึงถึงขนาดผ้าใบ

ViewBox ซึ่งเป็นส่วนสุดท้ายในคอมเพล็กซ์กราฟิกแบบเวกเตอร์ ช่วยให้คุณสร้างกราฟิกแบบเวกเตอร์ที่ใหญ่ขึ้นได้ องค์ประกอบนี้มี viewBox เป็นแอตทริบิวต์ ประกอบด้วยตัวเลขสี่ตัว: x, y, ความกว้าง และความสูง ซึ่งทั้งหมดสามารถคั่นด้วยช่องว่างหรือเครื่องหมายจุลภาค ที่มุมซ้ายของวิวพอร์ต ต้องระบุตัวแปรสองตัวนี้ ความสูงสามารถกำหนดเป็นจำนวนพิกัดและพื้นที่ไอคอนที่ต้องปรับขนาดให้ตรงกับความต้องการความสูงของผู้ใช้ ตามค่าเริ่มต้น รูปภาพจะไม่ถูกยืดหรือบิดเบี้ยวหากมีขนาดที่ไม่สอดคล้องกับอัตราส่วนภาพ นอกเหนือจาก คุณสมบัติ CSS ที่พอดีกับ วัตถุที่เพิ่มเข้ามาใหม่ ตอนนี้คุณสามารถใส่รูปภาพประเภทอื่นๆ ได้

หากคุณต้องการให้กราฟิกของคุณปรับขนาดเหมือนภาพแรสเตอร์ คุณยังสามารถปิดใช้งาน ภาพแรสเตอร์สามารถปรับลดหรือเพิ่มขนาดได้ตามความต้องการของผู้ใช้ SVG จะจัดการกับสิ่งนั้นได้อย่างไร กระบวนการนี้ยากขึ้นเรื่อย ๆ เมื่อเวลาผ่านไป การปรับขนาดภาพอัตโนมัติด้วยภาพใน >img> เป็นจุดเริ่มต้นที่ดี แต่คุณจะต้องแฮ็คภาพเล็กน้อยเพื่อเริ่มต้น หากต้องการควบคุมอัตราส่วนกว้างยาวขององค์ประกอบแบบไดนามิก คุณสามารถกำหนดค่าให้มีความสูงและระยะขอบที่สอดคล้องกับความสูงและระยะขอบขององค์ประกอบนั้นได้ ตราบเท่าที่ภาพมี viewBox ขนาดเริ่มต้น 300*150 จะถูกนำไปใช้ พฤติกรรมนี้ไม่ได้กำหนดไว้ในมาตรฐานใดๆ

หากคุณใช้เบราว์เซอร์ Blink หรือ Firefox ล่าสุด คุณสามารถปรับขนาดภาพให้พอดีกับช่องมองภาพได้ เบราว์เซอร์เหล่านี้จะใช้ขนาดเริ่มต้นโดยไม่คำนึงว่าคุณระบุความสูงหรือความกว้าง องค์ประกอบคอนเทนเนอร์เป็นวิธีการที่ตรงไปตรงมาที่สุดในการแทนที่องค์ประกอบใน SVG เป็นต้น ในกราฟิกแบบอินไลน์ /lt;svg> ความสูงอย่างเป็นทางการจะเป็นศูนย์ กราฟิกจะลดลงเหลืออะไรเลยหากตั้งค่า หากคุณต้องการยืดกราฟิก ตรวจสอบให้แน่ใจว่าครอบคลุมความกว้างทั้งหมดแล้ว จากนั้นขยายออกไปยังพื้นที่ขอบโดยตั้งค่าสัดส่วนภาพที่เหมาะสมอย่างระมัดระวัง เป็นไปไม่ได้ที่จะจำกัดแอตทริบิวต์ viewBox และการรักษา RatioAspect เป็นไปได้ที่จะสร้างส่วนต่างๆ ของมาตราส่วนกราฟิกของคุณสำหรับแต่ละองค์ประกอบที่ซ้อนกัน ซึ่งแต่ละองค์ประกอบมีแอตทริบิวต์การปรับมาตราส่วนของตัวเอง เป็นไปได้ที่จะสร้างกราฟิกส่วนหัวที่ขยายจนเต็มหน้าจอกว้างโดยไม่รบกวนการต้อนรับของคุณ

คุณจะปรับขนาดไฟล์ svg ได้อย่างไร? เมื่อเสร็จแล้ว เพียงลากและวางไฟล์ภาพ SVG ของคุณ หรือคลิกที่พื้นที่สีขาวเพื่อเลือกไฟล์ หลังจากที่คุณกำหนดการตั้งค่าการปรับขนาดแล้ว ให้คลิก ปุ่มปรับขนาด เพื่อทำให้ใหญ่ขึ้น หลังจากดำเนินการเสร็จสิ้น คุณจะสามารถดาวน์โหลดผลลัพธ์ของคุณได้

ViewBox ใช้เพื่อปรับขนาดภาพ SVG ตัวเลข “0 0 100 100” ระบุระบบพิกัดด้วย x=0, y=0, กว้าง=100 หน่วย, สูง=100 หน่วย โดยสรุป รูปสี่เหลี่ยมผืนผ้าที่มีความกว้างและความสูงของ SVG จะเติมความสูงและความกว้างของรูปภาพ และขนาดทั้งหมดจะถูกปรับขนาดเท่ากัน

เมื่อส่งออก SVG ตัวเลือก 'ตอบสนอง' จะไม่ถูกเลือกในส่วนตัวเลือกเพิ่มเติม เมื่อคุณเลือก Illustrator Artboard มันจะแสดงขนาดที่คุณระบุ ตรวจสอบให้แน่ใจว่าคุณเลือกหรือเน้นโลโก้ของคุณก่อนที่จะครอบตัดอาร์ตบอร์ด

ไฟล์ PNG มีข้อมูลในรูปแบบของเส้นทางและโหนดมากกว่าไฟล์ SVG แม้ว่าจะมีขนาดเท่ากัน แต่ ภาพ SVG ก็ไม่ดีเท่ากับภาพ PNG

ฉันจะทำให้ Svgs มีขนาดเท่ากันได้อย่างไร

ฉันจะทำให้ Svgs มีขนาดเท่ากันได้อย่างไร
ถ่ายภาพโดย – pinimg.com

ไม่มีคำตอบเดียวสำหรับคำถามนี้ เนื่องจากวิธีที่ดีที่สุดในการทำให้ SVG มีขนาดเท่ากันจะแตกต่างกันไปขึ้นอยู่กับแต่ละโครงการ อย่างไรก็ตาม เคล็ดลับบางประการเกี่ยวกับวิธีทำให้ SVG มีขนาดเท่ากัน ได้แก่ การใช้หน่วยวัดที่สอดคล้องกันและใช้แอตทริบิวต์ viewBox เดียวกันสำหรับ SVG ทั้งหมด

เนื่องจากเป็นรูปแบบเวกเตอร์ การปรับขนาดสามารถทำได้โดยไม่สูญเสียคุณภาพ อย่างไรก็ตาม ในขั้นตอนการเรนเดอร์ SVG สามารถสร้างความแตกต่างได้ โดยเฉพาะอย่างยิ่งเมื่อแสดงผลบนเพจแล้วขยายใหญ่ขึ้น หากคุณต้องการพิมพ์ สำเนา ห้องของคุณในอัตราส่วน 1:1 คุณจะต้องปรับขนาด SVG ของคุณเป็นหนึ่ง / worldToPrinterScaleFactor หากต้องการพิมพ์สำเนาขนาดครึ่งห้องของคุณ คุณต้องปรับขนาด (คูณ) SVG ของคุณด้วย 0.5 / worldToPrinterScaleFactor


Svg สามารถเป็นลูกของ Svg ได้หรือไม่?

Svg สามารถเป็นลูกของ Svg ได้หรือไม่?
ถ่ายภาพโดย – pinimg.com

ส่วนย่อยของเอกสาร SVG สามารถเป็นได้ทั้งเอกสารแบบสแตนด์อโลนหรือส่วนย่อยของเอกสารหลักที่ล้อมรอบด้วยองค์ประกอบ an'svg' แม้ว่าอิลิเมนต์ a'svg' จะเป็นตัวสืบทอดโดยตรงของอิลิเมนต์อื่นที่มีเนมสเปซที่ใช้ร่วมกัน แต่รูทของแฟรกเมนต์เอกสาร SVG ไม่ใช่ตัวของมันเอง จำเป็นต้องมีเนมสเปซที่มีชื่ออิลิเมนต์ใน sva

การสร้างเส้นทางด้วย D3

คะแนน var ถูกจัดเรียงในรูปแบบกริด ประกอบด้วยคำสามคำ: geo คุณสามารถชี้ได้โดยใช้ br() และ point รูปร่าง กลุ่ม *br จุดเท่ากับจุดอ้าง
ชื่อโปรแกรม ง. เปลี่ยนรูป (attr)
มีการระบุฟังก์ชันในคำจำกัดความต่อไปนี้
ซึ่งหมายความว่าหากการแปลง var loc = d (d3) หมายถึงการแปลงโฆษณา อาจเป็นตำแหน่งที่แน่นอน
เส้นทางเป็นผลมาจากสมการต่อไปนี้: loc + loc + M, loc + loc + L, loc + C, loc + C และ loc + L ความยาว; ***br> อาจเป็นได้; หรืออาจจะเป็น; หรืออาจจะเป็น; หรืออาจจะเป็น; หรืออาจจะเป็น; หรืออาจจะเป็น; หรือไม่ก็ได้