博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何实现CSS居中?–CSS居中常用方法
阅读量:4286 次
发布时间:2019-05-27

本文共 4201 字,大约阅读时间需要 14 分钟。

来源:

一、水平居中

      1、内联元素居中:相对父级块级元素居中对齐

1: .center-children {
2:   text-align: center;
3: }
 
      2、块级元素居中:设置margin-left和margin-right为auto让它居中(同时还要设置width,否则它就会承满整个容器,无法看出居中效果)
1: .center-me {
2:   margin: 0 auto;
3: }

 

如果有很多块级元素需要水平居中成一行,最好使用一个不同的display类型。这是一个使用inline-block和flex的例子。

演示地址:

1: 
2:   
3:     I'm an element that is block-like with my siblings and we're centered in a row.
4:   
5:   
6:     I'm an element that is block-like with my siblings and we're centered in a row. I have more content in me than my siblings do.
7:   
8:   
9:     I'm an element that is block-like with my siblings and we're centered in a row.
10:   
11: 
12: 
13:   
14:     I'm an element that is block-like with my siblings and we're centered in a row.
15:   
16:   
17:     I'm an element that is block-like with my siblings and we're centered in a row. I have more content in me than my siblings do.
18:   
19:   
20:     I'm an element that is block-like with my siblings and we're centered in a row.
21:   
22: 

css:

1: body {
2:   background: #f06d06;
3:   font-size: 80%;
4: }
5: main {
6:   background: white;
7:   margin: 20px 0;
8:   padding: 10px;
9: }
10: main div {
11:   background: black;
12:   color: white;
13:   padding: 15px;
14:   max-width: 125px;
15:   margin: 5px;
16: }
17: .inline-block-center {
18:   text-align: center;
19: }
20: .inline-block-center div {
21:   display: inline-block;
22:   text-align: left;
23: }
24: .flex-center {
25:   display: flex;
26:   justify-content: center;
27: }

二、垂直居中

       1、内联元素:设置相等的上下padding,或者利用line-height

1: .link {
2:   padding-top: 30px;
3:   padding-bottom: 30px;
4: }

文本不会换行的情况下,可以使用line-height,让其与height相等去对齐文本。

1: .center-text-trick {
2:   height: 100px;
3:   line-height: 100px;
4:   white-space: nowrap;
5: }
 
多行的文本也可以利用上下等padding的方式也可以让多行居中,但是如果这方法没用,你可以让这些文字的容器按table cell模式显示,然后设置文字的vertical-align属性对齐,
演示地址:
html:
1: 
2:   
3:     
4:       I'm vertically centered multiple lines of text in a real table cell.
5:     
6:   
7: 
8: 
9:   

I'm vertically centered multiple lines of text in a CSS-created table layout.

10: 

css

1: body {
2:   background: #f06d06;
3:   font-size: 80%;
4: }
5: table {
6:   background: white;
7:   width: 240px;
8:   border-collapse: separate;
9:   margin: 20px;
10:   height: 250px;
11: }
12: table td {
13:   background: black;
14:   color: white;
15:   padding: 20px;
16:   border: 10px solid white;
17:   /* default is vertical-align: middle; */
18: }
19: .center-table {
20:   display: table;
21:   height: 250px;
22:   background: white;
23:   width: 240px;
24:   margin: 20px;
25: }
26: .center-table p {
27:   display: table-cell;
28:   margin: 0;
29:   background: black;
30:   color: white;
31:   padding: 20px;
32:   border: 10px solid white;
33:   vertical-align: middle;
34: }

 

     2、块级元素

若元素有固定高度,可以这样垂直居中

1: .parent {
2:   position: relative;
3: }
4: .child {
5:   position: absolute;
6:   top: 50%;
7:   height: 100px;
8:   margin-top: -50px; /* 如果没有使用: border-box; 的盒子模型则需要设置这个 */
9: }

如果不知道元素高度,则这样

1: .parent {
2:   position: relative;
3: }
4: .child {
5:   position: absolute;
6:   top: 50%;
7:   transform: translateY(-50%);
8: }

也可以使用flexbox

1: 
2:   
3:      I'm a block-level element with an unknown height, centered vertically within my parent.
4:   
5: 
1: body {
2:   background: #f06d06;
3:   font-size: 80%;
4: }
5: main {
6:   background: white;
7:   height: 300px;
8:   width: 200px;
9:   padding: 20px;
10:   margin: 20px;
11:   display: flex;
12:   flex-direction: column;
13:   justify-content: center;
14:   resize: vertical;
15:   overflow: auto;
16: }
17: main div {
18:   background: black;
19:   color: white;
20:   padding: 20px;
21:   resize: vertical;
22:   overflow: auto;
23: }

 

三、同时水平和垂直居中

      1、元素有固定高度和宽度:先绝对居中,然后上移和左移50%的宽度即可

1: //这种方案有极好的跨浏览器支持。
2: .parent {
3:   position: relative;
4: }
5: .child {
6:   width: 300px;
7:   height: 100px;
8:   padding: 20px;
9:   position: absolute;
10:   top: 50%;
11:   left: 50%;
12:   margin: -70px 0 0 -170px;
13: }

 

     2、元素的高度和宽度未知或可变的:使用transofrm属性在两个方向都平移负50%

1: .parent {
2:   position: relative;
3: }
4: .child {
5:   position: absolute;
6:   top: 50%;
7:   left: 50%;
8:   transform: translate(-50%, -50%);
9: }

转载地址:http://cwtgi.baihongyu.com/

你可能感兴趣的文章
URL中的特殊字符
查看>>
搭建本地python环境
查看>>
Spring Boot的两种部署方式:jar包和war包
查看>>
Spring Boot日志配置:logback
查看>>
【Vuetify】安装使用(一)
查看>>
【Vuetify】基础(二)
查看>>
JMeter-Web request
查看>>
Hive SQL报错:SemanticException [Error 10004]: Invalid table alias or column reference
查看>>
Hive SQL踩坑记录-NULL判断、字符串拼接、执行报错:Expression not in GROUP BY key
查看>>
【Hive SQL】使用正则表达式做数据清洗
查看>>
学习笔记-集合框架
查看>>
学习笔记-散列表
查看>>
学习笔记-Map映射
查看>>
学习笔记-面向对象思想
查看>>
学习笔记-Java swing
查看>>
单元测试-生成Junit测试类
查看>>
POST编程代码实现
查看>>
关于【端口号被占用的问题的解决办法】
查看>>
FFmpeg视频剪辑拼接
查看>>
简单封装Http的Get和Post请求
查看>>