skip to Main Content

How to center the login structure in the middle of the page?

import React, {useState} from 'react'
import "./Signin.css"

const Signin = () => {
    const [addClass, setaddClass] = useState("");
  return (
     <div className={`container ${addClass}`} id='container'>
         <div className='form-container sign-up-container'>
            <form>
                <h1>Create Account</h1>
                <input type="text" placeholder='name'/>
                <input type="email" placeholder='email'/>
                <input type="password" placeholder='password'/>
                <button type="submit">Submit</button>

            </form>
         </div>
            <div className="form-container sign-in-container">
              <form>
                <h1>Login</h1>
                <input type="email" placeholder='email'/>
                <input type="password" placeholder='password'/>
                <button type="submit">Submit</button>
              </form>
            </div>
              <div className="overlay-container">
                 <div className="overlay">
                      <div className="overlay-panel overlay-left">
                        <button className="ghost" id="signIn" onClick={() =>setaddClass("")}>Go to Login
                        </button>
                      </div>
                      <div className="overlay-panel overlay-right">
                        <button className="ghost" id="signUp" onClick={() =>setaddClass("right-panel-active")} >Go to Register</button>
                      </div>
                 </div>
              </div>
     </div>
  )
}

export default Signin
.container {
    background: #f6f5f7;
    position: fixed;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
    font-family: "Montserrat", sans-serif;
    height: 100vh;
    margin: -20px 0 50px;
  }
  
  h1 {
    font-weight: bold;
    margin: 0;
  }
  
  
  button {
    border-radius: 20px;
    border: 1px solid #2c143e;
    background-color: #2c143e;
    color: #ffffff;
    font-size: 12px;
    font-weight: bold;
    padding: 12px 45px;
    letter-spacing: 1px;
    text-transform: uppercase;
    transition: transform 80ms ease-in;
  }
  
  button:active {
    transform: scale(0.95);
  }
  
  button:focus {
    outline: none;
  }
  
  button.ghost {
    background-color: transparent;
    border-color: #ffffff;
  }
  
  form {
    background-color: #ffffff;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    padding: 0 50px;
    height: 100%;
    text-align: center;
  }
  
  input {
    background-color: #eee;
    border: none;
    padding: 12px 15px;
    margin: 8px 0;
    width: 100%;
  }
  
  .container {
    background-color: #fff;
    border-radius: 10px;
    box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);
    position: relative;
    overflow: hidden;
    width: 768px;
    max-width: 100%;
    min-height: 480px;
  }
  
  .form-container {
    position: absolute;
    top: 0;
    height: 100%;
    transition: all 0.6s ease-in-out;
  }
  
  .sign-in-container {
    left: 0;
    width: 50%;
    z-index: 2;
  }
  
  .container.right-panel-active .sign-in-container {
    transform: translateX(100%);
  }
  
  .sign-up-container {
    left: 0;
    width: 50%;
    opacity: 0;
    z-index: 1;
  }
  
  .container.right-panel-active .sign-up-container {
    transform: translateX(100%);
    opacity: 1;
    z-index: 5;
    animation: show 0.6s;
  }
  
  @keyframes show {
    0%,
    49.99% {
      opacity: 0;
      z-index: 1;
    }
  
    50%,
    100% {
      opacity: 1;
      z-index: 5;
    }
  }
  
  .overlay-container {
    position: absolute;
    top: 0;
    left: 50%;
    width: 50%;
    height: 100%;
    overflow: hidden;
    transition: transform 0.6s ease-in-out;
    z-index: 100;
  }
  
  .container.right-panel-active .overlay-container {
    transform: translateX(-100%);
  }
  
  .overlay {
    background: #2c143e;
    background: -webkit-linear-gradient(to right, #2c143e, #2c143e);
    background: linear-gradient(to right, #2c143e, #2c143e);
    background-repeat: no-repeat;
    background-size: cover;
    background-position: 0 0;
    color: #ffffff;
    position: relative;
    left: -100%;
    height: 100%;
    width: 200%;
    transform: translateX(0);
    transition: transform 0.6s ease-in-out;
  }
  
  .container.right-panel-active .overlay {
    transform: translateX(50%);
  }
  
  .overlay-panel {
    position: absolute;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    padding: 0 40px;
    text-align: center;
    top: 0;
    height: 100%;
    width: 50%;
    transform: translateX(0);
    transition: transform 0.6s ease-in-out;
  }
  
  .overlay-left {
    transform: translateX(-20%);
  }
  
  .container.right-panel-active .overlay-left {
    transform: translateX(0);
  }
  
  .overlay-right {
    right: 0;
    transform: translateX(0);
  }
  
  .container.right-panel-active .overlay-right {
    transform: translateX(20%);
  }

import React, {useState} from ‘react’
import "./Signin.css"

const Signin = () => {
const [addClass, setaddClass] = useState("");
return (
<div className={container ${addClass}} id=’container’>

Create Account

Submit

        </form>
     </div>
        <div className="form-container sign-in-container">
          <form>
            <h1>Login</h1>
            <input type="email" placeholder='email'/>
            <input type="password" placeholder='password'/>
            <button type="submit">Submit</button>
          </form>
        </div>
          <div className="overlay-container">
             <div className="overlay">
                  <div className="overlay-panel overlay-left">
                    <button className="ghost" id="signIn" onClick={() =>setaddClass("")}>Go to Login
                    </button>
                  </div>
                  <div className="overlay-panel overlay-right">
                    <button className="ghost" id="signUp" onClick={() =>setaddClass("right-panel-active")} >Go to Register</button>
                  </div>
             </div>
          </div>
 </div>

)
}

export default Signin

This is the result I have so far:
Login-screenshot

3

Answers


  1. I want to show you two methods. Both methods fulfill your request. You can choose the one you need. We add the flex property and justifiy-content:center properties as display. Thus, your form is placed in the center.

    First, wrap your container class with a container div. Make a css assignment to it. The example is in the code below.

    React Code:

    return (
    <div className='wrapper'>
        <div className={`container ${addClass}`} id='container'>
              //your codes
           </div>
     </div>
    )
    

    CSS code:

      .wrapper{    
        display:flex;
        justify-content: center;
      }
    

    The second method is that since your container class is already in a root, you can apply this css on the root without add any wrapper.

    CSS Code

      #root{    
        display:flex;
        justify-content: center;
      }
    
    Login or Signup to reply.
  2. display: flexbox; and justify-content: center; in CSS is a good way to center the login structure. Read this post for more info.

    Code:

        .form-container {
            display: flexbox;
            justify-content: center;
            /* add rest of styling code */
        }
    

    Warning! Below Deprecated!
    The center tag can be used to center the text horizontally. The downside to using this is that it is deprecated and may be removed in future versions of HTML.

    Login or Signup to reply.
  3. Ismael Sanchez
    Your CSS was a bit off. In order to show your Signin component on the middle of your screen you can use this CSS

     html, body {
      margin: 0;
      padding: 0;
      height: 100%;
      width: 100%;
    }
    
    
    .container {
      background: #f6f5f7;
      position: fixed;
      display: flex;
      justify-content: center;
      align-items: center;
      flex-direction: column;
      font-family: "Montserrat", sans-serif;
      height: 100vh;
      width: 100vw; /* Full screen width */
      margin: 0;
      overflow: hidden; /* Avoids scrollbars */
    }
    
    h1 {
      font-weight: bold;
      margin: 0;
    }
    
    button {
      border-radius: 20px;
      border: 1px solid #2c143e;
      background-color: #2c143e;
      color: #ffffff;
      font-size: 12px;
      font-weight: bold;
      padding: 12px 45px;
      letter-spacing: 1px;
      text-transform: uppercase;
      transition: transform 80ms ease-in;
    }
    
    button:active {
      transform: scale(0.95);
    }
    
    button:focus {
      outline: none;
    }
    
    button.ghost {
      background-color: transparent;
      border-color: #ffffff;
    }
    
    form {
      background-color: #ffffff;
      display: flex;
      align-items: center;
      justify-content: center;
      flex-direction: column;
      padding: 0 50px;
      height: 100%;
      text-align: center;
    }
    
    input {
      background-color: #eee;
      border: none;
      padding: 12px 15px;
      margin: 8px 0;
      width: 100%;
    }
    
    .container {
      background-color: #fff;
      border-radius: 10px;
      box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);
      position: relative;
      overflow: hidden;
      width: 100%;
      max-width: 100%;
      min-height: 480px;
    }
    
    .form-container {
      position: absolute;
      top: 0;
      height: 100%;
      width: 50%; /* Full width of container */
    }
    
    .sign-in-container {
      left: 0;
      width: 50%;
      z-index: 2;
    }
    
    .container.right-panel-active .sign-in-container {
      transform: translateX(100%);
    }
    
    .sign-up-container {
      left: 0;
      width: 50%;
      opacity: 0;
      z-index: 1;
    }
    
    .container.right-panel-active .sign-up-container {
      transform: translateX(100%);
      opacity: 1;
      z-index: 5;
      animation: show 0.6s;
    }
    
    @keyframes show {
      0%,
      49.99% {
        opacity: 0;
        z-index: 1;
      }
    
      50%,
      100% {
        opacity: 1;
        z-index: 5;
      }
    }
    
    .overlay-container {
      position: absolute;
      top: 0;
      left: 50%;
      width: 50%;
      height: 100%;
    }
    
    .container.right-panel-active .overlay-container {
      transform: translateX(-100%);
    }
    .overlay {
      background: #2c143e;
      background: -webkit-linear-gradient(to right, #2c143e, #2c143e);
      background: linear-gradient(to right, #2c143e, #2c143e);
      background-repeat: no-repeat;
      background-size: cover;
      background-position: 0 0;
      color: #ffffff;
      position: relative;
      left: -100%;
      height: 100%;
      width: 200%;
      transform: translateX(0);
      transition: transform 0.6s ease-in-out;
    }
    
    .container.right-panel-active .overlay {
      transform: translateX(50%);
    }
    
    .overlay-panel {
      position: absolute;
      display: flex;
      align-items: center;
      justify-content: center;
      flex-direction: column;
      padding: 0 40px;
      text-align: center;
      top: 0;
      height: 100%;
      width: 50%;
      transform: translateX(0);
      transition: transform 0.6s ease-in-out;
    }
    
    .overlay-left {
      transform: translateX(-20%);
    }
    
    .container.right-panel-active .overlay-left {
      transform: translateX(0);
    }
    
    .overlay-right {
      right: 0;
      transform: translateX(0);
    }
    
    .container.right-panel-active .overlay-right {
      transform: translateX(20%);
    }
    

    I personally use tailwindcss which is much easier than making a CSS file for each component.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search