2010-01-14 16 views
6

Soy relativamente nuevo en la programación del lado del cliente procedente del entorno PHP/MySQL. Entiendo los roles que tanto CSS como JavaScript pueden jugar en el entorno del navegador, sin embargo, parece que CSS está irreversiblemente estancado sin JavaScript. De ninguna manera quiero crear un debate, pero esta es la situación para mí, el "novato". Entonces, ¿por qué no usar solo JavaScript para establecer los atributos/propiedades de los elementos? Y si es así, ¿es esta una práctica común? (Estoy seguro de que CSS es mucho más rápido ...)Reemplazo de CSS con JavaScript

+0

una buena pregunta, pero maldición que va a tomar mucho tiempo para responder a –

+0

Comunidad wiki esta pregunta. –

+1

Excelentes respuestas. El tiempo de renderizado es demasiado costoso, sería condenado al ostracismo y no es natural para JavaScript aunque sea factible. Gracias. –

Respuesta

8

Algunos puntos generales:

CPU Costo

ejecutar JavaScript para aplicar estilos a los elementos individuales serán muy lentos. Javascript es sincrónico, por lo que tendrá que actualizar un estilo a la vez. Además, como se menciona en otra parte, atravesar el DOM es computacionalmente costoso. Más aún si está aplicando estilos ya que obliga al navegador a volver a presentar el sitio cada vez que aplica un cambio.

Costo cerebro

Es también mentalmente caro para tratar de escribir y mantener estilos en Javascript. Es un lenguaje funcional que nunca tuvo la intención de contener las reglas de los diseños. CSS es mucho más fácil de leer.

They Cascade!

CSS significa Cascading Style Sheets. Uno de los grandes estilos de beneficios puede heredar propiedades entre sí. Considere lo siguiente:

a.nav { font-weight: bold; } 

Ahora todos sus enlaces con una clase de "nav" están en negrita. Pero en caso de que desee modificar, además, un enlace que todavía será capaz de:

li a.nav { color: red; } 

Ahora todos sus enlaces a.nav contenidos dentro de un elemento de la lista serán rojas y negrita. Es posible hacer esto es javascript, pero tendrías que forzarlo y el mantenimiento sería horrible.

Si usa Javascript para estilos, ¡sus compañeros de trabajo lo golpearán hasta la muerte!

creo que este tipo de habla por sí mismo

Este
5

Css es para el diseño y el estilo de la página.

Javascript es para comportamiento.

Incluso si es posible reemplazar completamente css con javascript, no se considera una práctica estándar y la mayoría de los desarrolladores web no lo considerarán bien.

El buen desarrollo web siempre asume que un cliente puede tener javascript desactivado y proporcionará una configuración predeterminada elegante. Reemplazar css con javascript puede hacer esto imposible.

4

Está lejos de ser una práctica común, de hecho, probablemente se consideraría una mala práctica.

CSS se utiliza para establecer los estilos de la página y se representa cuando se carga la página. Javascript entra en juego después de cargar la página y puede manipular los estilos y la página existentes.

¡Si lo pusiera en todos los JS sería enormemente ineficiente! La manipulación DOM se vuelve costosa si lo haces mucho en JS, y hacer todos los estilos en javascript en lugar de CSS sería mucha manipulación. La carga en el cliente sería ridícula y probablemente habría un retraso notable en el cliente al intentar hacer todos esos cambios. Además, ¿qué sucede si un cliente tiene JavaScript desactivado? Ahí va la apariencia de todo tu sitio.

Piense en CSS como una definición de cómo se ve y se debe representar la página, y luego piense en JS como el cambio de esa página una vez realizada. No debe insertar nada en un javascript que pueda hacer con un simple estilo CSS por adelantado.

2

La única vez que debe usar JavaScript para establecer las propiedades de estilo es cuando necesita cambiar el estilo en tiempo de ejecución. Siempre debe usar CSS para el peinado que sea posible porque:

  • CSS tiende a ser implementado mucho más consistente a través de navegadores de JS
  • Un usuario puede tener JS discapacitados
  • El "código" definir el peinado en CSS es mucho más terser, y más fácil de leer/escribir que el código JS equivalente
3

Los problemas reales con el cambio de su CSS para javascript serían la capacidad de mantenimiento y el rendimiento. CSS hace que sea muy sencillo encontrar un estilo único de elementos y cambiarlo, sin afectar al resto de la página. Javascript se volvería engorroso en el mejor de los casos incluso para una página simple, y completamente inmanejable para una página más compleja.

Por el lado del rendimiento, cada vez que se ejecute javascript, su página se "congelará". Teniendo en cuenta una página con 1000 elementos necesarios, su tiempo de ejecución puede crecer fácilmente a un minuto o más, dependiendo de la complejidad del diseño. CSS manejaría esto de forma nativa y sin ninguna "congelación" de su navegador.Esto haría que tu página no se pueda utilizar durante el primer momento que una persona visite, y (según las estadísticas) solo tienes 10 segundos para captar la atención de tu espectador antes de que pierda el interés en tu página y te vayas, lo que significa que conduces todos tus nuevos visitantes

Cuestiones relacionadas