Heim > Fragen und Antworten > Hauptteil
.box {
width: 300px;
height: 300px;
display: table-cell;
text-align: center;
vertical-align: middle;
border: solid 1px red;
transition: 1s;
}
.box img {
width: 150px;
height: 150px;
}
.box:hover img {
transform: scale(2);
}
<p class="box"><img src="../img/1.jpg"/></p>
img垂直水平居中为什么会有一像素的空隙:
阿神2017-04-17 11:37:56
https://jsfiddle.net/06m9orbL/
那一点空隙是基线来的,结合你的display:table-cell的属性来看,那个是基线的一半,因为.box的中心会跟里面的匿名行框中心对齐。
可以看看w3c关于display:table和vertical-align的说明 https://www.w3.org/TR/CSS22/tables.html#height-layout
巴扎黑2017-04-17 11:37:56
http://www.zhangxinxu.com/wordpress/2015/08/css-deep-understand-vertical-align-and-line-height/ 这篇文章是极好的
天蓬老师2017-04-17 11:37:56
这个跟vertical-align:middle无关,而是跟你的display:table-cell有关,至于原理我也未清楚,不过你在image 中float:left就可以解决空隙
黄舟2017-04-17 11:37:56
网上有专门讨论这个的,一般解决是设父元素的font-size:0,好像记得是因为字体的“底线”位置吧。设为0那就不受影响了。同样的文字居中也不是完全居中的,和它的“底线”位置有关。
黄舟2017-04-17 11:37:56
方法有给box设置font-size:0;
给IMG标签设置display:block;
或者使用负margin.或者写flaot.因为元素浮动后也就是display:bolck了