最全CSS垂直水平居中的方法(十二种)

 1. 第一种方案 子元素高度可以设定也可以不设定

.app{width: 500px;height: 500px;background: greenyellow;display: flex;align-items: center;justify-content: center;}
.app>div{width: 100px;height: 100px; font-size: 20px;background: blueviolet;				
} 


2.第二种方案  绝对定位+margin auto

.app{width: 500px;height: 500px;background: greenyellow;position: relative;}
.app>div{width: 100px;height: 100px;font-size: 20px;background: blueviolet;	position: absolute;top: 0;left: 0;right: 0;bottom:0;margin: auto;
} 


3.第三种方案 绝对定位+  translate 子元素高度可以设定也可以不设定

.app{width: 500px;height: 500px;background: greenyellow;position: relative;}
.app>div{width: 100px;height: 100px;font-size: 20px;background: blueviolet;	position: absolute;top: 50%;left: 50%;transform: translate(-50%,-50%);
}

4.第四种方案   绝对定位+计算属性(CSS3  calc)感谢css3带来了计算属性,既然top的百分比是基于元素的左上角,那么在减去宽度的一半就好了,代码如下

.app {width: 500px;height: 500px;background: greenyellow;position: relative;
}
.app>div{position: absolute;width: 100px;height: 100px;top: calc(50% - 50px);left: calc(50% - 50px);background-color: aliceblue;
}

5.第五种方案  grid网格布局  考虑兼容性问题,不推荐

.app {display: grid;width: 500px;height: 500px;background: greenyellow;
}
.app>div {width: 100px;height: 100px;align-self: center;justify-self: center;background-color: aliceblue;
}

 6.第六种方案 inline 高度就是文字加line-height的高度 局限性在于必须里边的元素是inline否则不生效

.app{width: 500px;height: 500px;background: greenyellow;line-height: 500px;text-align: center;}
.app>div{font-size: 20px;background: blueviolet;	display: inline;				
} 

7.第七种方案 混合 横向利用margin auto,垂直还是利用定位和平移 也不用管里边元素的高度

.app{width: 500px;height: 500px;background: greenyellow;								
}
.app>div{width: 100px;font-size: 20px;background: blueviolet;	position: relative;top: 50%;transform: translateY(-50%);margin-left: auto;margin-right:auto ;
}

8.第八中方案 table  原来盒子的背景颜色被子元素覆盖了,这个方法也是解决多行文字垂直居中的方法

.app{width: 500px;height: 500px;background: greenyellow;display: table;	text-align: center;
}
.app>div{width: 100px;height: 100px;font-size: 20px;background: blueviolet;	display: table-cell;vertical-align: middle;				
} 


9.第九种方案 单行文本好居中 就是让文本的父元素的line-height和高度相同

.app{width: 500px;height: 500px;background: greenyellow;		text-align: center;line-height: 500px;
}
.app>div{width: 100px;height: 100px;font-size: 20px;background: blueviolet;	display: inline;			
} 

10.第十种方案  绝对定位+margin   通过计算宽高,一旦内部元素改变了高度或者宽度将失效

.app {width: 500px;height: 500px;background: greenyellow;position: relative;
}
.app>div {position: absolute;;width: 100px;height: 100px;top: 50%;left: 50%;margin-left: -50px;margin-top: -50px;
}
\

 11. 第十一种方案 最不推荐的方案  通过计算padding 一旦内部元素改变了高度或者宽度,将失效

.app{width: 500px;height: 500px;background: greenyellow;box-sizing: border-box;padding-left: 200px;padding-top: 200px;											
}
.app>div{width: 100px;height: 100px;font-size: 20px;background: blueviolet;	} 

12.第十二种方案 多行文本垂直居中 这里就不水平居中了
除了歌词水平居中之外,其他什么的都不好看。
两种方法:一:

.app{width: 500px;height: 500px;background: greenyellow;		display: table;
}
.app>div{width: 100px;height: 100px;font-size: 20px;background: blueviolet;	display: table-cell;vertical-align: middle;
} 

二:

.app{width: 500px;height: 500px;background: greenyellow;display: flex;align-items: center;justify-content: center;
}
.app>div{width: 100px;font-size: 20px;background: blueviolet;	/* overflow: hidden;text-overflow: ellipsis;word-break: break-all;white-space: pre-line; */}      


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部