CSS 元素居中

1) vertical-align 属性
  • 只适用于displayinline或者inline-block的元素
  • text-align属性不同,vertical-align属性写在子元素里面

原文:
Vertical align only works for inline,inline-blocks,images,and table elements.
It has to be applied on the child element, as oppose to the parent element, unlike text-align.

2) text-align 属性
3) margin: 0 auto; 属性

盒子模型是说HTML中的每个元素都是被包围在一个盒子里面的,这个盒子有四个方面的内容,一个是content,一个是border,在border和content之间就是padding的距离,而border与父容器之间的距离称为margin。这样来记的话就不会混淆margin和padding了。
我们通常设定的width和height其实都是盒子的宽度,更具体的说是border的宽和高。因为margin是对外的,而padding是对内的。所以,我们经常会看到居中对齐的时候会出现margin:0 auto,意思是距父容器顶部距离为0px,而左右下三部分自动调整。
这也就是我们只见过margin:0 auto,却没见过padding:0 auto的原因。因为padding是对内的,padding的调整对盒子在整个页面中的位置根本不能起任何作用。

如果使用margin:0 auto不好使,那么有一个很常见的原因是没有写width。为啥没标明width,margin就不起作用呢?实际上,margin不是没起作用,而是你没看到它起作用。因为如果没著名width的话,那么子容器的宽度会自动充满父容器的宽度。而高度会根据子容器中元素内容的多少而撑开。
这样一来的话,如果width等于父容器的宽度,那么就本来是已经居中的了。
不仅如此,我们可以自己试验一下,如果width设置的比较大(远大于内容的宽度),那么当使用margin属性时会看到内容并没有居中,为啥?因为width太大了,而子容器现在已经是居中的了,但是容器内部的元素并没有居中。
那如何让内容居中呢?我能想到的办法就是让子容器的宽度减少,或者在父元素中写text-align:center将子容器内容居中。

更详细的原文转载戳这里

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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,865评论 1 92
  • 居中解决方案。居中是前端经常面临的问题,居中分为水平居中和垂直居中,而以垂直居中更难。 水平居中 行内元素只需要在...
    清水芦苇阅读 404评论 0 0
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    wzhiq896阅读 1,832评论 0 2
  • 丁酉年六月末,一秋逝,离人未归。痛心难当,酤亦难止。夜不能寐,遂赋此书,当怀佳人,亦舒己心。 失...
    沽小酒阅读 538评论 0 1
  • 与其一直担心会失败,丢脸,没有好好规划再行动,一直忐忑没有明确目标,理想,沉浸在思考的痛苦中,不去现在立刻马上行动...
    那个笨蛋路飞阅读 139评论 0 0