Penalización Javascript
1 seguidor
Hola! Estoy diseñando un site modular y en él los módulos se dividen en A y B. Mi pregunta es, ¿penaliza mucho el site si cada módulo calcula si el siguiente es A o B? El motivo es que de A a B pinta un margen y un separador.
Gracias de antemano por la ayuda
Marina Lorenzo
Eso es lo que buscaba! Muchisimas gracias por toda la ayuda!! Quería prescindir de Javascript pero no encontraba una regla que me funcionase. Mil gracias de nuevo!
smalonso Mod
Overkill porque es matar moscas a cañonazos 🙈
Si lo que tienes que hacer es añadir estilos y puedes hacerlo con las reglas de CSS de hoy en día, úsalas. Si lo haces en JS tendrás que añadir una clase al elemento para identificarlo y creas dependencias entre JS y CSS. En código siempre hay que buscar las solucionas más simplificadas y limpias porque cuando un proyecto se escala, luego puede acabar siendo lo que se llama un "spaguetti code".
Te adjunto un ejemplo en Codepen de lo que puedes usar, en este caso el selector "+", lo que hace es identificar el siguiente elemento. He montado una lista con las opciones que has comentado e identificado con colores el elemento seleccionado, lo puedes extrapolar al margen y separador que quieres poner.
Espero que te sirva 🙂
Marina Lorenzo
Hola! Lo primero gracias de nuevo. Entiendo lo que me comentas, el problema es que este margen se añade solo cuando va de un módulo A a un modulo B (de A a A no añade margen, por ejemplo). Por lo que no puedo usar una lógica de: "el segundo módulo del template..." o "el 4º módulo del template....", ya que estos módulos pueden cambiar el orden en cualquier momento desde el gestor y deben respetar estos espacios.
La norma es: si debajo de un modulo A va otro A no añade margen. Si debajo de un módulo B va otro módulo B no añade margen. Si debajo de un módulo A, va un módulo B si añade margen (y además añade un separador). Si debajo de un módulo B, va un módulo A si añade margen. ¿Se te ocurre alguna clase con la que encaje el planteamiento?
¿Cuales son los motivos por el cual te parece overkill? ¿Penaliza el tiempo de carga? ¿Que conlleva crear esta lógica?
Gracias de nuevo
smalonso Mod
Buenos días! :)
Usar JS sólo para añadir un margen es un poco overkill.
Si he entendido bien tu problema, te lo puedes montar con pseudo clases en CSS. Creo que las que te pueden ir bien son: :last-child, :first-child o :nth-child()… depende de tu estructura e intención, que no la conozco. Y tienes más selectores, dale un vistazo a la lista.
:last-child y :first-child te seleccionan el último elemento o el primero de una serie de bloques. Con :nth-child puedes seleccionar varios elementos según la regla que asignes a la pseudo clase, puedes seleccionar elementos pares o impares con :nth-child(odd) o :nth-child(even), también puedes seleccionar un elemento cada N por ejemplo un elemento cada 4 bloques :nth-child(4n)… tienes varias recetas, te diría que le des un vistazo a artículo que publicó CSS tricks hace unos años que és bastante útil.
Estos selectores cambiando un poco de sintaxis también existen en JS por si ya los controlas, tienen el mismo funcionamiento.
Marina Lorenzo
Hola! Gracias por la respuesta. No me refiero a penalización SEO en concreto es más si tiene una penalización a la hora de cargar la pagina o de otro tipo que no este teniendo en cuenta. Se supone que cada modulo tiene que leer si el siguiente es A o B (a través de clases) para que añade un margen. Me pregunto que problemas puede haber y si hay forma de hacerlo sin que sea Javascript.
Gracias!
smalonso Mod
Disculpa pero ¿podrías desarrollar mejor la descripción del problema, ponerlo en contexto?
Si te refieres a penalización SEO, el tema es que no manipules con javascript la navegación principal cargándola con Ajax o manipulando el DOM a posteriori del renderizado de la pagina sin tener el código en el HTML explícito. Los Spiders de Google no serán capaces de leer los enlaces y no podrán seguir el camino de rutas.