ข้อดีหลายประการของ SVG - รวมถึงภาพเวกเตอร์ที่ปรับขนาดได้อย่างไม่ จำกัด ขนาดไฟล์ขนาดเล็กและการรวมโดยตรงกับ DOM - ทำให้เป็นธรรมชาติสำหรับ การออกแบบเว็บตอบสนอง . แม้จะมีสเปค SVG ที่เป็นทศวรรษที่ผ่านมา แต่การสนับสนุนล่าสุดในเบราว์เซอร์และเครื่องมือจำนวนมากหมายความว่ายังมีจำนวนของกลอุบายช่องโหว่และ Gotchas ที่ดึงดูดนักออกแบบเว็บไซต์และนักพัฒนาที่มีประสบการณ์
ที่นี่ฉันสรุปที่สำคัญที่สุดของกฎทองคำ 10 ข้อ
ในฐานะที่เป็นช่างฝีมือลับเครื่องมือของเขาก่อนที่จะทำงานทุกคนที่ทำงานกับ SVG ต้องตั้งค่าแอปพลิเคชันของพวกเขาเพื่อส่งรูปแบบเวกเตอร์ในวิธีที่มีประสิทธิภาพและปรับให้เหมาะสมที่สุด มีการตั้งค่าจำนวนมากที่จะนำไปใช้
ครั้งแรกเว้นแต่จะมีเหตุผลที่น่าสนใจที่จะทำอย่างอื่นตั้งค่าการวัดเป็น 'พิกเซล' ในเครื่องมือเวกเตอร์ของคุณ ในขณะที่ไม่สำคัญต่อ SVG (ซึ่งจะวัด ช่องมองภาพ และองค์ประกอบอย่างมีความสุขในระบบการวัดเกือบทุกระบบ) มันสมเหตุสมผลที่จะพัฒนารูปวาด SVG โดยใช้หน่วย CSS ทั่วไปแทนที่จะเป็นค่าเริ่มต้นการพิมพ์ของนิ้ว และมันก็ทำให้ง่ายต่อการเพิ่ม @Media แบบสอบถามและการแทรกแซงอื่น ๆ ในภายหลัง
อย่าทำให้พื้นที่ผ้าใบใหญ่กว่าที่จะต้องเป็น เช่นเดียวกับภาพบิตแมป 'พื้นที่ว่าง' ใด ๆ ใน SVG จะไม่ถูกใช้และถูกแทนที่ด้วยระยะขอบ CSS โปรดทราบว่าเครื่องมือเวกเตอร์จำนวนมากเช่นร่างจะ 'ครอบตัด' โดยอัตโนมัติพื้นที่ผ้าใบเพื่อเลือกองค์ประกอบ
ในเวลาเดียวกันอย่าครอบตัดพื้นที่ผ้าใบให้กับขอบขององค์ประกอบที่แน่นอน Antialiasing จะยังคงถูกนำไปใช้กับ SVG และการตัดมันใกล้เกินไปอาจยับยั้งการต้านการลดลง ให้ปล่อยให้ชัดเจนอย่างน้อย 2px ได้ทุกที่ที่ขอบของผืนผ้าใบใกล้เคียงกับองค์ประกอบ
การตอบสนองและประสิทธิภาพมีความสัมพันธ์อย่างใกล้ชิดดังนั้นตั้งค่าความแม่นยำทศนิยมให้ไม่เกินสองจุด SVG ไม่คิดในจำนวนเต็มดังนั้นจุดเวกเตอร์สามารถมีค่า 1.45882721px ความแม่นยำสุดขั้วนี้ไม่จำเป็นทั้งหมดและเพิ่มเฉพาะโค้ดขนาดใหญ่และขนาดไฟล์ดังนั้นจึงดีกว่าที่จะตัดทอนในตอนนี้
ในทำนองเดียวกันวาดรูปร่างเวกเตอร์โดยใช้คะแนนน้อยที่สุดเท่าที่จะทำได้ นักออกแบบใหม่จำนวนมากสมมติว่ามีคะแนนมากขึ้นเมื่อการย้อนกลับเป็นจริงจริง: มีเพียงไม่กี่จุดวางได้ดีให้การควบคุมองค์ประกอบที่มากขึ้นในขณะที่ลดขนาดไฟล์
หากคุณได้รับไฟล์เวกเตอร์ที่ไม่ปฏิบัติตามกฎนี้ไม่ต้องกังวล - ส่วนใหญ่ ศิลปะเวกเตอร์ แอปพลิเคชั่นมีตัวเลือก 'ง่าย' คุณสามารถใช้เพื่อลดจำนวนคะแนนในองค์ประกอบโดยไม่เปลี่ยนรูปร่าง หรือเพื่อการทำงานอย่างละเอียดฉันขอแนะนำปลั๊กอินเหมือนกราฟิกที่ชาญฉลาด 'Vectorscribe
แอพส่วนใหญ่เพิ่มเป็นกรรมสิทธิ์จำนวนมากรหัสที่ไม่จำเป็นในการส่งออก SVG ของพวกเขา รหัสที่จำเป็นเพียงอย่างเดียวเมื่อเริ่มต้นไฟล์ SVG ส่วนใหญ่ดังต่อไปนี้:
& lt; svg xmlns = "http://www.w3.org/2000/svg" viewbox = "0 0 500 500" & gt;
& lt; - รหัส SVG ที่นี่ - & gt;
& lt; / svg & gt;
เพื่อจุดประสงค์ของเราสิ่งที่สำคัญที่สุดคือการกำจัดของ ความกว้าง และ ความสูง คุณลักษณะที่แอปพลิเคชันส่วนใหญ่ประกอบด้วยโดยอัตโนมัติ สิ่งนี้ทำให้ SVG ตอบสนองอย่างสมบูรณ์ในเบราว์เซอร์ที่ทันสมัย
หากคุณกำลังประมวลผล SVG จำนวนมากหรือกำลังเร่งรีบคุณไม่จำเป็นต้องทำตามขั้นตอนนี้ด้วยมือ แต่คุณสามารถทำตามคำแนะนำที่วางไว้ในกฎทองคำที่สาม ...
เครื่องมือใดก็ตามที่คุณใช้ในการสร้างเนื้อหา SVG ของคุณมันยังคงคุ้มค่าที่จะประมวลผลเอาต์พุตผ่านเครื่องมือเช่น svgomg ซึ่งจะตัดแต่งรหัสอย่างชัดเจน โดยทั่วไปคุณสามารถประหยัดได้ประมาณ 20 ถึง 80 เปอร์เซ็นต์ในขนาดไฟล์ รหัสเดียวกันสามารถรวมอยู่ในเครื่อง เป็นงานอึกหรืองานฮึดฮัด .
กฎข้อที่ 2 กล่าวว่า SVGs ที่ปรับให้เหมาะสมอย่างถูกต้องตอบสนองอย่างสมบูรณ์ในเบราว์เซอร์ที่ทันสมัย นั่นเป็นเรื่องจริงถ้าเรานับ Microsoft Edge เป็นเบราว์เซอร์ที่ทันสมัย สำหรับ IE 9-11 เรามีปัญหาเล็กน้อยที่อยู่ หากเราใช้ SVG เป็นภาพ:
& lt; img src = "countdown.svg alt =" นับถอยหลัง "& gt;
เราสามารถบังคับ IE9-11 เพื่อแสดงภาพได้อย่างถูกต้องโดยใช้ตัวเลือกแอตทริบิวต์ CSS:
img [SRC $ = "SVG"] {ความกว้าง: 100%;}
ภาพ SVG ทำงานได้ดีในการผลิตทั่วไป แต่มีการโต้ตอบที่ จำกัด : เบราว์เซอร์ส่วนใหญ่จะเพิกเฉยต่อการโต้ตอบและภาพเคลื่อนไหวภายใน SVG ที่วางไว้บนหน้า
. นอกจากนี้ SVG Images เป็นคำขอ HTTP พิเศษสำหรับเบราว์เซอร์
สำหรับเหตุผลเหล่านี้และอื่น ๆ SVG ใช้อินไลน์มากขึ้น ในกรณีดังกล่าวรหัส SVG ต้องการการรักษาเพิ่มเติมเล็กน้อยสำหรับ IE:
& lt; ร่างกาย & gt;
...
& lt; SVG XMLNS = "http://www.w3.org/2000/svg" viewbox = "0 0 525 365" reserveaspectratio = "xmidymin slice" & gt;
นอกจากนี้ Reserveaspectratio คุณลักษณะ IE ต้องการคำแนะนำเพิ่มเติมเล็กน้อยเพื่อรักษาการปรับขนาดที่ถูกต้องของภาพ: ใช้ความกว้างของ SVG ( 365 ในกรณีนี้) แบ่งด้วยความสูง ( 525 ) และทวีคูณผลคูณ 100 เปอร์เซ็นต์ สิ่งนี้จะกลายเป็น ก้น ค่าสำหรับ SVG 'ป้อมปั่นไฟ' เปิดให้เพียงพอใน IE เพื่อแสดง SVG ในอัตราส่วนภาพที่ถูกต้อง:
& lt; ร่างกาย & gt;
...
& lt; svg xmlns = "http://www.w3.org/2000/svg" viewbox = "0 0 525 365"
reserveaspectratio = "xmidymin slice"
สไตล์ = "ความกว้าง: 100%; padding-bottom: 69.52%; ความสูง: 1px; overflow: มองเห็น" & gt;
โปรดทราบว่าเพื่อให้สิ่งต่าง ๆ รัดกุมและชัดเจนตัวอย่างโค้ดในส่วนที่เหลือของบทความนี้ไม่รวมการเปลี่ยนแปลงเหล่านี้ Amelia Bellamy-Royds ได้เขียน บทความที่ยอดเยี่ยมเกี่ยวกับ SVG SVG .
ขณะนี้ไม่มีมาตรฐาน CSS สำหรับการปรับขนาดข้อความให้กับภาชนะบรรจุ เป็นไปได้ที่จะปรับขนาดข้อความโดยใช้หน่วย VW แต่จะต้องใช้การแทรกแซงแบบสอบถามสื่ออย่างน้อยสองครั้งเพื่อ 'แคลมป์' ข้อความที่ข้อ จำกัด ของวิวพอร์ตบางอย่าง อย่างไรก็ตามข้อความ SVG จะปรับขนาดเป็นคอนเทนเนอร์โดยอัตโนมัติ:
& lt; หัว & gt;
& lt; svg xmlns = "http://www.w3.org/2000/svg" viewbox = "0 0 285 80" & gt;
& lt; ข้อความ x = "0" y = "66" & gt; kauai & lt; / text & gt;
& lt; / svg & gt;
& lt; / ส่วนหัว & gt;
CSS:
ข้อความ SVG ส่วนหัว {
ฟอนต์ - น้ำหนัก: 900; ขนาดตัวอักษร: 90px; เติม: สีน้ำเงิน;
}
การรักษา SVG Inline รักษาความสามารถในการเข้าถึงและค่า SEO และอนุญาตให้มีข้อความที่จะใช้แบบอักษรใด ๆ ที่ฝังอยู่ในหน้า ดู ที่นี่ สำหรับข้อมูลเพิ่มเติม.
ข้อยกเว้นหนึ่งประการสำหรับกฎข้อที่ 2 คือไอคอนและโลโก้ขนาดเล็กซึ่งควรรักษาไว้ ความกว้าง และ ความสูง คุณลักษณะถ้าคุณต้องการให้พวกเขาได้รับการปรับปรุงอย่างต่อเนื่อง:
& lt; a href = "http://codepen.io" & gt;
& lt; บทบาท SVG = "img" aria-label = "codepen" width = "50" ความสูง = "50" & gt;
& lt; ชื่อ & gt; codepen & lt; / ชื่อ & gt;
& lt; ใช้ xlink: href = "# codepen" / & gt;
& lt; / svg & gt;
& lt; / a & gt;
...
& lt; svg style = "display: none;" & gt;
& lt; symbol id = "codepen" viewbox = "0 0 50 50" & gt;
& lt; path d = "... " / & gt;
& lt; / สัญลักษณ์ & gt;
& lt; / svg & gt;
คุณสามารถดูตัวอย่างของเทคนิคนี้ในการดำเนินการ ที่นี่ .
หากเรามีขนาดไอคอน SVG ด้วย CSS เท่านั้นและแผ่นสไตล์ของไซต์ไม่โหลดไอคอนจะปรากฏขึ้นที่ขนาดเริ่มต้นขององค์ประกอบที่ถูกแทนที่: 300px x 150px ด้วยการรักษาความสูงและความกว้างเป็นแอ็ตทริบิวต์เราสามารถปรับขนาดให้เป็นขนาดหน้าสัมผัสที่เหมาะสมที่สุดโดยค่าเริ่มต้นและใช้ CSS ของเราเพื่อปรับปรุงวิธีที่พวกเขาจะนำเสนอ
โดยค่าเริ่มต้น SVG ปรับขนาดทุกอย่างด้วยวิวพอร์ตรวมถึงความหนาของจังหวะ โดยปกติแล้วสิ่งนี้จะใช้งานได้ดี แต่ในบางกรณี - ไดอะแกรมและจังหวะที่ใช้เป็นผลกระทบที่ด้านนอกของข้อความโดยเฉพาะ - คุณอาจต้องการที่จะทำให้ความหนาเดียวกันไม่ว่าขนาดของรูปวาดจะเป็นเท่าใด นี่คือโดเมนของที่รู้จักเล็กน้อย เวกเตอร์ผล คุณสมบัติซึ่งสามารถใช้เป็นแอตทริบิวต์การนำเสนอหรือใน CSS:
เส้นทาง {
เติม: #FFF; โรคหลอดเลือดสมอง: # 111;
จังหวะความกว้าง: 2;
เวกเตอร์เอฟเฟกต์: สเกลที่ไม่ใช่สเกล;
}
นักพัฒนาหลายคนคิดว่า SVG สามารถใช้เวกเตอร์ได้ แต่ JPEGS และ PNGS สามารถนำไปใช้กับการวาด SVG เท่านั้น และตราบใดที่คุณทำตามกฎของฉันจนถึงตอนนี้ภาพเหล่านั้นจะตอบสนองได้เมื่อคุณเพิ่มบิตแมปผ่านทาง
& lt; ภาพความกว้าง = "1024" = "768" XLINK: HREF = "Lake-Louise.jpg" x = "1300" Y = "150" บทบาท = "รูปภาพ" ชื่อ = "Crowsnest Pass" & GT; & lt; / image & gt;
การทำสิ่งต่าง ๆ ไป 'Squish' เป็นเพียงส่วนหนึ่งของการออกแบบที่ตอบสนองได้ สิ่งที่ RWD เกี่ยวกับความรู้สึกที่มีขนาดใหญ่ขึ้นของการออกแบบแบบปรับตัวคือการนำเสนอเนื้อหาที่เหมาะสมในขนาด Viewport ทั้งหมด
สิ่งนี้สามารถทำได้ในหลากหลายวิธี Responsivelogos.co.uk ให้ตัวอย่างที่ใช้ SVG Sprites แต่ฉันชอบที่จะรวมการสืบค้นสื่อเข้ากับ SVG เพื่อสร้างสิ่งที่ฉันเรียกว่า 'โมดูลการสร้างแบรนด์' วิธีการนี้ช่วยให้ฉันเพิ่มลบและแก้ไขการมองเห็นของส่วนประกอบ อ่านเพิ่มเติมเกี่ยวกับโมดูลการสร้างแบรนด์ Adaptive ในบทความของฉัน .
เทคนิคเดียวกันนี้สามารถใช้สำหรับไดอะแกรมภาพประกอบแผนที่และอื่น ๆ ในโมดูลที่ง่ายที่สุด CSS สามารถเขียนได้ภายใน SVG ทำให้สามารถใช้งานได้ทุกที่ตามที่ระบุไว้ในกฎก่อนหน้า
หลายคนไม่ทราบว่าการสืบค้นสื่อ CSS สามารถเขียนได้ภายใน SVG เอง:
& lt; svg xmlns = "http://www.w3.org/2000/svg" viewbox = "14 82 272 139" & gt;
& lt; defs & gt;
& lt; สไตล์ & gt;
SVG G {Transition: 1S; }
@Media All และ (สูงสุดความกว้าง: 90Rem) {
#drink, #coke {ความทึบ: 0; }
}
& lt; / style & gt;
& lt; / defs & gt;
& lt; g id = "coca-cola" & gt;
& lt; path d = "m109.6 ... & gt;
เป็นสิ่งสำคัญที่จะต้องทราบว่าแบบสอบถามสื่อสามารถ 'ดู' องค์ประกอบที่อยู่ภายใน: นั่นคือการวัดใด ๆ ที่เกี่ยวข้องกับองค์ประกอบของตัวเองไม่ใช่หน้า ข้อเสียที่อาจเกิดขึ้นหนึ่งข้อนี้คือพื้นที่ผ้าใบของ SVG จะยังคงเหมือนเดิมเทียบกับองค์ประกอบภายใน
สิ่งนี้อาจส่งผลให้เกิดองค์ประกอบขนาดเล็กมากที่ขนาดวิวสปอร์ตขนาดเล็กกรอบในพื้นที่ผ้าใบที่ค่อนข้างใหญ่ มีวิธีแก้ปัญหานี้หลายวิธีรวมถึง ปรับขนาดช่องมองภาพ และ ปรับขนาดองค์ประกอบเพื่อชดเชย .
ความสามารถในการปรับขนาดที่ไม่มีที่สิ้นสุดของ SVG เป็นสินทรัพย์ที่ยิ่งใหญ่ที่สุด แต่เป็นคุณสมบัติที่ยังคงค่อนข้างด้อยโอกาสโดยเบราว์เซอร์และโปรแกรมแก้ไขกราฟิกแบบเวกเตอร์ ด้วยการบูรณาการแนวทางเหล่านี้ลงในเวิร์กโฟลว์การผลิตของคุณและสื่อสารกับผู้อื่นในทีมของคุณคุณสามารถสร้าง SVG ที่ตอบสนองได้อย่างราบรื่นสำหรับเว็บทำให้เป็นส่วนหนึ่งของสินทรัพย์ที่คุณใช้ในการพัฒนาทุกวัน
บทความนี้ปรากฏในเดิม นิตยสารสุทธิ ปัญหา 283; ซื้อที่นี่ !
บทความที่เกี่ยวข้อง:
กริด CSS เหมาะสำหรับการสร้างเลย์เอาต์สองแกนของ�..
ภาพวาดเชิงลบหมายถึงการวาดภาพ พื้นที่เชิงลบ ที่กำหนดรูปร่างที..
Adobe InDesign เป็นโปรแกรมที่ยอดเยี่ยมในการใช้งานเมื่..
เมื่อออกแบบแบรนด์ไม่ว่าจะเป็นหนึ่งในที่จัดตั้งขึ้นหรือเริ่มต้นท�..