2015-02-13 2 views
2

Мне было поручено создать интерактивную визуальную версию HTML-формы.Лучший способ создания интерактивной формы HTML SVG

Работники оценивают свое мастерство между 1 (плохо) до 5 (отлично) в различных областях:

Client Management: 

[x] 1 (Poor) 
[ ] 2 (OK) 
[ ] 3 (Good) 
[ ] 4 (Great) 
[ ] 5 (Excellent) 

Вместо того, чтобы просто использовать радио-кнопки, однако, идея заключается в том, что они визуализируются в виде полярная сетка.

Каждый кусочек пирога представляет собой область возможностей (например, для работы с клиентами), и каждый сегмент среза указывает на его владение. This is a 3D representation.

Пользователь может выбрать один сегмент на каждую область способности, эквивалентную 1-5, а затем отправить его так, как если бы это была форма. Я начал с создания SVG в Illustrator и добавления классов для управления им с помощью JS/jQuery. Затем я использовал эти классы, чтобы заполнить набор скрытых переключателей, чтобы у меня был способ отправить данные.

It works.

Однако там должен быть менее DIY способом создания и взаимодействия с SVG, что было бы лучше для ремонтопригодности. Например, если бы я хотел добавить новый сегмент, мне пришлось бы повторно создать графику в Adobe Illustrator и добавить новый набор классов в файл (а также снова добавить старые в новый вывод).

Каков наилучший способ решения такого рода интерактивных SVG с точки зрения обслуживания?

+1

Создайте SVG, используя DOM. –

ответ

0

SVG не является технологией формы, поэтому вы не найдете ничего идеального. И хотя я рассматриваю только что-нибудь с d3, чтобы быть DIY, это очень приличный случай использования (see examples gallery).

Возможно, вы можете сделать это примерно в 50 строках кода d3 или около того. Может, меньше.

Как следует из комментария Роберта, это технически создает svg, используя DOM, однако использование d3 - это гораздо лучший способ сделать это, чем делать это вручную.

Отмечу, что d3 - это svg, почти как jquery, для html (его действительно полезно с html, но использование используется чаще с svg). Подобно jQuery, вы можете начать использовать d3 почти сразу, но чем больше времени вы инвестируете в его изучение и «получение», тем более потрясающие выгоды вы будете пожинать.

+0

Спасибо! d3 выглядит великолепно, но все же актуально, если я не имею дело с «данными» или графиками? То, что я создаю * выглядит * как диаграмма, но не содержит переменной информации. Я бы, по сути, рисовал пурпурные кнопки, и я не уверен, что библиотека графиков переполнена. – jfree

+0

Но вы имеете дело с данными! Ширина и высота каждого слайда зависит от того, сколько слоев вы хотите и сколько уровней вы хотите для каждого. Данные - это количество уровней, которые вы хотите, а также описание и цвета для каждого. –

+0

Спасибо, что принял мой ответ. Если вы в конечном итоге реализуете его с помощью d3, вы можете рассмотреть возможность публикации на [codereview stackexchange] (http://codereview.stackexchange.com/) для обзора специфики. –

0

Существует несколько библиотек JavaScript для создания, управления и анимации SVG. Наиболее известными являются RaphaëlJS (http://raphaeljs.com) и Snap.svg (http://snapsvg.io). RaphaëlJS работает даже в старых браузерах, таких как IE6, с помощью резервного копирования VML. Snap.svg разработан специально для современных браузеров.

0

Применение JavaScript к SVG ничем не отличается от применения его к HTML. SVG - это изображение на основе кода, нарисованное при визуализации браузером на основе кода файла SVG. Вы можете включить файл непосредственно на страницу или вставить его. Затем вам просто нужно применить JavaScript к элементу SVG, как к элементу в HTML.

Сначала перейдите в SVG-файл (при условии, что он отделен от страницы) и добавьте любой идентификатор, который вы хотите использовать (class или id).

Во-вторых, напишите свой JavaScript, как будто это не что иное, как другой элемент HTML, который вы хотите манипулировать. Итак, если вы хотите, чтобы что-то произошло, когда мышь нависает над секцией, тогда напишите, что это было, если вы хотите, чтобы это произошло с кнопкой и заменило кнопку для целевого элемента SVG.

Редактировать: Как видно из комментариев к моей реакции, даже через встраивание SVG, то DOM будет рассматривать его отдельно, поэтому вы должны включать в себя код SVG непосредственно из этого.

Адрес JSFiddle, в котором показано, как добавить код прямо к странице. Если вы накинете на рот, он станет красным.

Если вы добавите SVG на страницу как img, она будет отображаться как изображение, и JavaScript не будет работать. Вот это JSFiddle, чтобы это продемонстрировать.

Однако, если вы используете object или embed, JavaScript все еще может работать на нем. Ниже приведен рабочий пример пяти основных методов добавления SVG: http://www.schepers.cc/svg/blendups/embedding.html

Что касается легкой модификации SVG, то это либо через код (в текстовом редакторе), либо графический редактор (например, Illustrator). До тех пор, пока у вас есть исходный файл, не нужно его редактировать, но нет «простого» способа сделать это. Одна из приятных особенностей SVG заключается в том, что это полностью программируемый образ. Конечно, приятно иметь возможность проектировать его визуально, это то, что веб-дизайнеры делают для веб-сайтов, но если вы хотите «действительно» работать с ним, вам нужно работать с кодом.

Прошу прощения, если это не тот ответ, который вы искали, но я надеюсь, что это поможет очистить все.

+0

Я думаю, что одна небольшая ошибка заключается в том, что, хотя JavaScript может получить доступ к элементам SVG, он рассматривает SVG как отдельный «документ» (например, iframe без безопасности). Это просто значит, а не document.getElementById, вам может понадобиться 'document.getElementById ('mySvg'). GetElementById (...') Без этого люди не могли бы легко вставлять один и тот же SVG дважды. – Katana314

+0

Это то, что я [http://files.jayfreestone.com/overflow-chart/). Я включил (включил) его в PHP, и я просто манипулирую им с помощью jQuery/JS, добавив к нему классы. – jfree

+0

@jfree Я понимаю, откуда вы пришли, но нет простого решения. SVG - это SVG, что приятно, что если у вас есть файл SVG, у вас есть весь код уже там. не нужно воссоздавать изображение, просто откройте его и отредактируйте. –

Смежные вопросы