Polymer.js是否支持内部SVG元素?

 ygluo 发布于 2023-01-18 10:53

我看到使用自定义元素(如内SVG元素的例子在这里),但到目前为止,我一直无法弄清楚如何定义自定义元素去里面的SVG元素.

我尝试了以下操作,虽然模板内容确实出现在Web检查器中,但圆圈看不到.


  



    

是否有一个技巧让自定义元素在SVG元素中工作?

2 个回答
  • Polymer FAQ显示模板可以在<svg>元素中使用:

    <svg>
        <template repeat="{{l in lights}}">
            <circle cx="100" cy="{{l.cy}}" r="50" fill="{{l.color}}"/>
        </template>
    </svg>
    

    https://www.polymer-project.org/0.5/resources/faq.html#templateinsvg

    确实这适用于Polymer 0.5! 但它并没有在聚合物0.9或1.0的工作.

    在更改的Polymer 1.0语法中,它看起来像这样:

    <svg>
        <template is="dom-repeat" items="{{lights}}">
            <circle cx="100" cy$="{{item.cy}}" r="50" fill$="{{item.color}}"/>
        </template>
    </svg>
    

    该元素未呈现,浏览器控制台显示:

    TypeError: node is undefined   in polymer.html:28
    

    该错误指的是Polymer的_parseNodeAnnotations()功能.

    FAQ示例在0.5中工作显然表明SVG原则上不应该在Web组件或Polymer中工作.这让我希望Polymer团队能尽快解决这个问题.

    2023-01-18 10:55 回答
  • 不幸的是,你不能这样做.SVG命名空间中的元素需要在其中<svg>.创建<my-element>创建继承自的自定义元素HTMLElement.

    但是,您可以<svg>在自定义元素中包含:http://jsbin.com/EXOWUFu/2/edit

    另外,不要忘记自定义元素不能自动关闭.所以在你的例子中,<my-element />- > <my-element></<my-element>.这是因为HTML规范只允许一些元素自动关闭.

    更新

    事实证明,您可以在<svg>使用中嵌入自定义元素<foreignObject>.

    演示:http://jsbin.com/hareyowi/1/edit

    <foreignObject  >
      <x-foo></x-foo>
    </foreignObject>
    

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