CSS笔记(一)——垂直居中

垂直居中

  • 使用计算方式实现
main {
    position: absolute;
    top: calc(50% - 3em);
    left: calc(50% - 9em);
    width: 18em;
    height: 6em;
}
  • 使用CSS3的 transform。可以在transform中的translate()使用百分比,让元素移动相对于自身的宽度和高度
main {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

一个小例子:div里有另一个div,你需要垂直居中,那么就给里面的div设置以上属性,然后给父div设置relative(不脱离文档流,但top等有效)
缺点:
绝对定位通常不是一个很好的方法,对整体布局影响太大

  • 视窗单位解决方案
main {
    width: 18em;
    padding: 1em 1.5em;
    margin: 50vh auto 0;
    transform: translateY(-50%);
}

有用性是有极限的,因为它只适用于元素在视窗中垂直居中

  • Flexbox解决方案:在需要垂直居中的父元素上设置display:flex和在垂直居中的元素上设置margin:auto
body {
    display:flex;
}
main {    
    margin: auto;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,796评论 1 92
  • 1.绝对定位居中技术 我们一直用margin:auto实现水平居中,而一直认为margin:auto不能实现垂直居...
    DecadeHeart阅读 1,621评论 0 3
  • 由于最近经常锻炼身体,胳膊腿筋都有些疼了,到我坚持,相信自己!拍打操我一般上午做。围着公园行走1小时,很有成就感!...
    天堂雨_479f阅读 269评论 1 1
  • 听说,电影《你的名字》又火了。 只是看到这电影的片名,就很想去看这部电影,可是内心却又在怕着什么,怕什么呢?怕忆起...
    一颗仙人掌阅读 400评论 0 0
  • 我愿意 愿意在周一的清晨做一份你醒来就能吃的早餐。 我愿意 愿意在周二的上午跟你你讨论着你向往的美好。 我愿意 愿...
    图爱阅读 452评论 0 0