动态注入SVG过滤器并应用于HTML

 tantyana428_673 发布于 2023-02-13 14:50

我正在玩将SVG过滤器应用于HTML.如果所有内容都是硬编码的,这可以工作,虽然我需要-webkit-filterchrome 的CSS id.当尝试使用javascript动态创建带有过滤器的SVG元素时,它会失败.有谁能解释为什么?

这是我到目前为止所拥有的: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);

...

HELLO WORLD TWO

html语法看起来完全相同.我猜测要么document.createElement不创建svg功能标签,要么过滤器ID只能在文档加载时读取一次.但是,我可以动态更改stdDeviation静态示例中的值.

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 );
    

    2023-02-13 14:51 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有