Heim  >  Artikel  >  Web-Frontend  >  CSS-Implementierung des Sticky Footer-Tutorials

CSS-Implementierung des Sticky Footer-Tutorials

小云云
小云云Original
2018-01-27 10:10:442053Durchsuche

In diesem Artikel werden hauptsächlich relevante Informationen zum Beispielcode für die Implementierung von Sticky Footer mit CSS vorgestellt. Der Herausgeber findet ihn recht gut, daher werde ich ihn jetzt mit Ihnen teilen und als Referenz geben. Folgen wir dem Herausgeber und schauen wir uns das an. Ich hoffe, es kann allen helfen.

Der sogenannte „Sticky Footer“ ist kein neues Frontend-Konzept und keine neue Technologie. Er bezieht sich auf einen Webseiteneffekt: Wenn der Seiteninhalt nicht lang genug ist, wird der Footer am Ende der Seite fixiert das Browserfenster; Wenn der Inhalt lang genug ist, wird die Fußzeile ganz unten auf der Seite fixiert. Wenn der Inhalt der Webseite jedoch nicht lang genug ist, bleibt die untere Fußzeile am unteren Rand des Browserfensters.

Implementieren Sie die Methode

1. Ändern Sie den Inhalt Teil von Setzen Sie den unteren Rand auf eine negative Zahl

Dies ist eine gängigere Verwendung. Stellen Sie die Mindesthöhe des Inhaltsteils auf 100 % ein und verwenden Sie dann den negativen Wert für den unteren Rand des Inhaltsteils Um dies zu erreichen, wenn die Höhe nicht erreicht wird, bleiben die Seitenfüße am unteren Rand des Fensters und werden herausgeschoben, wenn die Höhe überschritten wird.


<body>
  <p class="wrapper">
      content
    <p class="push"></p>
  </p>
  <footer class="footer"></footer>
</body>html, body {
  height: 100%;
  margin: 0;
}
.wrapper {
  min-height: 100%;
  /* 等于footer的高度 */
  margin-bottom: -50px;
}
.footer,
.push {
  height: 50px;
}

Diese Methode erfordert zusätzliche Platzhalterelemente (z. B. .push) im Container

Es ist zu beachten, dass der Rand unten von . wrapper Der Wert muss mit dem negativen Höhenwert von .footer übereinstimmen, was nicht sehr benutzerfreundlich ist.

2. Stellen Sie den oberen Rand der Fußzeile auf einen negativen Wert ein.

Da Sie für den Container einen negativen Rand unten verwenden können, können Sie auch einen negativen Rand oben verwenden ? Sicher.

Fügen Sie ein übergeordnetes Element außerhalb des Inhalts hinzu und stellen Sie sicher, dass der untere Abstand des Inhaltsteils der Höhe der Fußzeile entspricht.


<body>
  <p class="content">
    <p class="content-inside">
      content
    </p>
  </p>
  <footer class="footer"></footer>
</body>html, body {
  height: 100%;
  margin: 0;
}
.content {
  min-height: 100%;
}
.content-inside {
  padding: 20px;
  padding-bottom: 50px;
}
.footer {
  height: 50px;
  margin-top: -50px;
}

Diese Methode ist jedoch die gleiche wie die vorherige und erfordert das Hinzufügen unnötiger HTML-Elemente.

3. Verwenden Sie das Flexbox-Layout

Die Fußzeilenhöhe der oben genannten drei Methoden ist im Allgemeinen nicht förderlich für das Webseitenlayout: Der Inhalt ändert sich Sie sind beide elastisch und unterbrechen das Layout, sobald der Inhalt die festgelegte Höhe überschreitet. Verwenden Sie also Flexbox für die Fußzeile, damit ihre Höhe größer, kleiner und schöner werden kann ~ (≧∇≦)


<body>
  <p class="content">
    content
  </p>
  <footer class="footer"></footer>
</body>html {
  height: 100%;
}
body {
  min-height: 100%;
  display: flex;
  flex-direction: column;
}
.content {
  flex: 1;
}

Sie können auch eine Kopfzeile oder hinzufügen Fügen Sie unten weitere Elemente hinzu. Sie können eine der folgenden Techniken wählen:

  1. Flex: 1 Machen Sie die Höhe des Inhalts (z. B. .content) frei skalierbar

  2. margin-top : auto

