ขณะนี้กำลังสร้างแอปพลิเคชัน SVG บนเบราว์เซอร์ ภายในแอพนี้ผู้ใช้สามารถกำหนดรูปแบบและกำหนดตำแหน่งรูปร่างต่าง ๆ รวมถึงรูปสี่เหลี่ยมผืนผ้า
เมื่อฉันนำ a ไปใช้stroke-width
กับrect
องค์ประกอบการพูดของSVG 1px
จังหวะจะถูกนำไปใช้กับrect
ออฟเซ็ตและสิ่งที่ใส่เข้าไปในเบราว์เซอร์ต่างๆ นี่เป็นการพิสูจน์ว่าลำบากโดยเฉพาะอย่างยิ่งเมื่อฉันพยายามคำนวณความกว้างด้านนอกและตำแหน่งที่มองเห็นของรูปสี่เหลี่ยมผืนผ้าและจัดวางตำแหน่งถัดจากองค์ประกอบอื่น ๆ
ตัวอย่างเช่น:
- Firefox เพิ่ม 1px inset (ล่างและซ้าย) และ 1px offset (บนและขวา)
- Chrome เพิ่มสิ่งที่ใส่ 1px (บนและซ้าย) และ 1px ชดเชย (ด้านล่างและขวา)
ทางออกเดียวของฉันคือการวาดเส้นขอบที่แท้จริงด้วยตนเอง (อาจใช้path
เครื่องมือ) และวางตำแหน่งเส้นขอบด้านหลังองค์ประกอบที่ลูบ แต่วิธีนี้เป็นวิธีแก้ปัญหาที่ไม่พึงประสงค์และฉันไม่ต้องการลงไปที่ถนนเส้นนี้ถ้าเป็นไปได้
ดังนั้นคำถามของฉันคือคุณสามารถควบคุมวิธีการstroke-width
วาดSVG บนองค์ประกอบได้หรือไม่
paint-order
พารามิเตอร์ที่คุณสามารถระบุได้ว่าการเติมควรจะแสดงอยู่ด้านบนของจังหวะดังนั้นคุณจะได้รับ "การจัดตำแหน่งภายนอก" ดูjsfiddle.net/hne0kyLg/1