【问题标题】:2 column images list (figure and figcaption)2 列图像列表(图和图说明)
【发布时间】:2012-12-07 13:41:16
【问题描述】:

我正在尝试将图像与标题并排放置。

默认情况下开箱即用,执行以下操作:

<figure>
<img src="1.jpg" width=320 height=240 alt="Image 1">
<img src="2.jpg" width=320 height=240 alt="Image 2">
<img src="3.jpg" width=320 height=240 alt="Image 3">
<img src="4.jpg" width=320 height=240 alt="Image 4">
</figure>

如果我的宽度允许,我会并排获得图像列表。我得到我想要的。是这样的2列图像:

Image 1 Image 2
Image 3 Image 4

现在如果我添加 figcaption 如下:

<figure>
<img src="1.jpg" width=320 height=240 alt="Image 1">
<figcaption>caption 1</figcaption>
<img src="2.jpg" width=320 height=240 alt="Image 2">
<figcaption>caption 2</figcaption>
<img src="3.jpg" width=320 height=240 alt="Image 3">
<figcaption>caption 3</figcaption>
<img src="4.jpg" width=320 height=240 alt="Image 4">
<figcaption>capton 4</figcaption>
</figure>

一切看起来像这样:

Image 1
caption 1 
Image 2 
caption 2 
Image 3  
caption 3 
Image 4
caption 4

我也在玩列表、层次结构和 css。

问题是我怎样才能做到以下几点?

Image 1 Image 2 
caption 1 caption 2 
image 3 Image 4   
caption 3 caption 4

非常感谢, 卡罗利斯

【问题讨论】:

  • HTML5 Doctor 说一个图中只允许有 1 个 figcaption:html5doctor.com/the-figure-figcaption-elements
  • 好的,谢谢,但我的目标是最后一点,如何用
    和 css 制作 2 列?
  • 使用“div”:jsfiddle.net/ZksyN
  • 非常感谢!但在我的情况下,我必须使用宽度:1oo%而不是宽度:320px,否则一切都会搞砸,但在这种情况下,排序再次只是一个接一个,而不是并排:/ - 我可以使用一些东西吗?显示:块左右?
  • 您没有在任何地方指定width: 100%。这些是您提问时需要提供的重要细节。

标签: css figure


【解决方案1】:

首先,我们需要修正您的标记(每个图只允许 1 个图题)。然后我们需要添加某种容器元素。我选择放在一边作为我的容器,但它可以是任何感觉合适的块级元素(div、section 等):

http://jsfiddle.net/ZksyN/2/

<aside class="figures">
<figure>
<img src="1.jpg" width=320 height=240 alt="Image 1">
<figcaption>caption 1</figcaption>
</figure>

<figure>
<img src="2.jpg" width=320 height=240 alt="Image 2">
<figcaption>caption 2</figcaption>
</figure>

<figure>
<img src="3.jpg" width=320 height=240 alt="Image 3">
<figcaption>caption 3</figcaption>
</figure>

<figure>
<img src="4.jpg" width=320 height=240 alt="Image 4">
<figcaption>capton 4</figcaption>
</figure>
</aside>

这里的 CSS 足以让元素内联显示。您可能希望减少figure 的左右边距。我还取消了对必须显示的列数的任何限制,因此默认情况下它是响应式的(窄设备将获得 1 列,如果它们适合,超宽设备可以获得 3 或 4 列)。如果要为列数添加硬性上限,请在aside.figures 中添加一个等于(图像宽度 + 侧边距)* 列数的 max-width。

aside.figures {
    overflow: hidden; /* only needed if floating the child elements instead of using inline-block */
}

aside.figures figure {
    display: inline-block;
    border: 1px solid;
}

【讨论】:

  • 非常感谢,这正是我想要的 :) 简单、简短且有效!
猜你喜欢
  • 1970-01-01
  • 2012-10-23
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
  • 2020-09-18
  • 2015-03-16
  • 1970-01-01
  • 2012-10-23
相关资源
最近更新 更多