#html #grid #svg #draw
#HTML #сетка #svg #нарисовать
Вопрос:
Мне нужно нарисовать сетку размером 1 пиксель (интервал 10 пикселей), используя SVG canvas, встроенный в веб-страницу. Есть много тегов SVG на выбор, и я надеялся, что кто-нибудь сможет подсказать, какие теги лучше всего подойдут для этой работы и создадут наименьший объем кода.
Например, есть ли более короткая альтернатива построению пути с использованием тега <path>? Возможно, определив квадрат 10px x 10px, а затем каким-то образом повторив его по всему холсту.
В любом случае, пожалуйста, открыт для предложений.
Спасибо
Ответ №1:
Вы можете создать <pattern>
(по сути, плитку в вашем вопросе) и заполнить ею любую фигуру.
Вот пример этой техники.
Комментарии:
1. Неплохо. Для меня это выглядит как решение. Запустим несколько тестов.
2. Есть новые более быстрые методы? теперь, когда этому уже несколько лет!
3. Можно использовать css-фон (которым может быть svg-файл), предполагая, что вы хотите заполнить svg-холст, а не какую-то произвольную форму. AFAIK, ни один браузер пока не реализует элемент <hatch> из svg2, но он также должен уметь это делать. Смотрите svgwg.org/svg2-draft/pservers.html#Hatches .
Ответ №2:
Я не эксперт (день 3!), Но я знаю, что Google использует прямоугольники для этого на диаграммах Google, ширина или высота которых равны 1. Ничего особенного, просто напишите сетку с множеством подобных вещей:
<rect x="86" y="61" width="1" height="198" stroke="none" stroke-width="0" fill-opacity="1" stroke-opacity="1" stroke-dasharray="0" fill="#cccccc"></rect>
Зачем они это делают? Не знаю. Их графика хороша, так что, по-видимому, кто-то подумал об этом. Я лично склоняюсь к тому, чтобы делать это с контурами, используя ‘h’ и ‘v’ для относительных горизонтальных и вертикальных линий. Это более компактно, но результат может быть не таким хорошим.
Комментарии:
1. Обводка фигур может быть дорогостоящей, поэтому я предполагаю, что именно поэтому используются прямоугольники без обводки (вместо, например, линий). Прямоугольники также, как правило, оптимизируются зрителями.