Html 我是否对 SVG 文件使用

我应该使用<img><object><embed>将SVG文件加载到页面中,方式类似于加载jpggifpng吗?

为确保其尽可能好地工作,每个组件的代码是什么?(I'm seeing references to including the mimetype or pointing to fallback SVG renderers in my research and not seeing a good state of the art reference).

假设我正在用Modernizr判断SVG支持,而对于不支持SVG的浏览器,我正在后退(可能用一个普通的<img>标记替换).

推荐答案

我可以推荐SVG入门(由W3C出版),它涵盖了这个主题:http://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html#SVG_in_HTML

如果使用<object>,则可免费获得光栅回退*:

<object data="your.svg" type="image/svg+xml">
  <img src="yourfallback.jpg" />
</object>

*)好吧,不是完全免费的,因为有些浏览器下载了这两种资源,请参阅下面拉里的建议,了解如何避免这种情况.

2014 update:

  • 如果您需要非交互式SVG,请使用带有脚本回退的<img> 至PNG版本(适用于较旧的IE和Android<;3).一件干净简单的衣服 要做到这一点,请执行以下操作:

    <img src="your.svg" onerror="this.src='your.png'">

    这将表现得很像GIF图像,如果浏览器支持声明性动画(SMIL),则这些动画将播放.

  • 如果需要交互式svg,请使用<iframe><object>.

  • 如果您需要为较旧的浏览器提供使用svg插件的能力,请使用<embed>.

  • 对于css background-image中的svg和类似属性,modernizr是切换到备用图像的一种 Select ,另一种 Select 是根据多个背景自动切换:

    div {
        background-image: url(fallback.png);
        background-image: url(your.svg), none;
    }
    

    Note: the multiple backgrounds strategy doesn't work on Android 2.3 because it supports multiple backgrounds but not svg.

svg后备方案的另一个好读物是this blogpost.

Html相关问答推荐

我如何 Select 外部html文件元素作为选项,并显示在一个div与jQuery?

由于列中的图像,它们不会随FlexBox中的窗口大小进行调整

带有多种 colored颜色 的HTML按钮

如何使用html和css关键帧创建动画

防止position:relative的child在出界时收缩

如何从elementor中的滑块中获取文本?

高度:适合-内容不拉伸以适合内部长度

如果您将带有 html 标签的字符串数据(name : test) 放在 `

是否可以制作响应式 CSS 剪辑路径?

Github上部署需要花费几小时时间:等待github pages部署批准

如何在 Flex 对齐内容框下显示隐藏按钮和文本

使用 calc 函数设置字体大小时 Flexbox 项目重叠

您如何动态更改 Vue 中更高级别的标签的 CSS

屏幕缩小时背景图像裁剪高度

如何使我的设计适合与我的框架尺寸不同的视口?

如何在 svelte 中对静态 html 文件使用href=

如何使我的下拉菜单响应?

如何通过可见文本使用 Selenium 定位元素

防止 HTML 表格在 Quarto 中使用全页宽度

shinydashboard 标题中的位置标题