I would like to display floated images with a caption underneath. But using the code below, the caption text doesn't wrap, meaning that the floated image-with-captio开发者_开发问答n takes up a huuuuuge amount of horizontal space.
If there's a better way to have an image with a caption, I'll take that over any improvements to this code. Failing that, how can I get the text inside the float to wrap?
I tried searching for this, but could only get results for wrapping text AROUND a float, not inside.
Added: I would prefer not to set an explicit width for the float, since I would have to do so for every single image I ever use.
The full XHTML...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head>
<title>Test</title>
<style type="text/css">
p.img-with-cap {
float: left;
}
</style>
</head>
<body>
<p class="img-with-cap">
<a class="img" href="http://sohowww.nascom.nasa.gov/">
<img alt="Sun" src="http://www.heeris.id.au/sites/default/files/sun.gif" width="256" height="256" />
</a>
<br />The Sun - a sinister and destructive force. Image from
<a href="http://sohowww.nascom.nasa.gov/">SOHO website</a>.
</p>
<p style="font-size: 200%">The Sun is a star located at the centre of our solar system. It is
classified as a G2 star, has a mass of about 2×1030 kg, a temperature of
5800 K at the surface and a core temperature of 15.6 million Kelvin. It
constantly emits electromagnetic radiation over the entire spectrum
(indeed, it can be modelled as a black body), peaked at the wavelength
corresponding to that of green light.</p>
</body>
</html>
Block-level floated elements can have a width applied to them. I would imagine that the following style should prevent the wrapping:
p.img-with-cap {
float: left;
width: 200px; /* or whatever */
}
If you don't want a specific width, but want it to match the width of the image, you could set the width dynamically when the window loads, like so:
function setWidth() {
var width = document.getElementById("imgElement").width;
document.getElementById("wrapperElement").style.width = width;
}
window.onload = setWidth;
Floated elements, just like any other block element, will take up as much width as necessary to fit their contents — up to 100%.
If you want it to be narrower than 100%, give it a width: ____;
property.
精彩评论