Centre d'image en HTML de la fenêtre d'affichage (sans JavaScript)

J'ai une image que je voudrais afficher dans un navigateur tel que:

  1. Si l'image est plus petite que la fenêtre d'affichage du navigateur, l'image est centrée
    horizotally et verticalement.
  2. Si l'image est plus grande que la fenêtre d'affichage, l'image est réduite à remplir
    comme une grande partie de la fenêtre d'affichage que possible sans avoir à ajuster le ratio d'aspect de la
    image. Encore une fois, l'image est centrée horizotally et verticalement.

Je ne souhaitez pas utiliser JavaScript; quel est le meilleur/le plus sémantique HTML et CSS pour ce faire?

Mise à jour j'ai demandé des précisions quant à la sémantique de l'image: l'image est contenu; le seul contenu dans le code HTML.

Solution

@GionaF idées m'a fait un heureux (et très simple) solution:

HTML

<!DOCTYPE html>
<head>
  <title></title>
  <LINK href="test2.css" rel="stylesheet" type="text/css">
</head>
<body>
    <div>
      <img src="photo.jpg" alt="photo" />
    </div>
</body>

CSS

img {
    max-width:100%;
    max-height:100%;
    position:absolute;
    top:0; left:0; right:0; bottom:0;
    margin:auto;
}
sans JavaScript? pas possible si vous ne connaissez pas la hauteur et/ou largeur de l'image
CSS n'est pas faite pour traiter if conditions. C'est exactement ce que vous lui dites de faire.
est possible. Juste besoin de solutions de contournement pour IE8 et ci-dessous.

OriginalL'auteur Mike | 2012-09-30