Transform centering
CSS, Layout, Beginner

Vertically and horizontally centers a child element within its parent element using position: absolute and transform: translate() (as an alternative to flexbox or display: table). Similar to flexbox, this method does not require you to know the height or width of your parent or child so it is ideal for responsive applications.

  • position: absolute on the child element allows it to be positioned based on its containing block.
  • left: 50% and top: 50% offsets the child 50% from the left and top edge of its containing block.
  • transform: translate(-50%, -50%) allows the height and width of the child element to be negated so that it is vertically and horizontally centered.
  • Note that the fixed height and width on parent element is for the demo only.
<div class="parent">
                                                <div class="child">Centered content</div>
                                              </div>
.parent {
                                                border: 1px solid #333;
                                                height: 250px;
                                                position: relative;
                                                width: 250px;
                                              }
                                              
                                              .child {
                                                left: 50%;
                                                position: absolute;
                                                top: 50%;
                                                transform: translate(-50%, -50%);
                                                text-align: center;
                                              }

Ⓒ Repository by Code Honchos