如何使用标题填充图像下的宽度而不定义标题的宽度?

时间:2016-02-04 00:35:27

标签: html css

我有一个博客类型的格式,文字和图片下面有标题。我的图像宽度不一,标题长。我希望标题包含在图像下方,图像和标题位于屏幕中心。如何使用HTML和CSS完成此操作?

(我的朋友问我这个,所以我会在下面回答它,因为他花了4个小时在网上找不到解决方案。)

2 个答案:

答案 0 :(得分:1)

display:table也可以正常工作:

.image-caption-container {
  display:table;
  width:1%;
  margin:auto;
}
div class="container"> Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur,
vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?
<div class="image-caption-container">
  <div class="image-caption">
    <img src="http://lorempixel.com/320/320" />
    <div>
      <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia
        voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius
        modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit
        qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?</p>
    </div>
  </div>
</div>
Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem
eum fugiat quo voluptas nulla pariatur?
</div>

答案 1 :(得分:0)

此解决方案需要flex。我不确定任何其他方法可以得到相同的结果。

HTML:

<div class="container">
Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?
  <div class="image-caption-container">
    <div class="image-caption">
      <img src="http://i.imgur.com/YJYNTno.jpg">
      <div>
        <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?</p>
      </div>
    </div>
  </div>
Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?
</div>

CSS:

.image-caption-container
{
  text-align: center;
}
.image-caption
{
  display: inline-flex;
  flex-flow: column nowrap;
}
img
{
  flex: 0 0 auto;
  display: block;
  width: 300px;
  height: 300px;
}
.image-caption > div
{
  flex: 0 0 auto;
  display: flex;
  flex-flow: row wrap;
}
p
{
  flex: 1 1 0px;
  width: 0;
  text-align: left;
}

的jsfiddle:

https://jsfiddle.net/r58wz601/6/