I want 3 images side by side with caption, at the moment I have 3 images going from top to bottom, with the caption on the left, not on the centre. How do I make the images appear side by side with caption in the middle? Thanks.

<div> <img src="/images/tv.gif" height="200" width="200"> <p>This is image 1</p> <img src="/images/tv.gif"/ height="200" width="200"> <p>This is image 2</p> <img src="/images/tv.gif"/ height="200" width="200"> <p>This is image 3</p> </div> 
2

7 Answers

You mean something like this?

<div> <div> <img src="/images/tv.gif" height="200" width="200"/> <p>This is image 1</p> </div> <div> <img src="/images/tv.gif"/ height="200" width="200"/> <p>This is image 2</p> </div> <div> <img src="/images/tv.gif"/ height="200" width="200"/> <p>This is image 3</p> </div> </div> 

with the imgContainer style as

.imgContainer{ float:left; } 

Also see this jsfiddle.

8

Not really sure what you meant by "the caption in the middle", but here's one solution to get your images appear side by side, using the excellent display:inline-block :

<!DOCTYPE html> <html> <head> <meta charset=utf-8 /> <title></title> <style> div.container { display:inline-block; } p { text-align:center; } </style> </head> <body> <div> <img src="" height="200" width="200" /> <p>This is image 1</p> </div> <div> <img src=""/ height="200" width="200" /> <p>This is image 2</p> </div> <div> <img src="" height="200" width="200" /> <p>This is image 3</p> </div> </div> </body> </html> 
3

Try using this format

<figure> <img src="img" alt="The Pulpit Rock" width="304" height="228"> <figcaption>Fig1. - A view of the pulpit rock in Norway.</figcaption> </figure> 

This will give you a real caption (just add the 2nd and 3rd imgs using Float:left like others suggested)

1

I suggest to use a container for each img p like this:

<div> <div> <img src="/images/tv.gif" height="200" width="200" /> <p>This is image 1</p> </div> <div> <img src="/images/" height="200" width="200" /> <p>This is image 2</p> </div> <div> <img src="/images/" height="200" width="200" /> <p>This is image 3</p> </div> </div> 

Then apply float:left to each container. I add and 5px margin right so there is a space between each image. Also alway close your elements. Maybe in html img tag is not important to close but in XHTML is.

fiddle

Also a friendly advice. Try to avoid inline styles as much as possible. Take a look here:

html

<div> <div> <img src="/images/tv.gif" /> <p>This is image 1</p> </div> <div> <img src="/images/" /> <p>This is image 2</p> </div> <div> <img src="/images/" /> <p>This is image 3</p> </div> </div> 

css

div{ float:left; margin-right:5px; } div > img{ height:200px; width:200px; } p{ text-align:center; } 

It's generally recommended that you use linked style sheets because:

  • They can be cached by browsers for performance
  • Generally a lot easier to maintain for a development perspective

source

fiddle

Try this.

CSS

.imageContainer { float: left; } p { text-align: center; } 

HTML

<div> <div> <img src="/images/tv.gif" height="200" width="200" /> <p>This is image 1</p> </div> <div> <img src="/images/tv.gif"/ height="200" width="200" /> <p>This is image 2</p> </div> <div> <img src="/images/tv.gif"/ height="200" width="200"/> <p>This is image 3</p> </div> </div> 

Here is how I would do it, (however I would use an external style sheet for this project and all others. just makes things easier to work with. Also this example is with html5.

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> .container { display:inline-block; } </style> </head> <body> <div> <figure> <img src="" height="200" width="200"> <figcaption>This is image 1</figcaption> </figure> <figure> <img src=""/ height="200" width="200"> <figcaption>This is image 2</figcaption> </figure> <figure> <img src="" height="200" width="200"> <figcaption>This is image 3</figcaption> </figure> </div> </body> </html> 

In your CSS:

.image123{ float:left; } 

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy