À l'échelle une image de maximiser l'ajustement de l'espace disponible et le centre

Je suis la construction d'une seule page de l'application. Dans l'un des points de vue, je veux montrer une image qui doit prendre autant d'espace disponible que possible:

  • le plus important: il doit garder le ratio d'aspect
  • il ne doit pas être coupée de
  • il doit être étiré horizontalement et/ou verticalement (sans changer l'aspect ratio) pour couvrir le maximum d'espace possible
  • la taille de l'image et de la fenêtre d'affichage ne sont pas connus
  • il doit être centré
  • pas de js doit être utilisé
  • l'élément doit être un img élément et pas de fond doit être utilisé - j'ai déjà un arrière-plan (dans le conteneur)

Par exemple, disons que l'image est 100px x 100px, et que nous avons un conteneur de 500px x 300px. L'image est ensuite étiré à 300px x 300px, et centrée horizontalement de sorte que 100px sont de gauche comme de rembourrage sur les deux côtés.

Est-ce possible?

Voici ma non-fini code de ce que je suis en train d'accomplir.

CSS:

.container1 {
  width: 500px;
  height: 300px;
  border: 2px;
  border-color: red;
  border-style: solid;
}
.container2 {
  width: 300px;
  height: 500px;
  border: 2px;
  border-color: blue;
  border-style: solid
}
.fill-vertical {
  border: 2px;
  border-style: solid;
  border-color: green;
  display: block;
  max-width: 100%;
}
.fill-horizontal {
  width: 100%;
  border: 2px;
  border-style: solid;
  border-color: green;
}

HTML:

 <h1>Container 1, 500px x 300px, not filled</h1>
<div class="container1">
  <img src="http://files.giercownia.pl/upload/avatars/r/ravax.png?v=0">
</div>
<h1>Container 1, filled vertically (should be horizontally centered)</h1>

<div class="container1">
  <img class="fill-vertical" src="http://files.giercownia.pl/upload/avatars/r/ravax.png?v=0">
</div>

<h1>Container 300px x 500px, not filled</h1>

<div class="container2">
  <img class="fillIt" src="http://files.giercownia.pl/upload/avatars/r/ravax.png?v=0">
</div>

<h1>Container 300px x 500px, filled horizontally, should be vertically centered</h1>

<div class="container2">
  <img class="fill-horizontal" src="http://files.giercownia.pl/upload/avatars/r/ravax.png?v=0">
</div>

Dans ce code, je suis obligé d'utiliser une autre classe pour l'image en fonction de si je veux étirer verticalement ou horizontalement, mais en fait, je veux CSS pour faire cela automatiquement: juste un étirement de la classe doit être définie.

En bref ce que je veux CSS à faire est de: extensible en largeur et/ou hauteur pour s'adapter à l'espace disponible, en gardant l'aspect ratio

InformationsquelleAutor dangonfast | 2015-02-10