2012-02-21 56 views
24

Tôi muốn nhúng một số SVG vào trang HTML theo cách được tự động thay đổi kích thước (sử dụng SVG, CSS hoặc JS) khi trang được thay đổi kích thước, trong khi vẫn giữ nguyên tỷ lệ khung hình gốc.Tự động tính toán SVG được nhúng trong HTML khi đổi kích thước cửa sổ

Ví dụ, sử dụng một ví dụ từ W3Schools:

<svg xmlns="http://www.w3.org/2000/svg" version="1.1"> 
    <circle cx="100" cy="50" r="40" stroke="black" 
    stroke-width="2" fill="red"/> 
</svg> 

Có thể thiết lập chiều rộng SVG = 5% chiều rộng cửa sổ, và đã chiều cao quy mô tương ứng?

Tôi đã thử một vài thứ bao gồm preserveAspectRatio="xMinYMin meet" và đặt kích thước thành 100% trong một vùng chứa <div> nhưng chưa hoạt động.

Mọi đề xuất?

Trả lời

25

Bạn cần một -attribute viewBox trên phần tử gốc SVG của bạn, mà sẽ xác định kích thước tổng thể của SVG-image:

<svg version="1.1" viewBox="0 0 300 185"> 

Bây giờ bạn có thể thiết lập chiều rộng hoặc chiều cao của hình ảnh thông qua CSS và nó sẽ mở rộng hoàn hảo.

+0

Điều đó đã xảy ra. Bạn có biết hai tham số cuối cùng cho viewBox được xử lý như thế nào? Tăng chúng dường như * giảm * kích thước của hình ảnh. –

+3

Những con số này là chiều rộng và chiều cao được sử dụng của hình ảnh của bạn. Trong ví dụ của bạn từ trên nó sẽ vòng tròn + bán kính: cx + r = width (140) và cy + r = height (90). Lựa chọn tốt nhất của bạn là lưu hình ảnh thông qua phần mềm đồ họa như Inkscape, tính toán kích thước tổng thể và ghi thuộc tính viewBox vào tệp. Nếu sử dụng Inkscape, hãy đảm bảo bạn chọn "SVG Inkscape tối ưu hóa", điều này sẽ dẫn đến mã nguồn XML có kích thước nhỏ hơn và dễ hiểu hơn. – feeela

+0

Câu trả lời này vừa lưu lại ngày của tôi! – qed

Các vấn đề liên quan