Footer fijo al fondo, solución en CSS puro

Hola, entusiastas de Discourse,

Quiero compartir con ustedes mi solución de pie de página fijo, sin necesidad de JavaScript (una alternativa a esta solicitud), asumiendo que conocen la altura de su pie de página. Le di el mío 100 píxeles adicionales solo para tener algo de espacio entre el contenido y el pie de página.
En caso de que tenga un pie de página más grande con varias columnas, debería asignar una altura fija diferente en su pestaña móvil.

Paso 1: Pegue esto dentro de su pestaña CSS común

body {
  position: relative;
}

#main {
  margin-bottom: 350px; /* es igual a la altura del pie de página; cámbielo según lo necesite, tanto en común como en su pestaña móvil */
}

#sticky-footer {
  padding: 50px 0;
  background: var(--header_background);  /* opcional */
  color: var(--primary-medium); /* opcional */
  text-align: center; /* opcional */
  position: absolute;
  bottom: 0;
  width: 100%;
  left: 0;
}

Paso 2: Vaya a su pestaña \u003c/body\u003e y pegue su HTML de pie de página dentro

Ejemplo:

\u003cdiv id="sticky-footer"\u003e
  \u003cdiv class="wrap"\u003e
      \u003c!-- su contenido de pie de página aquí --\u003e
  \u003c/div\u003e
\u003c/div\u003e

Eso es todo :slightly_smiling_face:. Ahora su pie de página se mantendrá pegado en la parte inferior de su página, incluso en páginas con contenido corto.

Así es como se ve nuestro pie de página en una página con contenido corto:

De lo contrario, se colocaría en el medio de la pantalla, así:

3 Me gusta

¿Por qué usar esto en lugar del componente de tema estándar del pie de página de Discourse?

1 me gusta

Me lo dices tú, Jeff :slight_smile: … ¿necesitamos instalar componentes por cada trozo adicional de código HTML y CSS?
Esto no es un tutorial de “cómo crear un pie de página”, sino más bien una solución alternativa rápida para que el pie de página se quede pegado en la parte inferior de la página, para aquellos que quieran crear su propio pie de página.

Hmm, mi pensamiento es que queremos que la gente utilice los componentes del tema siempre que sea posible, ya que son “oficiales” de nosotros y, por lo tanto, reciben soporte completo, se actualizan automáticamente, etc. ¿Qué opinan @awesomerobot, @Johani y @jordan.vidrine?

2 Me gusta

Sí, si el componente de pie de página oficial se ajusta a tus necesidades, es genial porque lo mantenemos actualizado para ti, pero algunas personas querrán un diseño diferente.

He hecho algo similar en el pasado… es un proceso parecido al de OP. Estableces la altura de #main-outlet para que sea el 100% de la altura de la ventana gráfica (100vh) menos la altura del pie de página y del encabezado. Así, en páginas cortas, tu pie de página se situará justo en la parte inferior.

#main-outlet {
  box-sizing: border-box; // incluye el relleno en el cálculo de la altura
}
<script type="text/x-handlebars" data-template-name="/connectors/below-footer/my-footer">
  Contenido de mi pie de página
</script>

<script type="text/discourse-plugin" version="0.8">
    api.decoratePluginOutlet(
      "below-footer",
      (elem, args) => {
          let headerHeight = document.querySelector(".d-header").offsetHeight;
          let footerHeight = document.querySelector(".below-footer-outlet").offsetHeight;
          let mainOffset = headerHeight + footerHeight;
          
          document.querySelector("#main-outlet").style.minHeight = "calc(100vh - " + mainOffset + "px)";
      }
   );
</script>

Esto surge con suficiente frecuencia como para que probablemente valga la pena hacer algo así en el núcleo automáticamente si hay contenido en footer.html o en cualquiera de los dos outlets de plugins de pie de página.

4 Me gusta

@cosdesign, ¿dónde está esa pestaña CSS si no te importa que te pregunte, tío? :slight_smile:

Para tu tema predeterminado, lo encontrarías yendo al botón Editar CSS/HTML:

Aunque sería mejor crearlo como un componente de tema en su lugar. (haz clic en el botón de instalación y en ‘crear nuevo’ desde allí)

Hay más información en Developing Discourse Themes & Theme Components :+1:

2 Me gusta

genial :slight_smile:

1 me gusta