居中

水平居中

是否为行内元素

.center-children {
  text-align: center;
}

是否为块级元素

.center-me {
margin: 0 auto;
}

是否有多个块级元素

垂直居中

是否为行内元素

一个

可以设置上下相等的padding来实现居中效果

.link {
padding-top: 30px;
padding-bottom: 30px;
}

当padding不能使用时,可以设置相同的heigh和inline-height来实现居中效果

.center-text-trick {
height: 100px;
line-height: 100px;
white-space: nowrap;
}

多个

当上下padding不起效时,可能是由于table的原因,可以使用 vertical-align属性处理这种情况

vertical-align: middle;

也可以使用flex布局实现垂直居中

.flex-center-vertically {
display: flex;
justify-content: center;
flex-direction: column;
height: 400px;
}

这两种方法只有在父元素有确定高度时生效

如果上述方法均不能使用,可以使用"ghost element"技术,在容器中放置一个伪元素,元素以其为基准进行对齐。

.ghost-center {
position: relative;
}
.ghost-center::before {
content: " ";
display: inline-block;
height: 100%;
width: 1%;
vertical-align: middle;
}
.ghost-center p {
display: inline-block;
vertical-align: middle;
}

是否为块级元素

确定元素高度

网页布局中,我们常常不知道元素的具体高度,比如狂赌改变时,行数也会改变,文字样式也会改变高度。
但如果你可以确定高度,可以使用以下方法进行垂直居中。

.parent {
position: relative;
}
.child {
position: absolute;
top: 50%;
height: 100px;
margin-top: -50px; /* account for padding and border if not using box-sizing: border-box; */
}

不确定元素高度

不确定高度时我们可以使用转化的方法将其居中。

.parent {
position: relative;
}
.child {
position: absolute;
top: 50%;
transform: translateY(-50%);
}

使用flexbox

使用flex布局方便得多。

.parent {
display: flex;
flex-direction: column;
justify-content: center;
}

水平居中与垂直居中

原理与垂直居中类似

元素定宽定高

.child {
width: 300px;
height: 100px;
padding: 20px;

position: absolute;
top: 50%;
left: 50%;

margin: -70px 0 0 -170px;
}

元素不定宽定高

.parent {
position: relative;
}
.child {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}

使用flex

.parent {
display: flex;
justify-content: center;
align-items: center;
}

使用grid

body, html {
height: 100%;
display: grid;
}
span { /* thing to center */
margin: auto;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,687评论 1 92
  • 收听音频,戳链接,旧号itclan已暂停使用,欢迎关注微信itclanCoder公众号可收听更多音频 前言 关于网...
    itclanCoder阅读 12,533评论 3 30
  • 使用 CSS 实现居中效果困难吗?显然不是。实际上有许多方法可以实现居中效果,但在具体情况中,我们往往无法判断哪种...
    啊啊啊满阅读 2,338评论 0 0
  • 1. 前言 前端圈有个“梗”:在面试时,问个css的position属性能刷掉一半人,其中不乏工作四五年的同学。在...
    YjWorld阅读 10,153评论 5 15
  • 过去一年多时间,第一性原理这个词突然就变热了,但是,第一性原理其实最早是由2300 年前古希腊哲学家亚里士多德提出...
    结伴登山阅读 4,795评论 0 0