2013-06-13 27 views
23

Tôi có một svg <rect> nằm trong một nhóm <g> (nhóm) và tôi muốn chia tỷ lệ phần trăm và sau đó dịch theo tỷ lệ phần trăm của chế độ xem. Hầu hết mọi thứ trong svg đều cho phép đặc điểm kỹ thuật của các đơn vị thông qua một số tùy chọn vô lý; ví dụ. px, em,%, ex, pt, pc, ... Tuy nhiên có vẻ như số được chỉ định trong bản dịch chỉ là pixel.Cách dịch nhóm SVG theo tỷ lệ phần trăm của chế độ xem

Thing là nếu tôi phải quay lại và tính toán lại giá trị pixel cho bản dịch, thì svg của tôi sẽ trở nên phụ thuộc vào độ phân giải. Sau đó, tôi, bạn và mọi người sẽ bị hút vào một nghịch lý. Bạn có thể thấy tại sao tôi hơi lo lắng.

<svg> 
    <g transform="scale(1, 1) translate(0, 0)"> 
    <rect x="45%" y="25%" height="50%" width="10%"/> 
    </g> 
</svg> 

http://jsbin.com/ubeqot/1/edit

+8

Công việc tốt nêu rõ trọng lực của tình huống. – Seth

Trả lời

22

Stick yếu tố <g> trong một yếu tố nội tại <svg> và thêm x và y thuộc tính với giá trị phần trăm đến các yếu tố bên trong <svg> để dịch nó.

<svg> 
    <svg x="10%" y="20%"> 
    <g transform="scale(1, 1)"> 
     <rect x="45%" y="25%" height="50%" width="10%"/> 
    </g> 
    </svg> 
</svg> 

Nếu bạn muốn quy mô áp dụng đầu tiên bạn sẽ đặt các yếu tố bên trong <svg><g> để thay thế.

+0

Tôi có một 'vòng tròn' bên trong phần tử' g' và vòng tròn sẽ không được căn giữa. bạn có biết tại sao? nó chỉ hiển thị "cắt" ở góc trên cùng bên trái. [Trang thử nghiệm] (http://jsbin.com/lurepim/edit?html,css,output) – vsync

+0

Đặt câu hỏi mới với đánh dấu hoàn chỉnh của bạn. –

+0

Ở đây bạn đi sếp - http://stackoverflow.com/q/33135429/104380 – vsync

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