Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.10.2020, 18:13
Кандидат Javascript-наук
Отправить личное сообщение для Was-Ja Посмотреть профиль Найти все сообщения от Was-Ja
 
Регистрация: 20.09.2020
Сообщений: 130

Как и куда положить svg объект в JS, чтобы потом его где не попадя вставлять?
Добрый день,

имею веб интервейс на JS, в котором используется около сотни svg картинок. Каждая весит всреднем 1кб (есть и 300 байт, есть и 5кб). Хочу все воткнуть в внутрь самой страницы, чтоб все вместе грузилось кучей (суммарно JS, html, cs и все картинки весят около 200кб, фреймворки удалось не пользовать).

В каждый конкретный момент на экране у меня не более 10 картинок, которые я планировал включать или размещать из JS.

Вижу два решения.

1. Написать эти все картинки со своим уникальным id в <div>, этому div сделать hide, а потом зачитать каждую картинку в JS переменные через document.all('svgNr99').innerHTML а потом втыкать их туда, где мне надо.

2. Еще вариант запарсить их как-то, чтобы можно было в JS в виде присвоений это сделать (но тут читаемость упадет).

Скажите, пожалуйста, а есть ли какой-то более красивый способ, чтобы и картинки не грузить и все вместе внутрь одной страницы засунуть, и, если нет, скажите, пожалуйста, то какой из мной написанных вариантов правильнее с точки зрения минимальности ресурсов и полной совместимости со всеми браузерами?

Спасибо!

И еще вопрос. Часто у меня есть 4-5 svg картинок одного размера, которые я планировал поместить в одно и то же место и хотел их переключать по всяким внешним евентам. Пока планировал присвоением в innerHTML делать, но может есть какой-то правильный селектор, посоветуйте, пожалуйста!

Спасибо!

Последний раз редактировалось Was-Ja, 06.10.2020 в 18:16.
Ответить с цитированием
  #2 (permalink)  
Старый 06.10.2020, 18:33
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

JSON, а затем выбирайте из него либо по индексу в случае массива, либо по связям в случае объекта.
Ответить с цитированием
  #3 (permalink)  
Старый 08.10.2020, 20:19
Кандидат Javascript-наук
Отправить личное сообщение для Was-Ja Посмотреть профиль Найти все сообщения от Was-Ja
 
Регистрация: 20.09.2020
Сообщений: 130

Спасибо большое, laimas,

да, похоже это и читаемость сохранится, и удобно пользовать будет.
Ответить с цитированием
  #4 (permalink)  
Старый 08.10.2020, 21:32
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,707

Сообщение от Was-Ja
и полной совместимости со всеми браузерами?
Хороший вопрос. ИЕ8- тоже берем?
Ответить с цитированием
  #5 (permalink)  
Старый 08.10.2020, 21:49
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,707

Сообщение от Was-Ja
Часто у меня есть 4-5 svg картинок одного размера, которые я планировал поместить в одно и то же место и хотел их переключать по всяким внешним евентам. Пока планировал присвоением в innerHTML делать, но может есть какой-то правильный селектор, посоветуйте, пожалуйста!
Не совсем понятен вопрос.
Элементы SVG, когда они вставленны в DOM ведут себя как обычные элементы
document.getElementById('elem') вернет любой элемент, что HTML, что SVG, лишь бы id был подходящим.
Тоже и про querySelector.
Их так же можно вставлять appendChild и удалять removeChild или remove. Все операции с узлами и элементами к ним применимы.
Есть конечно особенности.
document.createElement - не создаст элемент SVG
Нужно
document.createElementNS( 'http://www.w3.org/2000/svg', tag ) // tag - тэг элемента 'line', например

И многие свойства не удастся поменять как свойства. Нужно через атрибуты
Например есть свойство x у line, но line.x = 100 - не пройдет. нужно line.setAttribute('x', 100)
Названия атрибутов - регистрозависимы. Нужно писать так, как указано в документации/

Последний раз редактировалось voraa, 08.10.2020 в 22:03.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как лучше подключать SVG объект Black_Star (X)HTML/CSS 0 02.12.2016 00:09
в getElement удаётся получить тэг через getElemetsByTagName Терехов Станислав Общие вопросы Javascript 19 19.06.2014 06:35
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Как обойти base href, чтобы ссылка на внешн. js была локальной? Andrej_2 Общие вопросы Javascript 2 18.11.2011 11:25