#svg #анимация #smil
На практике очень часто случается, что приложение SVG должно работать, фрагменты
кода, как и в других работающих приложениях точно такие же, но любые попытки найти
ошибку, заставить работать новое приложение не приносят результата.
Какие есть наиболее часто встречающиеся ошибки в написании кода SVG?
Какие есть практические способы диагностирования ошибок?
Как избежать появления ошибок, делающих приложение svg
неработоспособным?
.
Использовано изображение https://commons.wikimedia.org/wiki/File:Ghostscript_Tiger.svg
Ответы
Ответ 1 1. Создание SVG приложения
1.1 Создавать и производить отладку SVG необходимо в родной среде, то есть в файле
с расширением *.svg
Для примера возьмем очень короткий код и сохраним его в двух форматах:
Primer.html и Primer.svg
При запуске Primer.html ничего не произойдёт, прямоугольник
появится, но если вы будете его использовать дальше в приложении,
например клонировать с помощью команды , то будете долго
искать ошибку,- почему не появляются копии прямоугольников.
При запуске файла в формате Primer.svg парсер SVG выведет на
экран сообщение об ошибке:
Сразу видно, что не закрыт тег ……
1.2 Нужно ли указывать в шапке файла Namespace?
Современные браузеры последних версий лояльно относятся, если не указано Namespace
в шапке svg файла.
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
Сообщений об ошибке парсер HTML не выдаст.
Но, если запустить файл.svg с аналогичным кодом, то будет сообщение
об ошибке – отсутствии Namespace
Так указывать или не указывать в шапке SVG Namespace?
На положительное решение указывают факты, что возникают проблемы с использованием
svg файлов, у которых не указаны в шапке Namespace при добавлении последних вHTML с
помощью тегов и
Вывод – нужно обязательно добавлять в шапку svg файла Namespace.
Шаблон - заготовка файла SVG
2. Решение проблем с видимостью элементов внутри SVG полотна
2.1 Создание видимой границы svg полотна для визуального контроля нахождения svg
элементов.
Для этого создается рамка точно по границам видимого полотна svg c помощью простого
правила CSS в шапке SVG файла: style=”Border:1px solid red;”
Без красной границы полотна svg у нас бы вызвало удивление, почему ожидаемый круг
превратился в многоугольник.
Теперь видно, что круг вышел за границы svg полотна и его края были подрезаны.
Решение напрашивается само собой – уменьшить радиус окружности, как минимум до r=”100″
2.2 Позиционирование с помощью команды transform=”translate(X Y)”
Второй пример. Допустим имеем такой код:
Ширина квадрата должна быть width=”200″, но видимая часть намного тоньше, и сколько
мы не увеличивали бы ширину, квадрат останется узким, потому-что выходит за пределы
видимости.
Для возвращения элементов SVG в зону видимости существует команда transform=”translate(X
Y)”, которая двигает изображение по осям координат.
3. Решение проблем видимости элементов с помощью графического редактора
Этот способ применяется в сложных случаях, когда элементы svg находятся вне зоны
видимости и непонятно в какую сторону и насколько нужно перемещать их, чтобы они попали
в зону видимости.
Допустим нам нужно использовать следующий файл svg:
Ничего нет. Все попытки поиска красной фигуры методом научного тыка, применяя команду
перемещения изображения
и подбора координат, скорее всего кроме разочарования ни к чему не приведут. Спасёт
в этой ситуации любой векторный редактор.
3.1 Открываем файл в векторном редакторе и уменьшаем масштаб изображения до тех пор
пока не найдется красная фигура.
Серый прямоугольник это зона видимости нашего svg файла. Чтобы переместить красную
фигуру в зону видимости, нужно, как видно из рисунка, переместить её влево на 370px
и поднять вверх на 1170px. Это можно сделать и другим способом,- используя координаты
x-min, y-min у viewBox
Например: viewBox=”370 1170 300 300″
4. Валидатор SVG
Можно проверять на валидность файлы svg, находящиеся в сети, на локальном компьютере
или просто загрузить код в валидатор.
https://validator.w3.org
Комментариев нет:
Отправить комментарий