Я хотел бы иметь возможность установить ширину штриха на элементе SVG так, чтобы она была «с учетом пикселей», то есть всегда шириной 1 пиксель, независимо от применяемых текущих преобразований масштабирования. Я понимаю, что это может быть невозможно, поскольку весь смысл SVG - быть независимым от пикселей.
Контекст следующий:
У меня есть элемент SVG с установленными атрибутами viewBox и preserveAspectRatio. Это выглядит примерно так
<svg version="1.1" baseProfile="full"
viewBox="-100 -100 200 200" preserveAspectRatio="xMidYMid meet"
xmlns="http://www.w3.org/2000/svg" >
</svg>
Это означает, что когда я масштабирую этот элемент, фактические формы внутри него соответственно масштабируются (пока все хорошо).
Как видите, я настроил viewBox так, чтобы начало координат было в центре. Я хотел бы нарисовать оси x и y внутри этого элемента, что я делаю следующим образом:
<line x1="-1000" x2="1000" y1="0" y2="0" />
Опять же, это нормально работает. Однако в идеале эта ось всегда должна иметь ширину всего 1 пиксель. Меня не интересует, что оси становятся толще при масштабировании родительского элемента svg.
Так я облажался?
источник
vector-effect
свойство. Можно ли добиться того же эффекта, что иvector-effect: non-scaling-stroke
в IE11?fill
наnone
и наоборотstroke
), вычисляет и устанавливает соответствующие преобразования (одно для заливки и одно для обводки). Конечно, это будет немного беспорядочно, но это так - вы также можете попросить Microsoft добавить для него поддержку. В любом случае я считаю, что ваш вопрос заслуживает отдельного рассмотрения.