How do I center a box horizontally and vertically

In everyday web development, we often need to center one box horizontally and vertically in another box. Here are some common ways to do this

Method 1: Use localization (common method, recommended)

The advantage of this method is simple and intuitive. It mainly uses positioning. After positioning elements, margin style is used to adjust elements according to half of their width and height value, so that they are centered

The disadvantage is also obvious, we know the width and height of the child element, if we can’t determine the width and height of the child element, then this method is not very suitable

<! DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, > <title>Document</title> <style>. Parent {width: 500px; height: 500px; border: 1px solid #000; position: relative; } .child { width: 100px; height: 100px; border: 1px solid #999; position: absolute; top: 50%; left: 50%; margin-top: -50px; margin-left: -50px; } < / style > < / head > < body > < div class = "parent" > < div class = "child" > I am a child element < / div > < / div > < / body > < / HTML >Copy the code

Method 2: Use margin: Auto

This method makes use of another feature of positioning. By setting values in the four directions, the element automatically calculates the distance from the four directions

<! DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, > <title>Document</title> <style>. Parent {width: 500px; height: 500px; border: 1px solid #000; position: relative; } .child { width: 100px; height: 100px; border: 1px solid #999; position: absolute; margin: auto; top: 0; left: 0; right: 0; bottom: 0; } < / style > < / head > < body > < div class = "parent" > < div class = "child" > I am a child element < / div > < / div > < / body > < / HTML >Copy the code

Method 3: Run display:table-cell

This method modifies the block-level attributes of the element itself to support vertical alignment

<! DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, > <title>Document</title> <style>. Parent {width: 500px; height: 500px; border: 1px solid #000; display: table-cell; vertical-align: middle; text-align: center; } .child { width: 100px; height: 100px; border: 1px solid #999; display: inline-block; } < / style > < / head > < body > < div class = "parent" > < div class = "child" > I am a child element < / div > < / div > < / body > < / HTML >Copy the code

Method 4: use display: flex; Center both vertical and horizontal

This approach makes important use of the properties of scalable layouts, which are often used in development

<! DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, > <title>Document</title> <style>. Parent {width: 500px; height: 500px; border: 1px solid #000; display: flex; justify-content: center; align-items: center; } .child { width: 100px; height: 100px; border: 1px solid #999; } < / style > < / head > < body > < div class = "parent" > < div class = "child" > I am a child element < / div > < / div > < / body > < / HTML >Copy the code

Method 5: Use Transform

<! DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, > <title>Document</title> <style>. Parent {width: 500px; height: 500px; border: 1px solid #000; position: relative; } .child { width: 100px; height: 100px; border: 1px solid #999; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } < / style > < / head > < body > < div class = "parent" > < div class = "child" > I am a child element < / div > < / div > < / body > < / HTML >Copy the code

Conclusion: The above methods can be used according to the need