Как с помощью js ( jQuery) связать input и атрибут svg-фильтра?

jsfiddle.net/miminari13/XT9eN/8

Дано:
1) картинка, на которую накладывается два фильтра svg - яркость и контраст.
2) инпуты, с помощью ползунков которых можно менять непосредственно атрибуты svg (slope для яркости; slope и intercept для контраста) и, следовательно, настраивать яркость и контрастность картинки.

Вопрос: как связать инпуты и атрибуты svg-фильтров?
  • Вопрос задан
  • 2965 просмотров
Решения вопроса 1
bubuq
@bubuq
Во-первых, ползунок должен быть div.

Во-вторых, добавить стиль от jQuery UI.

В-третьих, придётся адресоваться к элементам SVG по id, так как SVG DOM отличается от HTML DOM и jQuery его в общем, не поддерживает.

А так, вполне будет работать что-то вроде
$( "#slider" ).slider({min:0, max:1000})
$( "#slider" ).on('slidechange', function(e) {
  var v = $('#slid').slider('value')
  $('#cntred').attr('slope', v/100)
})


если разметить SVG объект
<feFuncR id='cntred' type="linear" slope="1.75" intercept="-0.175"/>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Serge78rus
Как с помощью jQuery добраться до атрибутов элементов SVG: svgmnemo.ru/pub/svgdyn.html
Ответ написан
miminari13
@miminari13 Автор вопроса
bubuq, спасибо, Ваш вариант работает отлично. единственное, в FF фильтр просто закрывает картинку и делает ее прозрачной. slope меняется слайдером, но картинки нет.

upd. если картинку в сам svg поместить, то с ff проблема решается.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы