Динамическое введение фильтров SVG и применение к HTML



Я играю с применением фильтров SVG к HTML. Это работает, если все жестко закодировано, хотя мне нужен идентификатор CSS -webkit-filter для chrome. При попытке создать элемент SVG с фильтром динамически с помощью javascript это не удается. Кто-нибудь может объяснить почему?



Вот что у меня есть до сих пор: http://jsfiddle.net/H3UX8/1/



Первая пара изображений и текста размыта в chrome и firefox, а вторая - нет.



Выписка не содержит работа:



.dynamic div {
-webkit-filter: url('#f2');
filter: url('#f2');
}

...

var svg = document.createElement("svg");
var filter = document.createElement("filter");
filter.setAttribute("id", "f2");
var blur = document.createElementNS("http://www.w3.org/2000/svg", "feGaussianBlur");
blur.setAttribute("stdDeviation", "5");
filter.appendChild(blur);
svg.appendChild(filter);
document.body.appendChild(svg);

...

<div class="dynamic">
<div><img src="http://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png" /></div>
<div>HELLO WORLD TWO</div>
</div>


Синтаксис html выглядит идентично. Я предполагаю, что либо document.createElement не создает теги с поддержкой svg, либо идентификаторы фильтров считываются только один раз при загрузке документа. Я могу , однако, динамически изменять значение stdDeviation в статическом примере.

541   1  

1 ответ:

Попробуйте это:

var NS = "http://www.w3.org/2000/svg";
var svg = document.createElementNS( NS, "svg" );

var filter = document.createElementNS( NS, "filter" );
filter.setAttribute( "id", "f2" );

var blur = document.createElementNS( NS, "feGaussianBlur" );
blur.setAttribute( "stdDeviation", "5" );

filter.appendChild( blur );
svg.appendChild( filter );
document.body.appendChild( svg );

Comments

    Ничего не найдено.