2012-03-28 22 views
8

Google Chrome está actuando con errores utilizando el radio del borde, el color de fondo y los bordes superior e inferior. Aquí está la evidencia y el código para reproducir:Chrome/WebKit creando una barra sólida al usar bordes, bordes y bordes superiores e inferiores

enter image description here

http://jsfiddle.net/6ADtd/4/

<div></div>​ 

div { 
    background:blue; 
    border-top:10px solid red; 
    border-bottom:10px solid red; 
    border-radius:20px 20px 0 0; 
    height:100px; 
    /* 
    border-right:1px solid transparent; 
    */ 
} 

El border-right:1px solid transparent; es un truco sugerido en los comentarios, que ayudaba a eliminar la barra sólida medio no deseados , pero cuando cambia el tamaño la ventana/navegador - aparece de nuevo. Tiene algo que ver con la proximidad del elemento al borde de la ventana del navegador, no lo entiendo del todo. Tienes que cambiar el tamaño y, a veces, desplazarte sobre el elemento. videos de mi escritorio:

He intentado -webkit- prefijos en varias propiedades y no pudo arreglalo.

Lo publiqué por primera vez porque necesitaba una solución rápida para un sitio web específico, pero ahora me doy cuenta de que aparece en varios sitios y he averiguado qué lo causa. Eso es lo que obtengo por no probar nada excepto Firefox. Probablemente esto sea un error y debería informarlo, pero mientras tanto sigo necesitando una solución.

La solución ideal es con CSS, por lo que puedo escribir uno o dos selectores en el archivo CSS para la corrección en lugar de buscar archivos de plantilla y en la base de datos para aplicar div-wrap u otras correcciones de marcado. ¿Alguien sabe algún truco para deshacerse de este error?

+0

No veo eso con la compilación de WebKit nocturna y Safari. – zneak

+0

Gracias, eso al menos lo reduce entonces. Compruébelo en Chrome (mi versión es 17, el cliente se quejó de ella para que la vea también, independientemente de la versión que esté usando). Puedes verlo en el video que publiqué también si no es reproducible en tu versión de Chrome. –

+0

Parece que puede deshacerse de él agregando una regla como 'border-right: 1px solid transparent;'. – j08691

Respuesta

2

En el momento de mirarme en esta cuestión, todavía había un problema on the prod website visible cuando se cambia el tamaño del navegador para forzar el desplazamiento horizontal en el documento:

fits horizontally - no defect scrolls horizontally - visible defect

La "solución" que utilicé fue aplicar tanto

border-left:1px solid transparent; 
border-right:1px solid transparent; 

a #header con herramientas de desarrollo - esto parece forzar la situación que se vaya sin importar el cambio de tamaño, por lo menos en un Mac Chrome 18.

Esto parece un comportamiento problemático para mí - Especulo que tendría algo que ver con las esquinas de fusión donde se cruzan los colores, que, debido a un error, terminan sangrando en el elemento en sí.

He intentado, bastante infructuosamente, buscar en la posible conexión entre un radio de borde superior al ancho del borde que causa este comportamiento. Esto fue, por supuesto, untrue - jugar con diferentes radios x/y no arrojó ningún resultado sin tener aplicada la "solución" de lo anterior. Es bueno saberlo, supongo.

+0

¡Ah, no puedo creer que ni siquiera haya intentado esto! Esto resuelve el problema de cambiar el tamaño perfectamente para mí. Muchas gracias, simplemente no he tenido suficiente tiempo para jugar con este pequeño y molesto error. Es un [poco raro] (http://jsfiddle.net/6ADtd/11/) con bordes de más de 2px o más, pero merece la pena. Tenía teorías de que se desencadenó con píxeles pares o impares en el borde/radio del borde o usando gradiente lineal y todo tipo de cosas, ni siquiera intenté algo así de simple. –

1

Lo siento, estaba siendo un poco vago con mi respuesta inicial.

¿Qué hay de envolver un div con las propiedades de borde alrededor de la cabecera con rebosadero oculto: http://jsfiddle.net/jugularkill/Jsdcz/

+0

Creo que deberías leer sobre la notación abreviada en CSS, tu código pondría el radio en cada esquina a 15px, el mío solo lo establece arriba a la izquierda y arriba a la derecha. Por ejemplo, '3px 2px 1px' significa 3px arriba a la izquierda, 2px arriba a la derecha, 1px abajo a la derecha, 2px abajo a la izquierda. Solo busca la notación abreviada para las fronteras. Tu código es el mismo que '15px'. Por cierto, su enlace de demostración es el mismo exacto que en mi pregunta. –

+0

Acabo de actualizar mi respuesta, lo siento: utilizo la abreviatura de CSS simplemente no con border-radius, transform matrix y un puñado de otros, aunque definitivamente voy a intentarlo gracias. – Undefined

+0

El problema es que no puedo cortar las esquinas del fondo del elemento interno (el que tiene el degradado) usando 'overflow: hidden' en el exterior, tengo elementos que están colocados fuera del encabezado un poco debe ser visible: http://jsfiddle.net/Jsdcz/1/ De lo contrario, esta es una solución justa y agradezco mucho su idea. La corrección del usuario j08691 a partir de los comentarios resolvió el problema principal, por lo que esto es de baja prioridad para mí ahora un viernes especialmente, volveré para otorgarle la marca de verificación si no surgen mejores soluciones. –

1

nunca he visto tal comportamiento en Chrome, de hecho, muy verde. De todos modos, puedes deshacerte del borde inferior y funcionará bien. Si es posible, simplemente agregue un <div> con fondo rojo en la parte inferior.Algo como esto:

http://jsfiddle.net/6ADtd/5/

O un CSS única solución, añadir contenido después de su div:

http://jsfiddle.net/Cthulhu/6ADtd/6/

+0

Agregar más divs no va a funcionar para mí, ya que es demasiado trabajo arreglar cada ocurrencia de cada elemento (como se menciona en la pregunta). Dejar caer el borde inferior y reemplazarlo con contenido ': after' no es una mala idea, pero también tiene algunos pequeños problemas. (También debería haber mencionado que no puedo suponer que sé la altura del elemento, solo lo codifiqué para la demostración) Así que cambié el violín un poco, solo estoy tratando de que se comporte más como un borde y menos como un esquema: http://jsfiddle.net/6ADtd/7/ Trabajaré en ello esta noche. Gracias por la idea, creo que este podría ser el truco. –

+0

No hay problema, me alegro de poder ayudar. En realidad, tu versión funciona mejor. Y tengo curiosidad por ver cómo logras solucionar ese problema. ¡Buena suerte! – Cthulhu