How can I add a footer at the end of this website?

Viewed 84

I am trying to create a footer at the end of this website but for some reason it appears above the products :

bad footer screenshot

And when I change the browser size :

resized page screenshot

But I want a footer like this :

good footer screenshot

Here is my code :

HTML :

{% load static %}
<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet"   href="{% static 'main.css' %}">
</head>
<body style="background-color: #36454F;">
    {% for i in p%} 
 
    <div class='card'>
      <div class="number">{{i.Number}}</div>
      <img src="{{i.image}}"></img>
      <p id="id">{{i.description}}</p>
      <a href="{{i.buy}}" target='_blank' rel='noopener noreferrer'>
        <button><span class="price"> ${{i.price}}</span> buy</button>
      </a>
    </div>
 
    {%endfor%}
    
    <div class="footer">
        <h3>hello</h3>
    </div>
</body>
</html>

CSS :

.card {
  max-width: 400px;
  margin: 0auto;
  text-align: center;
  font-family: arial;
  border-style: solid;
  border-width: 6px;
  position:  relative;
  top: 611px;
  margin-bottom: 33px;
  margin-right: 33px;
  justify-content: center;
  float: left;
}

.footer {
  position: relative;
  height: 130px;
  clear: both;
  background-color: red;
}

.card img {
  height: 400px;
  width: 400px;
  vertical-align: middle;
}

.price {
  background-color: #f44336;
  font-size:22px;
  border-radius: 3px;
  position: absolute;
  bottom: 0px;
  right: 0px;
  padding: 3px;
}

.card button {
  border: none;
  color: white;
  background-color: #000;
  position: relative ;
  cursor: pointer;
  width: 100%;
  height: 100px;
  font-size: 44px;
  align-items: center;
}

.card button:hover {
  opacity: .5;
  background-color: #330;
}

#id {
  background-color: palevioletred;
  color: white;
  margin: 0;
  font-size: 17px;
}

.number {
  width: 50px;
  height: 50px;
  background-color: #330;
  color: yellow;
  border-radius: 50%;
  position: absolute;
  top: -22px;
  right: -22px;
  justify-content: center;
  align-items: center;
  display: flex;
  font-size: 22px;
}

@media (max-width: 1864px) {
  .card {
    max-width: 300px;
  }

  .price {
    font-size:20px;
  }

  .card img {
    height: 300px;
    width: 300px;
  }
}

I tried to set a negative bottom property to push it to the end :

.footer {
  position: relative;
  bottom: -674px;
  height: 130px;
  clear: both;
  background-color: red;
}

But it didn't help. How can i solve the problem?

3 Answers

To set the footer to the bottom of the page, you need to use this CSS:

.footer {
   position:absolute;
   bottom:0;
   width:100%;
   height:60px;   /* Height of the footer */
   background:#6cf; /* Set your own background */
}

If you want it to stay at the bottom of the page and stretch along the bottom, I'd do something like this with the CSS

.footer {
position: fixed;
left: 0;
bottom: 0;
width: 100%;
background-color: (whatever you want);
color: (color of the text, whatever you want);
text-align: center; /*unless you want the text aligned differently*/
}

Also look up how to use the grid-container if you want the items of the footer in rows like the example you gave.

You need the footer tag to do its job!

Read more about the footer tag here: https://www.geeksforgeeks.org/html5-footer-tag/

Reference: https://code-boxx.com/keep-html-footers-at-bottom/


The easy ways to keep a footer at the bottom with modern CSS are:

  1. Use footer { position: fixed} or footer { position: sticky } to keep the at the bottom.

  2. Use a flexbox layout that "stretches" the body section, keep the footer at the bottom.

    body{ display: flex; flex-direction: column; }

    main{ flex-grow: 1; }

  3. Lastly, use a grid layout to achieve the same "stretch body section".

    <header>HEAD</header> <main>MAIN</main> <footer>FOOT</footer>

    html, body { height: 100%;}

    body { disply: grid; grid-template-rows: auto 1fr auto; }

Related