页脚覆盖页内容

时间:2019-04-25 20:15:59

标签: html html5 bootstrap-4

我正在this的个人小项目中使用Django作为后端,并在前端进行引导。

Here,您可以找到显示我的问题的印刷品。 问题是:该列表在“ Diadema”项下面有一个项,但是我的页脚被覆盖,并且没有出现滚动条。

我是新手,可能不应该使用固定底部的页脚,而应该使用“始终位于页面底部”。

我没有找到这个问题的答案,请帮助我。

这里有一些有用的文件:

  • style.css
.custom-link {
    color: #ffffff;
}
a:visited{
    color: #ffffff;
}
a:hover{
    color: #a3a3a3;
}
a:active{
    color: #a3a3a3;
}

.custom-footer {
  position: fixed;
  left: 0;
  bottom: 0;
  width: 100%;
  background-color: #00702e;
  color: white;
  text-align: center;
}

.footer-row-1{
    padding-top: 3px;
    padding-bottom: 13px
}

.footer-row-2{
    padding-top: 10px;
}
  • 页面本身:
{% extends "base.html" %}
{% load static %}
{% block title %}
<title>Listagem | Aliens </title>
{% endblock %}
{% block navbar %}
<div class="collapse navbar-collapse justify-content-between" id="navbarNav">
    <ul class="navbar-nav ml-auto">
        <li class="nav-item">
            <a class="nav-link" href="{% url 'aliens:home' %}">Home <span class="sr-only"></span></a>
        </li>
        <li class="nav-item">
            <a class="nav-link" href="{% url 'aliens:register' %}">Cadastro</a>
        </li>
        <li class="nav-item active">
            <a class="nav-link" href="{% url 'aliens:alien_list' %}">Listagem</a>
        </li>
        <li class="nav-item ">
            <a class="nav-link " href="{% url 'aliens:alien_counter' %}">Sumário</a>
        </li>
    </ul>
</div>
{% endblock %}

{% block content %}
<div class="container-fluid">
    <div class="row"><div class="col"><br><br></div></div>
    <div class="row">
        <div class="col-3"></div>
        <div class="col-6">
            <table class="table table-bordered table-hover ">
                <thead align="center">
                    <th>Cidade</th>
                    <th>Estado</th>
                    <th>Data</th>
                </thead>
                {% for alien in aliens %}
                <tr align="center">
                    <td>{{ alien.city }}</td>
                    <td>{{ alien.state_name }}</td>
                    <td>{{ alien.date }}</td>
                </tr>
                {% endfor %}
            </table>
        </div>
        <div class="col-3"></div>
    </div>
</div>

{% endblock %}
  • 这里是拥有页脚base.html页面的html:
{% extends "base.html" %}
{% load static %}
{% block title %}
<title>Listagem | Aliens </title>
{% endblock %}
{% block navbar %}
<div class="collapse navbar-collapse justify-content-between" id="navbarNav">
    <ul class="navbar-nav ml-auto">
        <li class="nav-item">
            <a class="nav-link" href="{% url 'aliens:home' %}">Home <span class="sr-only"></span></a>
        </li>
        <li class="nav-item">
            <a class="nav-link" href="{% url 'aliens:register' %}">Cadastro</a>
        </li>
        <li class="nav-item active">
            <a class="nav-link" href="{% url 'aliens:alien_list' %}">Listagem</a>
        </li>
        <li class="nav-item ">
            <a class="nav-link " href="{% url 'aliens:alien_counter' %}">Sumário</a>
        </li>
    </ul>
</div>
{% endblock %}

{% block content %}
<div class="container-fluid">
    <div class="row"><div class="col"><br><br></div></div>
    <div class="row">
        <div class="col-3"></div>
        <div class="col-6">
            <table class="table table-bordered table-hover ">
                <thead align="center">
                    <th>Cidade</th>
                    <th>Estado</th>
                    <th>Data</th>
                </thead>
                {% for alien in aliens %}
                <tr align="center">
                    <td>{{ alien.city }}</td>
                    <td>{{ alien.state_name }}</td>
                    <td>{{ alien.date }}</td>
                </tr>
                {% endfor %}
            </table>
        </div>
        <div class="col-3"></div>
    </div>
</div>

{% endblock %}

1 个答案:

答案 0 :(得分:3)

解决方案1(display: flexbox

此解决方案是如果您希望布局始终占据页面的全部空间。

html,
body {
  height: 100%;
}

body {
  margin: 0;
  color: white;
  display: flex;
  flex-direction: column;
}

.content {
  background-color: blue;
  flex: 1 0 auto;
}

.footer {
  background-color: red;
  flex: 0 0 auto;
}
<div class="content">Body Content</div>
<div class="footer">Footer Content</div>

解决方案2(position: fixed

您的问题是您使用了position: fixed-这样做是将元素放在所有其他元素之上,就好像它没有嵌套在任何东西内部一样。如果需要这种情况,则需要一个固定高度的页眉和页脚,然后可以使用calc()确定正文的允许大小。

以下是带有可滚动正文的示例:

body {
  color: white;
  margin: 0;
}

.header {
  height: 50px;
  background-color: blue;
}

.body {
  height: calc(100vh - 50px - 75px);
  overflow: auto;
  background-color: red;
}
  .body .body-content {
    height: 2000px;
    position: relative;
  }
  .body .body-content .body-content-bottom {
    position: absolute;
    bottom: 0;
    left: 0;
  }

.footer {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  height: 75px;
  width: 100%;
  background-color: green;
}
<div class="header">Header</div>
<div class="body">
  <div class="body-content">
    Body Content
    <div class="body-content-bottom">You have reached the bottom!</div>
  </div>
</div>
<div class="footer">Footer</div>

这也是一个带有静态标头的标签(请注意,在这种情况下标头 不需要为固定高度):

body {
  color: white;
  margin: 0;
}

.top {
  overflow: auto;
  max-height: calc(100vh - 75px);
  position: relative;
}

.header {
  background-color: blue;
}

.body {
  background-color: red;
  height: 2000px;
  position: relative;
}
  .body .body-content-bottom {
    position: absolute;
    bottom: 0;
    left: 0;
  }

.footer {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  height: 75px;
  width: 100%;
  background-color: green;
}
<div class="top">
  <div class="header">Header</div>
  <div class="body">
    Body Content
    <div class="body-content-bottom">You have reached the bottom!</div>
  </div>
</div>
<div class="footer">Footer</div>