水平居中与垂直居中

水平居中

inline元素用text-align:center
block元素用margin:0 auto;

垂直居中

Flex弹性盒子

Flex弹性盒子应该是解决垂直居中的最佳方案

main{
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
}

给需要垂直居中的元素的父容器设置display:flex,并指定align-items: center
另外justify-content和flex-direction用于调整这两个子元素水平居中的排列顺序。

absolute绝对定位

思路:设成absolute后,指定top和left为50%,将元素的左上角定位点放到页面正中心。然后用负值margin一半的元素宽高度将元素拉回页面正中心

main{
position: absolute;
width: 18em;
height: 10em;
top: 50%;
left: 50%;
margin-top: -9em;
margin-left: -5em;
}

缺点:
缺点是你需要事先指定元素的width和height,否则无法给负margin设值,显得不够灵活。其实不必固定元素的宽高,改用translate()位移来替代负margin,实现将元素拉回页面正中心。

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

用绝对定位absolute让需要垂直居中的元素脱离文档流,指定top和left各50%将元素左上角定位点设到页面正中心。然后用translate()各负50%,将元素拉回页面正中心。思路和负margin是一致的,优势是不必固定元素的宽高了。缺点是absolute绝对定位威力太大,要考虑是否会对页面布局造成影响。

line-height

元素内容是单行,并且其高度是固定不变的,你只要将其“line-height”设置成和“height”值一样就Ok了。

<div class="vertical">content</div>

.vertical {
    height: 100px;
    line-height: 100px;/*值等于元素高度的值*/
}

优点:
适合在所有浏览器,没有足够空间时,内容不会被切掉

缺点:
仅适合应用在文本和图片上,并且这种方法,当你文本不是单行时,效果极差,差到让你感到恶心。
这种方法对运用在小元素上是非常有用的,比如说让一个button、图片或者单行文本字段。

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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,868评论 1 92
  • CSS实现居中的方法着实不少,在工作中也比较容易实现,本文旨在归纳各种居中的方法,对各种方法有比较清晰的认识,达到...
    zh_yang阅读 823评论 0 0
  • 收听音频,戳链接,旧号itclan已暂停使用,欢迎关注微信itclanCoder公众号可收听更多音频 前言 关于网...
    itclanCoder阅读 8,254评论 3 30
  • 移动开发基本知识点 一.使用rem作为单位 html { font-size: 100px; } @media(m...
    横冲直撞666阅读 3,587评论 0 6
  • 离2017届学生的毕业还有一个多月的时间,我也是其中的一个,回头看过去的这四年,用一个词语来形容,那就是,颓废。 ...
    顾小娜阅读 649评论 12 14