CSS设置div居中的方法
在CSS中,有多种方法可以设置div元素居中,本文将介绍以下几种常用的方法:
1、水平居中
2、垂直居中
3、水平垂直居中
4、绝对居中
5、相对居中
6、表格单元格居中
7、Flexbox布局居中
8、Grid布局居中
9、使用text-align属性居中
水平居中
水平居中是最常见的居中方式,可以通过设置父元素的margin: auto;
实现,示例代码如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>水平居中</title> <style> .parent { width: 300px; height: 100px; background-color: red; margin: auto; } </style> </head> <body> <div class="parent">我是水平居中的div</div> </body> </html>
垂直居中
垂直居中需要借助伪元素::before
或::after
,通过设置其宽度和高度为100%,再设置负的margin值实现,示例代码如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>垂直居中</title> <style> .parent::before { content: ""; width: 100%; height: 100%; background-color: red; margin-top: -50%; /* 注意这里是一个负值 */ position: absolute; } </style> </head> <body> <div class="parent">我是垂直居中的div</div> </body> </html>
水平垂直居中
水平垂直居中是同时实现水平和垂直居中的一种方法,可以通过设置父元素的position
属性为relative
,然后设置子元素的position
属性为absolute
,并分别设置其left
和top
属性为50%实现,示例代码如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>水平垂直居中</title> <style> .parent { position: relative; width: 300px; height: 100px; background-color: red; } .child { position: absolute; left: 50%; /* 注意这里是一个负值 */ top: 50%; /* 注意这里是一个负值 */ transform: translate(-50%, -50%); /* 将元素向左上角移动自身宽高的一半 */ } </style> </head> <body> <div class="parent">我是水平垂直居中的div</div> </body> </html>
绝对居中和相对居中的区别与联系
绝对居中和相对居中都是通过设置元素的position
属性来实现的,但它们的应用场景略有不同,绝对居中是通过设置元素的left
和top
属性为50%实现的,适用于已知容器大小的情况,相对居中是通过设置元素的left
和top
属性为父元素宽度和高度的一半实现的,适用于未知容器大小的情况,示例代码如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>绝对居中和相对居中</title> </head> <body> .absolute-center, /* 为绝对居中的类名 */{ /* ... */} /* 为绝对居中的样式 */ /* ... */ /* 为相对居中的类名 */{ /* ... */} /* 为相对居中的样式 */ /* ... */ </body></html> > div{position:relative;} > span{position:absolute;left:50%;transform:translateX(-50%);} > div{position:absolute;top:50%;transform:translateY(-50%);} > div{position:absolute;left:10px;top:10px;} > span{font-size:24px;line-height:48px;} > div{font-size:36px;line-height:72px;} > div{font-size:24px;line-height:48px;} > span{font-size:36px;line-height:72px;} > div{font-size:24px;line-height:48px;} > span{font-size:36px;line-height:72px;} > div{font-size:24px;line-height:48px;} > span{font-size:36px;line-height:72px;} > div{font-size:24px;line-height:48px;} > span{font-size:36px;line-height:72px;} > div{font-size:24px;line-height:48px;} > span{font-size:36px;line-height:72px;} > div{font-size:24px;line-height:48px;} > span{font-size:36px;line-height:72px;} > div{font-size:24px;line-height:48px;} > span{font-size:36px;line-height:72px;} > div{font-size:24px;line-height:48px;} > span{font-size:36px;line-height:72px;} > div{font-size:24px;line-height:48px;} > span{font-size:36px;line-height:72px;} > div{font-size:24px;line
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/191244.html