Denken Sie daran, wir haben „The Complete Guide to Flexbox (English)“ ~

4 Die Verarbeitung durch absolute Positionierung sollte eine gängige Lösung sein, solange die Fußzeile immer an der reservierten Platzhalterposition des Hauptcontainers positioniert ist.


Diese Lösung erfordert die Angabe einer 100-prozentigen Höhe von HTML und Text, und der Innenabstand des Inhalts muss mit der Höhe der Fußzeile übereinstimmen. calc, das einfachste.
<p class="wrapper">
    <p class="content"><!-- 页面主体内容区域 --></p>
    <p class="footer"><!-- 需要做到 Sticky Footer 效果的页脚 --></p>
</p>html, body {
    height: 100%;
}
.wrapper {
    position: relative;
    min-height: 100%;
    padding-bottom: 50px;
    box-sizing: border-box;
}
.footer {
    position: absolute;
    bottom: 0;
    height: 50px;
}

Dies ist eine ideale Implementierung, wenn die Kompatibilität von calc()- und vh-Einheiten nicht berücksichtigt werden muss. Das gleiche Problem besteht darin, dass der Höhenwert der Fußzeile mit dem berechneten Wert im Inhalt übereinstimmen muss.

6. Tabelle


Verwenden Sie das Tabellenattribut, um die Seite in Form einer Tabelle anzuzeigen.
<p class="wrapper">
    <p class="content"><!-- 页面主体内容区域 --></p>
    <p class="footer"><!-- 需要做到 Sticky Footer 效果的页脚 --></p>
</p>.content {
    min-height: calc(100vh - 50px);
}
.footer {
    height: 50px;
}

Es ist zu beachten, dass es bei der Verwendung der Tabellenlösung eine allgemeine Stileinschränkung gibt. Normalerweise erfüllen Attribute wie Rand, Abstand und Rand nicht die Erwartungen. Der Autor empfiehlt die Verwendung dieser Lösung nicht. Das Problem lässt sich natürlich auch lösen: Schreiben Sie keine anderen Stile auf den Tisch.

7. Grid-Rasterlayout verwenden

Grid ist viel neuer als Flexbox und es ist besser und einfacher. Wir haben auch „Grid Complete Guide (Englisch)“~

<p class="wrapper">
    <p class="content"><!-- 页面主体内容区域 --></p>
    <p class="footer"><!-- 需要做到 Sticky Footer 效果的页脚 --></p>
</p>html, body {
    height: 100%;
}
.wrapper {
    display: table;
    width: 100%;
    min-height: 100%;
}
.content {
    display: table-row;
    height: 100%;
}

Leider unterstützt das Grid-Layout derzeit nur die Versionen Chrome Canary und Firefox Developer Edition.

Zusammenfassung


Der Autor hat alle oben genannten Implementierungslösungen im Projekt ausprobiert. Jede Implementierungsmethode ist tatsächlich ähnlich und hat auch ihre eigenen Vor- und Nachteile. Einige der Lösungen weisen restriktive Probleme auf und erfordern eine feste Fußzeilenhöhe; andere erfordern das Hinzufügen zusätzlicher Elemente oder Hacking-Methoden. Die Studierenden können basierend auf den spezifischen Anforderungen der Seite die am besten geeignete Lösung auswählen.
<body>
  <p class="content">
    content
  </p>
  <footer class="footer"></footer>
</body>html {
  height: 100%;
}
body {
  min-height: 100%;
  display: grid;
  grid-template-rows: 1fr auto;
}
.footer {
  grid-row-start: 2;
  grid-row-end: 3;
}

Natürlich wird die Technologie ständig aktualisiert und es kann viele verschiedene und bessere Lösungen geben. Aber ich glaube, dass das ultimative Ziel für alle das gleiche ist: eine bessere Benutzererfahrung!

Verwandte Empfehlungen:

Detaillierte Erläuterung des Sticky-Footer-Layouts des klassischen CSS-Layouts

Was ist das Sticky-Footer-Layout?

Detaillierte Erklärung der beiden absoluten Grundroutinen von Sticky Footer

Das obige ist der detaillierte Inhalt vonCSS-Implementierung des Sticky Footer-Tutorials. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn