【问题标题】:Align multiple images (with captions) to baseline, all different heights将多个图像(带标题)与基线对齐,所有不同的高度
【发布时间】:2013-05-31 08:39:43
【问题描述】:

我一直在寻找如何让这个布局正常工作,我需要一点帮助

我只希望我的图像与最高图像的基线对齐,每行以及该行下方的标题。我看到你在使用图像和 jquery 构建布局方面有很多经验,如果你能指出我正确的方向,我想我可以解决它。

这是我所拥有的 jsfiddle,但我认为我可能不得不放弃砖石,因为我的客户只想要一个不错的基线..但当然还有响应式包装.. http://jsfiddle.net/perrodeagua/SeXDu/embedded/result/

这是我当前的 css,但我还没有和它结婚

.thePics {
padding:5px;
font-family: Geneva, Arial, Helvetica, sans-serif;
font-size: 14px;
line-height: 24px;
float: left;
 width:200px;
 height:auto;
 border:1px;
 text-align:left;


}

#PICS {
 width:auto;
}

这是我需要的模型 http://postimg.org/image/sygkducs5/

谢谢!

【问题讨论】:

  • 你能设置一个jsfiddle吗?
  • Jsfiddle 请...所以 CSS 和 HTML。
  • 使用 lorempixel.com、dummyimage.com 或 placehold.it 等服务获取 jsfiddle 中的图像。
  • 您要问的是默认行为:jsfiddle.net/fxn64 我们需要一些代码来提供帮助(不需要实际图像,任何图像都可以,正如您在小提琴中看到的那样)
  • @PeterVR:确实如此,但前提是所有图像都有一个单一的基线——如果你没有在它们下面有标题的话。

标签: jquery css image baseline


【解决方案1】:

你的意思是,像这样? http://jsfiddle.net/LeBen/yFEc6/

在 Chrome、Safari 和 Firefox 中实际测试过,图像默认使用<figure> 与基线对齐。

【讨论】:

  • comic sans and kittens...我们现在想念的是彩虹!
  • 这是我一整天看到的最可爱的答案。
  • 只要标题的行数相同就可以正常工作:jsfiddle.net/yFEc6/1
  • 在这种情况下,我建议将其截断,但它可能不符合需求jsfiddle.net/LeBen/yFEc6/4
  • 另外,您最好也将代码粘贴到您的答案中。永远不知道 jsfiddle 什么时候会失败(这种情况经常发生)。
【解决方案2】:

如果你的标题也是不均匀的长度,那么 Flexbox 是你最好的纯 CSS 选项。

http://codepen.io/cimmanon/pen/vJeDk

<div class="gallery">
  <figure>
    <img src="http://placehold.it/100x200" />
    <figcaption>My caption here, this one is a really long one. Oh boy, so long.</figcaption>
  </figure>

  <figure>
    <img src="http://placehold.it/100x150" />
    <figcaption>My caption here</figcaption>
  </figure>
</div>

CSS:

.gallery {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -ms-flex-align: baseline;
  -webkit-align-items: baseline;
  align-items: baseline;
  -webkit-box-align: baseline;
  -moz-box-align: baseline;
}

.gallery figure {
  /* optional */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  -webkit-flex: 1;
  -ms-flex: 1;
  flex: 1;
  text-align: center;
}

/* optional */
.gallery {
  -webkit-flex-wrap: wrap;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
}

如果您的元素需要换行,则浏览器支持仅限于 Opera、Chrome 和 IE10。 http://caniuse.com/flexbox

【讨论】:

  • 你说的这个 flexbox magik 是什么?很酷!我试图让
    元素保持在 200px 宽度,我很高兴去!我希望.. 不过我肯定需要对 safari 的支持!让我看看它是否可能。顺便说一句,你们太棒了!
  • 似乎都不接受 width:200px; :(
  • flex/box-flex 属性导致宽度被忽略。只需放下它,它就会起作用。只要不需要换行,就支持 Safari。
  • 我只是不明白为什么你在图形元素中包含弹性框代码,代码显示/*可选*/,没有它会更好。无论如何它的工作完美,谢谢!
  • 我没有办法在 iOS 中进行测试,但它可以在 Safari 5 for Windows 中运行。
【解决方案3】:

编辑 -- 如果你可以使用 HTML5,Le Ben 的回答比我的更酷,但如果你需要支持 IE 8,这应该可以工作

如果您的图像是这样对齐的:

---- ---- ----
|  | |  | |  |
---- |  | ----
     ----

你希望他们像这样:

     ----
---- |  | ----
|  | |  | |  |
---- ---- ----

只需使用一些 CSS:

<style type="text/css">
    .captioned-img { display: inline-block; vertical-align: bottom; }
    .caption       { text-align: center; }
</style>

<div class="captioned-img">
    <img />
    <p class="caption">Fig 1</p>
</div>
<div class="captioned-img">
    <img />
    <p class="caption">Fig 2</p>
</div>
<div class="captioned-img">
    <img />
    <p class="caption">Fig 3</p>
</div>

http://jsfiddle.net/YTaVr/

【讨论】:

  • 现在它是 LeBen 解决方案的精确副本。
  • 这是一个问题的答案,但与 LeBen 的解决方案不同,这个适用于 IE 8。如果你不能依赖 HTML 5,你必须做这样的事情
  • 在这种情况下元素是无关紧要的,因为问题是关于 CSS(或可能是 JavaScript)。您所做的只是复制 LeBen 的 CSS 并更改 HTML 元素。您甚至无需费心更改演示中的 HTML。
  • 我是故意这样做的,所以它们很容易比较——元素是绝对相关的。尝试在 IE 8 中运行 LeBen 的答案——它不起作用。我的。
  • 好的。实际上,我不厌其烦地修改您的代码,就在这里。 jsfiddle.net/perrodeagua/xgQSC 它显然不适用于标题 div 中的可变行..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-07
  • 1970-01-01
  • 2019-03-04
  • 2016-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多