开发者

Wrap text inside float

开发者 https://www.devze.com 2023-01-12 05:57 出处:网络
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 huuuuu

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.

0

精彩评论

暂无评论...
验证码 换一张
取 消