在 HTML5 的 <figure> 元素中使用 <picture>?

Posted

技术标签:

【中文标题】在 HTML5 的 <figure> 元素中使用 <picture>?【英文标题】:Use of <picture> inside <figure> element in HTML5? 【发布时间】:2012-10-05 16:00:32 【问题描述】:

html5 中,我们目前有一个 &lt;figure&gt; 元素,定义如下 (W3C reference)

图形元素表示一个内容单元,可以选择带有标题,它是自包含的,通常作为单个单元从文档的主要流程中引用,并且可以从文档的主要流程中移开不影响文档的含义。

最近Responsive Images Community group提出了一个新元素&lt;picture&gt;,它被定义为in the reference这样

用于显示来自一系列来源的图像的图片元素(参见 srcset 属性)。用户代理显示哪个图像取决于获取源图像的​​算法。

由于这两个描述似乎并不矛盾(并且图片上的文档还处于 draft 状态),所以我的问题是:是否有可能(技术上和语义上)有一个嵌套的 picture 在里面一个figure元素,这样吗?

<figure>
   <picture>
      <source ...>
      <source ...>
      <source ...>
      <img..>
   </picture>

   <figcaption>...</figcaption>
</figure>

我在规范中没有找到关于它的参考资料。 :\

注意:我知道目前没有浏览器实现这个元素,我只是用jQuery picture做一些实验

谢谢。

【问题讨论】:

这只是一个建议。在 HTML5 工作组(无论它是哪一个)批准包含它之前,您不能期望在任何规范中找到它。或许在社区组的邮件列表或 HTML5 邮件列表中询问这个问题的更好地方。 这还能用吗?从来不知道&lt;picture&gt;标签 @FabrizioCalderan 谢谢,学到了新东西 ;) @FabrizioCalderan - 请考虑重新选择所选答案,因为当前已弃用且不正确 【参考方案1】:

你不会找到它,因为它实际上还不是官方的,但我会假设答案是是的,这很好。

目前,您可以执行以下操作:

<figure>
  <img src="image.jpg" >
  <figcaption>A Caption</figcaption>
</figure>

&lt;picture&gt; 只是一种为响应式网站提供多个 src'd &lt;img&gt; 的方法,因此从技术上讲,如果它被批准,您的示例似乎是有效的。

【讨论】:

【参考方案2】:

这里是 Mat Marquis — 我是 picture 规范 (http://picture.responsiveimages.org) 的编辑之一。

简短的回答是“是”,长的回答是“肯定”。语义正确(figure 可以包含图像、图表、表格、代码 sn-ps 等),并且 100% 有效。

【讨论】:

谢谢@wilto。我看到响应式图像社区组网站上有一个很好的例子,将&lt;figure&gt;&lt;picture&gt; 一起使用:picture.responsiveimages.org/#example-6 你应该看看@fabrizio-calderan。【参考方案3】:

是的,您在&lt;figure&gt; 标签中包含&lt;picture&gt; 是正确的。我将在其中一门课程中通过 Google 的认可来证实这一点。

视频中显示了这一点

https://youtu.be/StKZMBURZpk?t=29

【讨论】:

【参考方案4】:

图是block-level element。 图片是inline-level element。

块级元素可以包含内联级元素。 根据this和之前的答案,将picture放在figure标签内是正确的。

【讨论】:

【参考方案5】:

是的,我们可以。现在它是官方的,我们也可以将它们用作响应式图像。

&lt;figure&gt; 标签指定自包含内容 Ex-Images。 &lt;figure&gt; 元素的内容独立于主流。如果我们删除它,它应该不会影响文档的流动。

&lt;figcaption&gt; 元素用于为&lt;figure&gt; 元素添加标题。

<figure>
   <figcaption>Caption</figcaption>
</figure>

&lt;picture&gt; 标签在指定图像资源方面提供了更大的灵活性。我们可以使用多张图像来填充最适合浏览器视口的图像 A/Q,而不是只有一张图像。

<picture>
   <source srcset="image-big.png" type="image/png" media="(min-width:1920px)"> 
   <source srcset="image-med.png" type="image/png" media="(min-width:1200px)"> 
   <source srcset="image-small.png" type="image/png" media="(min-width:700px)"> 
   <img src="backup.png"  class="abc">
</picture>

&lt;picture&gt; 也可以与&lt;video&gt;&lt;audio&gt; 元素一起使用。它将以类似的方式工作。

所以,这完全有效。

<figure>
   <picture>
      <source srcset="image-big.png" type="image/png" media="(min-width:1920px)"> 
      <source srcset="image-med.png" type="image/png" media="(min-width:1200px)"> 
      <source srcset="image-small.png" type="image/png" media="(min-width:700px)"> 
      <img src="backup.png"  class="abc">
   </picture>
   <figcaption>Caption</figcaption>
</figure>

【讨论】:

以上是关于在 HTML5 的 <figure> 元素中使用 <picture>?的主要内容,如果未能解决你的问题,请参考以下文章

HTML5 1.11 figure/figcaptio

html5新特性笔记

HTML5你必须知道的28个新特性

22 个常见的HTML5技巧和实际应用

HTML5的语义化标签都有哪些,作用是啥

28个你必须知道的HTML5的新特性,技巧以及技术