CSS垂直居中

第一种:基于绝对定位的解决方案

用top,left移动只是将div的左上角移到父元素的正中心,视觉上并没有使div到达中心,所以要配合transform使用。当我们在translate() 变形函数中使用百分比值时,是以这个元素自身的宽度和高度为基准进行换算和移动的。

缺点:如果需要居中的元素已经在高度上超过了视口,那它的顶部会被视口裁切掉。

div {  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%); }

第二种:基于视口单位的解决方案

新的长度单位:vw,vh

1vw=1%的适口宽度

1vh=1%的视口宽度

div {

width: 18em;

padding: 1em 1.5em;

margin: 50vh auto 0;

transform: translateY(-50%);

}

第三种:基于flexbox的解决方案

先给这个待居中元素的父元素设置 display:flex ,再给这个元素自身设置我们再熟悉不过的 margin: auto :

father{ display:flex;min-height:100vh;margin:0;}

child{ margin:auto;

/*以下代码使child的文字也居中

align-items:center; justify-content:center;

*/

}

直接让某div的文字居中,使用属性

{display: flex;

align-items: center;

justify-content: center;}

ps.   min-content也是个很有用的属性 。这个关键字将解析为这个容器内部最大的不可断行元素的宽度(即最宽的单词、图片或具有固定宽度的盒元素)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 44年前我们就把人类送上月球了,但现在我们仍然无法在CSS中实现垂直居中。 在CSS中对元素进行水平居中是非常简单...
    康斌阅读 15,950评论 9 28
  • 对于最流行的表格布局法和行内块法不去考虑,只考虑用最新的现代CSS去实现 基于绝对定位的解决方案 1.早期解决方法...
    咕咚咚bells阅读 270评论 0 0
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,865评论 1 92
  • 标签:css-常用技巧 table-cell 式将 center 元素的父容器设置为 display:table,...
    练晓习阅读 540评论 0 1
  • 何为修道? 青发白袍,宛若林中泉,山间雪,美到极致,也冷到极致。不染烟火,不理尘俗。 何为修道? 她只见那人神色淡...
    青团子喵阅读 401评论 0 1