Actualización reciente rompió mi barra de navegación superior

Una actualización reciente rompió mi barra de navegación superior. Más concretamente, la barra se carga (es visible por un instante), pero luego el encabezado estándar de Discourse se coloca sobre ella y la oculta.

Estoy tratando de averiguar qué sucedió exactamente y/o cómo solucionarlo. ¿Alguien podría orientarme en la dirección correcta?

Al inspeccionar la página en el navegador, descubrí que establecer

.d-header-wrap {
    margin-top: 48px;
}

mueve el encabezado hacia abajo para revelar la barra de navegación (que tiene 48 px de altura) y parece haber solucionado el problema.

Pero no estoy seguro de si esta es una forma sostenible de solucionarlo y también sigo con curiosidad por saber qué sucedió exactamente.

También tuve que eliminar

#main-outlet { margin-top: 48px; padding-top: 75px;}

de mi componente para eliminar el espacio en blanco adicional que apareció bajo el encabezado. Este código ha funcionado bien durante años, así que me pregunto qué provocó que dejara de funcionar…

También eliminé otra cosa, como

#main-outlet.docked {
    margin-top: 0px;
    padding-top: 123px
}

porque no parecía marcar diferencia.

Edición: Lo anterior es cierto para el CSS de escritorio. En móviles, no necesité aumentar el valor Z de la barra de navegación.

2 Me gusta

El encabezado cambió de usar position: fixed a position: sticky (REFACTOR: Remove position fixed from the header and use sticky instea… · discourse/discourse@da5841d · GitHub). Esta es una de las actualizaciones que hemos podido realizar gracias a dejar de dar soporte a IE11.

El cambio mejora algunos pequeños problemas que hemos tenido con el encabezado desde que existe Discourse… funcionalmente, esto significa que, en lugar de estar en una posición fija (y sin relación con la posición de otros elementos en la página), el encabezado ahora forma parte del flujo natural de los elementos en la página… razón por la cual ya no son necesarios el relleno y el margen del main outlet.

Cuando se realizó el cambio inicialmente, había un relleno extra en la versión móvil en el CSS predeterminado, pero eso se corrigió un día o dos después… supongo que actualizaste el día entre el cambio inicial y la corrección; si vuelves a actualizar, debería desaparecer (alternativamente, puedes agregar .mobile-view #main-outlet { padding-top: 0.25em; } si no deseas actualizar nuevamente).

Tu solución con .d-header-wrap me parece sostenible.

5 Me gusta

Véase también Header Submenus - #103 by Mark_Schmucker. No estoy seguro de si la solución sostenible propuesta se aplica a eso, pero creo que están relacionados con el mismo cambio.

1 me gusta

Acabo de actualizar a la última versión (2.8.0.beta4) tras muchos meses de descuido y parece que mi solución no fue tan sostenible (o quizás el problema actual no está relacionado con esta corrección). Actualmente estoy trabajando para averiguar qué pasó y actualizaré aquí en cuanto lo sepa, pero si lo siguiente les suena a alguien, por favor háganmelo saber.

Básicamente, lo que ocurrió es lo mismo que se describe en el mensaje original, excepto que esta vez no es el encabezado de Discourse cubriendo la barra de navegación superior \u003cstrike\u003e sino la barra de navegación superior cubriendo el encabezado de Discourse \u003c/strike\u003e. (edición: ahora creo que el encabezado no está cubierto, sino que no se renderiza en absoluto). Cuando desactivo el tema predeterminado mediante el modo seguro, se muestra correctamente.

Curiosamente, sin embargo, cuando navego a /admin/customize/themes/11/desktop/scss/edit, tanto el encabezado de Discourse como la barra de navegación superior se muestran correctamente (tanto en modo seguro como en modo normal). Creo que la razón por la que no hay diferencia entre el modo seguro y el normal en la página del tema es que el modo seguro no se aplica a algunas de las páginas de administración. Pero lo que no entiendo es por qué todo se muestra correctamente en las páginas de administración y no en las demás.

Otra cosa que no entiendo: cuando accedo al sitio desde mi dispositivo móvil, también se muestra correctamente, incluso cuando solicito explícitamente la versión de escritorio…

Investigaré más a fondo, pero agradecería cualquier pista aquí.

Edición: Esto es lo que veo al inspeccionar una página pública (en modo normal):

Y esto es lo que veo al inspeccionar una página de administración (en modo normal):

Como pueden ver, mi corrección de CSS está presente en ambos casos, pero solo la segunda muestra la página correctamente…

OK, creo que lo he solucionado. El encabezado que desaparecía no estaba relacionado con mi arreglo, sino que fue causado por este componente del tema:

Al eliminarlo, se resolvió el problema. ¿Quizás @Johani entiende qué está causando esto? ¿Quizás esté relacionado con el

Control adicional de iframes en oneboxes

introducido en Discourse Version 2.6 - #2 by neil?