background-size en la propiedad de fondo taquigráfico (CSS3)

112

Estoy tratando de mezclar background-imagey background-sizepropiedades en una backgroundpropiedad escasa . Según la documentación del W3C, background-size debe ir después de la background-positionpropiedad separada con una barra inclinada ( /).

Ejemplo de W3C:

p { background: url("chess.png") 40% / 10em gray
       round fixed border-box; } 

es equivalente a:

p {
    background-color: gray;
    background-position: 40% 50%;
    background-size: 10em 10em;
    background-repeat: round round;
    background-clip: border-box;
    background-origin: border-box;
    background-attachment: fixed;
    background-image: url(chess.png) }

MDN dice lo mismo. También encontré este y este artículo sobre la propiedad de fondo CSS3 abreviada que explica esto.

¡Pero esto no está funcionando! Tampoco está claro cómo hacer una backgroundpropiedad abreviada cuando background-sizey background-positiontener dos valores diferentes para background-position-xy lo background-position-ymismo para background-size. ¿No está claro cómo /se produce la barra ( )? Este ejemplo no funciona en mi Chrome 15.

Ejemplo que intenté hacer una abreviatura es este código CSS:

div {  
    background: url(http://www.placedog.com/125/125) 
        0 0 /  150px 100px 
        repeat no-repeat 
        fixed border-box padding-box blue;      
    height: 300px;
    width:360px;    
    border: 10px dashed magenta;  
}

Un ejemplo más limpio

Esto está funcionando ( JSFiddle )

 body{
        background-image:url(http://www.google.com/intl/en_com/images/srpr/logo3w.png);
        background-position:200px 100px;
        background-size:600px 400px;
        background-repeat:no-repeat;
    }

Esto no funciona ( jsfiddle )

body{
    background:url(http://www.google.com/intl/en_com/images/srpr/logo3w.png) 200px 100px/600px 400px no-repeat;
}

Esto tampoco funciona ( jsfiddle )

body{
    background:url(http://www.google.com/intl/en_com/images/srpr/logo3w.png) 200px/400px 100px/600px no-repeat;
}
Mohsen
fuente
3
¡Cuidado con Safari no admite taquigrafía de tamaño de fondo! ¡Safari no lo admite! ¡Coloque el tamaño de su fondo separado del fondo para evitar que Safari se ahogue con él!
Jeff

Respuestas:

63
  1. Tu jsfiddle usa en background-imagelugar debackground
  2. Parece ser un caso de "aún no es compatible con este navegador".

Esto funciona en Opera: http://jsfiddle.net/ZNsbU/5/
Pero no funciona en FF5 ni IE8. (yay para navegadores obsoletos: D)

Codigo:

body {
  background:url(http://www.google.com/intl/en_com/images/srpr/logo3w.png) 400px 200px / 600px 400px no-repeat;
}

Podrías hacerlo así:

body {
    background:url(http://www.google.com/intl/en_com/images/srpr/logo3w.png) 400px 400px no-repeat;
    background-size:20px 20px
}

Que funciona en FF5 y Opera pero no en IE8.

Kraz
fuente
¿Crees que no es un problema de compatibilidad con el navegador?
Kraz
1
Me pregunto cuál es la especificación correcta para CSS3 background.
Mohsen
Es lo que definió el W3C, exactamente como lo tiene en su pregunta o en mi ejemplo de código. Simplemente aún no está implementado en todos los navegadores.
Kraz
No funciona en Chrome Canary. No puedo creer que aún no esté implementado.
Mohsen
Seleccionado como respuesta para esta parte: Parece ser un caso de "aún no es compatible con este navegador".
Mohsen
14

Puedes hacer como

 body{
        background:url('equote.png'),url('equote.png');
        background-size:400px 100px,50px 50px;
    }
vignesh
fuente
Esto es lo que más me ayudó; No sabía que se podían dividir las declaraciones de tamaño de fondo con una coma, una para cada URL que se encuentra encima.
Nathaniel Flick
9

Solo una nota de referencia: estaba tratando de hacer taquigrafía así:

background: url('../images/sprite.png') -312px -234px / 355px auto no-repeat;

pero los navegadores iPhone Safari no mostraban la imagen correctamente con un elemento de posición fija. No consulté con un no fijo, porque soy vago. Tuve que cambiar el CSS a lo que está debajo, teniendo cuidado de poner background-size después de la propiedad background. Si los hace al revés, el fondo revierte el tamaño del fondo al tamaño original de la imagen. Entonces, en general, evitaría usar la abreviatura para establecer el tamaño del fondo.

background: url('../images/sprite.png') -312px -234px no-repeat;
background-size: 355px auto;
Daniel
fuente
Lo mismo aquí en Android 4.1.2 Stock Browser
depoulo
1

prueba así

body {
   background: #fff url("!--MIZO-PRO--!") no-repeat center 15px top 15px/100px;
     }


/* 100px is the background size */
MizoPro
fuente
-5

Tendrá que usar prefijos de proveedor para admitir diferentes navegadores y, por lo tanto, no puede usarlos en forma abreviada.

body { 
        background: url(images/bg.jpg) no-repeat center center fixed; 
        -webkit-background-size: cover;
        -moz-background-size: cover;
        -o-background-size: cover;
        background-size: cover;
}
Moin Zaman
fuente
1
Esto no es correcto. No tengo que usar el prefijo del proveedor si no quiero admitir navegadores antiguos
Mohsen
Los prefijos de este proveedor aún funcionan y es posible que algunos navegadores lo hayan eliminado recientemente.
Moin Zaman