2013-03-23 35 views
6

Khi sử dụng vector hiệu lực = "non-rộng-đột quỵ" bên trong một mô hình, tôi không nhận được kết quả mong đợi trong Firefox hoặc Chrome, mặc dù Opera việc như mong đợi ...SVG: mô hình bên trong không mở rộng quy mô không hoạt động?

Ví dụ:

<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="none" height="100px" width="1000px"> 
<defs> 
    <pattern id="ticks" viewBox="0 0 12 4" preserveAspectRatio="none" height="100%" width="10%"> 
     <path stroke="#000" vector-effect="non-scaling-stroke" d="M 0 0 L 0 4 M 1 0 L 1 1 M 2 0 L 2 1 M 3 0 L 3 2 M 4 0 L 4 1 M 5 0 L 5 1 M 6 0 L 6 3 M 7 0 L 7 1 M 8 0 L 8 1 M 9 0 L 9 2 M 10 0 L 10 1 M 11 0 L 11 1" /> 
    </pattern> 
</defs> 
<rect width="100%" height="100%" fill="url(#ticks)" /> 

Screenshot of results in Firefox, Chrome and Opera

tôi có làm điều gì sai, hay đây là một lỗi trong WebKit và Gecko? Nếu nó là một lỗi, có ai biết về cách giải quyết không?

Cảm ơn bạn đã được trợ giúp.

+1

Bạn đã xác định chiều rộng đột quỵ chưa? – galdre

+0

Xem thêm http://stackoverflow.com/questions/10473328/how-to-draw-non-scalable-circle-in-svg-with-javascript/. Vì các mẫu không có trong SVG Tiny 1.2 nên không xác định được cách thức không mở rộng quy mô nên hoạt động ở đó và tôi không nghĩ rằng SVG2 đã xác định được điều đó. –

Trả lời

0

Tôi không có Opera để kiểm tra giải pháp này, nhưng dường như có kết quả mong muốn trên Chrome và Firefox.

@galdre là đúng. Bạn cần xác định stroke-width (giá trị là 0.1 được chỉ định bên dưới). Ngoài ra, bạn đang thiếu một đóng </svg>:

<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="none" height="100px" width="1000px"> 
    <defs> 
    <pattern id="ticks" viewBox="0 0 12 4" preserveAspectRatio="none" height="100%" width="10%"> 
     <path stroke-width="0.1" stroke="#000" vector-effect="non-scaling-stroke" d="M 0 0 L 0 4 M 1 0 L 1 1 M 2 0 L 2 1 M 3 0 L 3 2 M 4 0 L 4 1 M 5 0 L 5 1 M 6 0 L 6 3 M 7 0 L 7 1 M 8 0 L 8 1 M 9 0 L 9 2 M 10 0 L 10 1 M 11 0 L 11 1" /> 
    </pattern> 
    </defs> 
    <rect width="100%" height="100%" fill="url(#ticks)" /> 
</svg> 
+0

Chiều rộng nét vẽ phải là 1px, là giá trị mặc định và do đó dư thừa. –

+0

Tôi hiểu. Vâng, đoạn mã trên dường như làm những gì bạn đang tìm kiếm ([screenshot] (http://i.imgur.com/Wzsw88A.png)). Tôi không chắc chắn nếu hành vi này là kết quả của một lỗi hay không. – lando

+1

Khá đúng ... Ở trên chỉ là một ví dụ làm cho thất bại rõ ràng. Nếu bạn thay đổi đột quỵ thành 0.1, bạn chỉ làm cho sự thất bại ít rõ ràng hơn. Ngay cả với chiều rộng đột quỵ là 0,1, bạn vẫn có thể thấy rằng đột quỵ đang được thay đổi kích thước nếu bạn thay đổi chiều rộng thành 3000px (đường quá dày) hoặc 300px (đường quá mỏng). –

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