Has dado en el clavo, a eso me referia, creo que es la forma mas común que vienen en algunas web, otras sin embargo hacen la división al revasar el 50% del height del navegador
gracias
Cita: Edito: Creo que ya sé a qué te referías. Quieres que el cambio se de cuando la parte superiore de la sección o división quede encuadrada en la parte superior de la ventana. Bastaría con que, a la resta que hay en la condición, le sumes la altura interna de la ventana (sin la barra de direcciones, de favoritos, etc., solo el contenido) menos la altura del menú. El código quedaría así:
Uso bootstrap que usa <li class="active"> voy a intentar adaptar la siguiente linea buscando ejemplos, aunque solo con js parece complicado comprobar y cambiar un class, veo que cambiar un id es mas facil
Código:
opts[i].style.background = i == j ? "steelblue" : "lightsteelblue";
Buscando me aproximo a esto... voy a probar (aunque me gusta mas tu linea que parece un if)
Código:
if (opts[i].className == "active") {opts[i].className=""}else{opts[i].className="active"}
Quizas... Noto con esta linea que siempre pinta clase=...
Código:
opts[i].className = i == j ? "active" : "";