¿Es mejor tener un archivo CSS diferente para cada agente de usuario o es mejor usar CSS Hacks que solo ciertos navegadores pueden ver?¿Cuál es la forma correcta de lidiar con la compatibilidad del navegador css?
Respuesta
Ninguno.
Lo mejor es escribir código que funcione en todos los navegadores sin la necesidad de código específico del navegador o hacks de CSS. Por supuesto, no es tan fácil de lograr, por lo que muchas personas usan los otros métodos.
La clave es evitar las cosas que algunos navegadores (muy a menudo Internet Explorer) tienen problemas. Una de ellas es usar relleno en lugar de margen, porque IE no maneja el colapso de margen correctamente.
Algunos métodos que están en la línea del borde de ser piratas informáticos están utilizando un código que no afecta a los navegadores que funcionan correctamente, pero corrige los problemas de un navegador específico. Eso podría ser cosas como especificar una altura para un elemento que normalmente no debería necesitar una, o especificar display:inline
en un elemento flotante.
La página Position is everything tiene ejemplos de algunos errores y soluciones sugeridas. (A menudo, la solución es algún tipo de truco, por lo que también debería considerar si puede evitar el problema por completo.)
Ni si es posible. Ahora que el viejo Netscape, IE < = 6 etc. ya no son tan utilizados, trato de usar las características que funcionan en todos esos navegadores (por ejemplo, FF> = 2, IE> = 7, Chrome, Opera).
IE6 todavía se usa ampliamente, es algo entre el 15 y el 20% de la cuota de mercado dependiendo de la fuente. – marcgg
Es mejor no hacer ninguna de las dos cosas.
Un buen css-reset y CSS que funciona con el mismo navegador cruzado es una solución mucho mejor.
Si su diseño lo excluye por completo, entonces (y solo entonces) probaría los hacks o los comentarios condicionales de IE.
Todavía no he visto la necesidad de archivos mutliple css (más allá de algunas correcciones de IE6 dirigidas a través de un comentario condicional).
Conditional comments para los problemas con Internet Explorer parecen ser la norma. Combinado con un poco de JavaScript, como Dean Edward's ie7.js puede mitigar la mayoría de los problemas de navegador cruzado sin recurrir a hacks dentro de sus archivos CSS.
es mejor usar un archivo css diferente para Internet Explorer 6-7 (incluirlos a través de conditional comments), y un hacks para otros navegadores.
Una especie de seguimiento es cómo desarrollar el único archivo que funciona.
El mejor enfoque que he visto funcionar es partir de la nada, construirlo lentamente y comprobar el cambio por cambio que sigue siendo compatible en todos los navegadores principales (especialmente los problemáticos).
Cuando trabaje completamente con un navegador y luego diga "tiempo para convertirlo" es cuando realmente comienza el dolor y donde tiene que empezar a piratear.
My approach usando una clase PHP para detectar el sistema operativo, el navegador y la versión del navegador. Puede orientar cualquier versión de casi cualquier navegador en cualquier sistema operativo.
- 1. ¿Cuál es la forma correcta de usar maxAge con Express.js?
- 2. ¿Cuál es la forma correcta de redirigir?
- 3. ¿Cuál es la forma correcta de ocultar una etiqueta HTML?
- 4. ¿Cuál es la forma correcta de lidiar con la migración de bases de datos al usar South, Django y Git?
- 5. ¿Cuál es la forma correcta de detectar Opera usando jQuery?
- 6. ¿Cuál es la forma correcta de mostrar un logotipo con CSS?
- 7. ¿Cuál es la forma correcta de mostrar la InnerException completa?
- 8. ¿Cuál es la forma correcta de sangrar Erlang?
- 9. ¿Cuál es la forma * correcta * de deshacer la propiedad de comportamiento en CSS?
- 10. Prueba de compatibilidad del navegador
- 11. ¿Cuál es la forma correcta de liberar memoria en C#
- 12. cuál es la forma correcta de separar datos en couchbase
- 13. ¿Cuál es la forma correcta de incluir encabezados Qt?
- 14. ¿Cuál es la forma correcta de degradar una gema?
- 15. ¿Cuál es la forma correcta de rastrear índices en python?
- 16. Compatibilidad del navegador de algún tipo de selectores css
- 17. ¿Cuál es la forma correcta de usar TypeForwardedToAttribute?
- 18. ¿Cuál es la forma correcta de cargar un ListBox?
- 19. ¿Cuál es la forma correcta de declarar un Doctype HTML5?
- 20. ¿Cuál es la forma correcta de desconectar un MediaController?
- 21. ¿Cuál es la forma correcta de salir del script node.js con un mensaje de registro?
- 22. ¿Cuál es la forma correcta de usar scala.io.Source?
- 23. Objective-C "mensajes": ¿cuál es la forma correcta de leerlo?
- 24. ¿Cuál es la mejor manera de lidiar con el caché y el botón de retroceso del navegador?
- 25. ¿Cuál es la forma correcta de usar bitfields en C?
- 26. ¿Cuál es la forma correcta de ajustar [NSString stringWithFormat:]?
- 27. ¿Cuál es la forma correcta de representar elementos XML nulos?
- 28. Cuál es la forma correcta de cerrar una conexión TCP
- 29. ¿Cuál es la forma correcta de cerrar H2?
- 30. PrimeFaces y compatibilidad del navegador
La mayoría de los problemas que se describen se reduce a la configuración del doctype. Si no haces eso, entonces sí, tendrás diferencias radicales entre los navegadores.Doctype con un restablecimiento css resuelve casi todo bajo uso normal. – NotMe
No, lo que describí se aplica incluso cuando tiene un tipo de documento y un código válidos. Sin eso, estás mucho peor. – Guffa