如何使图像说明的宽度与图像相同?现在我有以下代码:
<div class="image">
<img src="foo.jpg" alt="" />
<div>This is the caption.</div>
</div>
我尝试了很多方法(如浮动、绝对定位等),但如果标题很长,它总是使div变宽而不是换行。问题是我不知道图像的宽度(或标题长度)。解决这个问题的唯一方法是使用表格吗?
如何使图像说明的宽度与图像相同?现在我有以下代码:
<div class="image">
<img src="foo.jpg" alt="" />
<div>This is the caption.</div>
</div>
我尝试了很多方法(如浮动、绝对定位等),但如果标题很长,它总是使div变宽而不是换行。问题是我不知道图像的宽度(或标题长度)。解决这个问题的唯一方法是使用表格吗?
所以问题是你不知道图片有多宽,而且图片的标题可能会超出图片的宽度,在这种情况下,你希望限制标题的宽度为图片的宽度。
在我的案例中,我在父元素上应用了display:table
,并在标题元素上应用了display:table-caption
和caption-side:bottom
,就像这样:
<div class="image" style="display:table;">
<img src="foo.jpg" alt="" />
<div style="display:table-caption;caption-side:bottom;">This is the caption.</div>
</div>
display:table;
和任意初始宽度(如:width:7px;
)应用于父块,例如figure
,一切都将按照预期工作!这里有一个实时演示:http://jsfiddle.net/blaker/8snwd/。这种解决方案的限制是IE 7及更早版本不支持display:table;
,而IE 8需要您的文档类型为!DOCTYPE
。来源:
div.image {
width: 200px; /* the width you want */
max-width: 200px; /* same as above */
}
div.image div {
width: 100%;
}
标题将保持不变。此外,标签名称为img,而不是image。
或者,如果您想检测图像宽度,可以使用jQuery:
$(document).ready(function() {
var imgWidth = $('.image img').width();
$('.image div').css({width: imgWidth});
});
<div style="width:200px;">
<img src="anImage.png" alt="Image description"/>
<div class="caption">This can be as long as you want.</div>
</div>
CSS:
.caption {
display: inline-block;
}
您还可以通过以下任一CSS样式将inline-block替换为左对齐、右对齐或拉伸到图像宽度:
.caption {
/* text-align: left; */
/* text-align: right; */
text-align: justify;
}
display:inline-block
。
如果标题很长,唯一的解决方案就是设置固定宽度,或者通过js设置.image div的宽度。我正在尝试考虑一个纯CSS的解决方案,但我认为这是一个艰巨的挑战 :)