How to put two buttons at center of screen

I have two buttons in my code and wondering how can I move them to the center of the screen using CSS.I tried playing around with the padding: 10px 24px 24px 30px; but it doesn’t seem to be putting the two buttons at the center of the screen. Also, I want them to be responsive.

Also, using margin:auto seems to be putting it at the center but then the margin-bottom:50px doesn’t work.

Here is the JSFiddle: https://jsfiddle.net/walker123/0n8wxcev/9/

Also, pasting my code below:

CSS:

/* .btn-group button {   */
        .btn-group-vertical button { 
      background-color: #0b0e0d; /* Black background */
      border: 1px solid rgb(239, 240, 239); /*  border */
      color: white; /* White text */
      padding: 20px 24px 24px 30px; /* Some padding top right bottom left */
      cursor: pointer; /* Pointer/hand icon */
      width: 50%; /* Set a width if needed */
      display: block; /* Make the buttons appear below each other */
      font-weight: bold;
      font-size: 14px;
      text-transform: uppercase;
      margin-bottom: 50px;
     /*  margin: auto */
    }
    
    .btn-group button:not(:last-child) {   
      border-bottom: none; /* Prevent double borders */
    }

    
    /* Add a background color on hover */
    /* .btn-group button:hover { */
    .btn-group-vertical button:hover {    
      background-color: #ffffff; 
      color: #0b6d11;
    }

Here is HTML:

<div  >
        <div >
            <div class="btn-group-vertical"> 
                    <button type="button" id = "stbButton " '">First Button</button>
                    <button type="button" id = "cdbButton"  >Second Button</button>
             </div> 
         </div>
      </div>

Put margin:auto before margin-bottom:50px (or use margin: 0px auto 50px).

There is unwanted code before First Button.

That still shows at the top : https://jsfiddle.net/walker123/0n8wxcev/10/show

So you could make the div flex and use flex box. Then make the div height 100vh.

display: flex;
flex-direction: column;
justify-content: center;
height: 100vh;

That worked fine when playing around with your js fiddle.

2 Likes

Thanks. One more question - if I have to put both the buttons side by side and not on top of each other. and still, put them on the center of the screen , is changing display: inline enough? It seems to be putting it at top left and not at the center as shown in the JS fiddle

https://jsfiddle.net/walker123/0n8wxcev/15/

No, you can’t apply dimensions to inline elements.

Just use flex but remove the column.

e.g.

html,body{margin:0;padding:0;}
.btn-group-vertical {
  display: flex;
  align-items: center;
  justify-content: center;
 /* flex-direction:column;*/
 min-height:100vh;
}

I also suggest using min-height otherwise the element will be cut off if you add other stuff into a small viewport. Also you were 8px out because you didn’t negate the margin on the body.

1 Like

Thanks @PaulOB . Working fine after making the changes you suggested. I want to make buttons very big to cover the half screen so that should be possible with the padding I believe.
https://jsfiddle.net/walker123/0n8wxcev/21/show

If you mean half the width and the height then play around with this.

.btn-group-vertical button {width:48vw;max-width:none;min-height:50vh;margin:0;}

1 Like