首页 > 技术文章 > 盒子中的一个图片要居中

sarah9008 2015-05-12 18:22 原文

img属性align:top,bottom,middle,left,right。这个已经标注出不推荐使用,不推荐使用的原因是什么呢?


原来,img是内联元素,并非块级元素,它是行内元素。行内元素只能在水平方向给它设置和规定,至于竖直方向是按照文档流生成的,无法对其设置。
也就是说,块级元素都是有大小的,它是一个矩形盒子,长宽都是可以规定的。

浏览器不在乎行内元素的宽度,而是根据它的长度在所处的行中分配占用位置。如果本行长度不够,从下一行从左到右继续占用。

行内元素的width,height均无效padding,margin只有水平方向有效。

所以,置身于一个盒子里面的img元素,使用align:middle规定之后,只是在水平方向居中,无法做到垂直方向的居中。

 

实践1:将img用display:block墙砖转换为块级元素后,发现还是无法使用。

实践2:我把img放在一个空盒子里面,这个空黑子的大小正好只能装下img。把这个新的盒子放在目标盒子的中心位置。

        1,目标盒子A的大小:330px,300px。

        2,一个空盒子B、图片的大小:400px,300px。将图片放在空盒子中。即解除图片是行内元素的限制。

        3,把盒子B放置在A中。盒子是有弹性的,虽然B盒子比A盒子大,但是我们还是可以看到完全的图片。

        4,计算怎么动B盒子:

       

        5,B盒子position:relative,在这前提下,left:-35px才有意义。

        6,图片除了左边的35px被遮挡住了,但是最后边的35px还是漏出来了,A盒子overflow:hidden。

                                             -----2015年5月12日18:20

        这应该是最简单麻烦的方法,之后我将尝试根据表格布局实现。待续---

推荐阅读