-moz-image-rect

No estándar
This feature is non-standard and is not on a standards track. Do not use it on production sites facing the Web: it will not work for every user. There may also be large incompatibilities between implementations and the behavior may change in the future.

Resumen

Este valor para la propiedad CSS background-image te permite usar una parte de una imagen de gran tamaño como fondo. Esto permitirá, por ejemplo, usar diferentes partes de una imagen grande como si fueran una sóla imagen grande usada como fondo de diferentes partes de tú contenido.

Funciona de manera similar a la propiedad -moz-image-region , que se usa junto con la propiedadlist-style-image para utilizar partes de imágnes como iconos de listas. Sin embargo puede ser usado para cualquier fondo CSS.

La síntaxis para el rectánigulo es similar a la de la función rect() y genera un tipo CSS <shape> . Los cuatro valores son relativos a la esquina superior izquierda de la imagen.

Síntaxis

-moz-image-rect(<uri>, top, right, bottom, left);

Valores

<uri>
La URI de la imagen de la que se cogera una parte.
top
El borde superior, especificado como  <length>, de la subimagen dentro de la imagen seleccionada.
right
El borde derecho, especificado como  <length>, de la subimagen dentro de la imagen seleccionada.
bottom
El borde inferior, especificado como  <length>, de la subimagen dentro de la imagen seleccionada.
left
El borde izquierdo, especificado como  <length>, de la subimagen dentro de la imagen seleccionada.

Ejemplo

Este ejemplo carga una imagen y la usa en cuatro segmento para dibujar el logo de Firefox en cuatro bloques  <div> blocks. Si hacemos click en el contenedor los cuatro segmentos rotarán cmabiando los valores de la propiedad background-image entre estos cuatro bloques <div>.

CSS

El CSS define un estilo para el contenedor y, posteriormente los estilos para las cuatro cajas que comprenden la imagen completa.

Para el contenedor:

#container {
  width:267px;
  height:272px;
  top:100px;
  left:100px;
  position:absolute;
  font-size:16px;
  text-shadow:white 0px 0px 6px;
  text-align:center;
}

posteriormente las cuatro caja se defines las cajas que especifican los segmentos de la imagen. La vamos a ver una por una.

#box1 {
  background-image: -moz-image-rect(url(https://mdn.mozillademos.org/files/12053/firefox.png), 0%, 50%, 50%, 0%);
  width:133px;
  height:136px;
  position:absolute;
}

Esta es la esquina superior izquierda de la imagen. Define un rectángulo que contiene el cuartil superior izquierda de la imagen firefox.jpg.

#box2 {
  background-image: -moz-image-rect(url(https://mdn.mozillademos.org/files/12053/firefox.png), 0%, 100%, 50%, 50%);
  width:133px;
  height:136px;
  position:absolute;
}

Esto define la esquina superior derecha:

Las otras dos siguen un patrón similar:

#box3 {
  background-image: -moz-image-rect(url(https://mdn.mozillademos.org/files/12053/firefox.png), 50%, 50%, 100%, 0%);
  width:133px;
  height:136px;
  position:absolute;
}
#box4 {
  background-image: -moz-image-rect(url(https://mdn.mozillademos.org/files/12053/firefox.png), 50%, 100%, 100%, 50%);
  width:133px;
  height:136px;
  position:absolute;
}

HTML

Es bastante simple:

<div id="container" onclick="rotate()">
  <div id="box1" style="left:0px;top:0px;">Top left</div>
  <div id="box2" style="left:133px;top:0px;">Top right</div>
  <div id="box3" style="left:0px;top:136px;">Bottom left</div>
  <div id="box4" style="left:133px;top:136px;">Bottom right</div>
</div>

Sitúa los 4 segmentos de una imagen en un caja de 2x2 celdas. Estos cuatro elementos están dentro de un bloque <div> más grande cuya función es recibir eventos click y mandarlos al código JavaScript.

El codigo javaScript

Gestiona el evento click cuando el contenedor recibe un click de ratón

function rotate() {
  var prevStyle = window.getComputedStyle(document.getElementById("box4"), null).getPropertyValue("background-image");
  
  // Una vez hemos guardado la última, empezamos a rotar.
  
  for (var i=1; i<=4; i++) {
    var curId = "box" + i;
    
    // Permuta las imágenes de fondo.
    
    var curStyle = window.getComputedStyle(document.getElementById(curId), null).getPropertyValue("background-image");
    document.getElementById(curId).style.backgroundImage = prevStyle;
    prevStyle = curStyle;
  }    
}

Usa window.getComputedStyle() para establecer el estilo de cada elemento, cambiándolo al elemento posterior. Destacar que, una vez se empieza se guarda una copia del estilo de la última caja ya que será sobreescrito por el tercer elemento. Simplemente copiando los valores de la propiedad background-image de un elemento al siguiente, cuando hacemos click de ratón, conseguiremos el efecto deseado.

Como queda

Bugs

Etiquetas y colaboradores del documento

 Colaboradores en esta página: pekechis
 Última actualización por: pekechis,