2012-07-30 14 views
8

Me he tropezado con algo raro. Cuando se aplica un borde blanco discontinua a un elemento, los colores del gradiente de fondo aparecen en el lado equivocado del elemento, así:¿Por qué se invierten los colores de borde cuando se aplica un degradado de fondo?

wrong border colors

he visto esto en las últimas versiones de Firefox, Chrome , Opera y en IE10. IE9 tiene mi efecto intencionado, sin embargo.

Mi CSS es actualmente:

aside.block { 

    width:     259px; 
    padding:    12px; 
    margin:     15px 0; 

    border:     2px dashed #fff; 

    background-image:  -o-linear-gradient(bottom, rgb(219,203,0) 0%, rgb(255,236,0) 100%); 
    background-image:  -moz-linear-gradient(bottom, rgb(219,203,0) 0%, rgb(255,236,0) 100%); 
    background-image:  -webkit-linear-gradient(bottom, rgb(219,203,0) 0%, rgb(255,236,0) 100%); 
    background-image:  -ms-linear-gradient(bottom, rgb(219,203,0) 0%, rgb(255,236,0) 100%); 
    background-image:  linear-gradient(bottom, rgb(219,203,0) 0%, rgb(255,236,0) 100%); 
    filter:     progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffec00', endColorstr='#dbcb00'); 

} 

Los colores del borde de la multa del color del lado izquierdo y derecho, pero como esto sucede en casi todos los navegadores, que tendrán que asumir esta es mi error, no se un error del navegador. ¿Que me estoy perdiendo aqui?

+1

añadido que jugar por lo que es más fácil de perder el tiempo: http://jsfiddle.net/LVfqe/5/ – easwee

Respuesta

5

Puede solucionar esto configurando background-origin en border-box.

http://jsfiddle.net/LVfqe/11/

.block{ 
     width:     259px; 
     padding:    12px; 
     background-image:  -o-linear-gradient(bottom, rgb(219,203,0) 0%, rgb(255,236,0) 100%); 
     background-image:  -moz-linear-gradient(bottom, rgb(219,203,0) 0%, rgb(255,236,0) 100%); 
     background-image:  -webkit-linear-gradient(bottom, rgb(219,203,0) 0%, rgb(255,236,0) 100%); 
     background-image:  -ms-linear-gradient(bottom, rgb(219,203,0) 0%, rgb(255,236,0) 100%); 
     background-image:  linear-gradient(bottom, rgb(219,203,0) 0%, rgb(255,236,0) 100%); 
     filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffec00',endColorstr='#dbcb00'); 
border:     2px dashed #fff; 
background-origin:border-box; 
} 
+0

Ah, que la fija. No creo que alguna vez haya usado la propiedad de origen de fondo. – Lg102

+1

¿Cuál es el motivo del comportamiento original? Proporcionar un borde biselado –

+0

@Stefano Borini: ¿qué quiere decir con "borde biselado"? ¿Que es eso? El problema ocurre porque el origen de fondo predeterminado es el cuadro de relleno y el fondo está configurado para repetir. El degradado comienza a repetirse debajo del borde, a menos que se establezca border-box, que contará el borde en el ancho total de la caja y comenzará el fondo allí. Intenta configurar el ancho del borde a 50px y verás por qué. – easwee

Cuestiones relacionadas