css3 - img垂直水平居中问题
问题描述
.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='https://www.haobala.com/img/1.jpg'/></p>
img垂直水平居中为什么会有一像素的空隙:
问题解答
回答1:方法1. 给img加display:block样式方法2. 给.box加font-size:0样式
回答2:https://jsfiddle.net/06m9orbL/
那一点空隙是基线来的,结合你的display:table-cell的属性来看,那个是基线的一半,因为.box的中心会跟里面的匿名行框中心对齐。
可以看看w3c关于display:table和vertical-align的说明 https://www.w3.org/TR/CSS22/tables.html#height-layout
回答3:http://www.zhangxinxu.com/wordpress/2015/08/css-deep-understand-vertical-align-and-line-height/ 这篇文章是极好的
回答4:这个跟vertical-align:middle无关,而是跟你的display:table-cell有关,至于原理我也未清楚,不过你在image 中float:left就可以解决空隙
回答5:img行内块级元素的原因,父元素设font-size:0;可解决。还有其他几种解决办法,可以搜一下,手机打字不方便提供传送门
回答6:嗯,楼上的哥们说的都对了,我也遇到过。。。图片中的兔子好可爱,哈哈!
回答7:网上有专门讨论这个的,一般解决是设父元素的font-size:0,好像记得是因为字体的“底线”位置吧。设为0那就不受影响了。同样的文字居中也不是完全居中的,和它的“底线”位置有关。
回答8:https://segmentfault.com/q/1010000004076322/a-1020000004078865
回答9:采用通配符*
*{ margin:0; padding:0;}回答10:
方法有给box设置font-size:0;给IMG标签设置display:block;或者使用负margin.或者写flaot.因为元素浮动后也就是display:bolck了
相关文章:
1. windows误人子弟啊2. 冒昧问一下,我这php代码哪里出错了???3. MySQL主键冲突时的更新操作和替换操作在功能上有什么差别(如图)4. python - linux怎么在每天的凌晨2点执行一次这个log.py文件5. 数据库 - Mysql的存储过程真的是个坑!求助下面的存储过程哪里错啦,实在是找不到哪里的问题了。6. 实现bing搜索工具urlAPI提交7. mysql优化 - MySQL如何为配置表建立索引?8. 如何用笔记本上的apache做微信开发的服务器9. 我在网址中输入localhost/abc.php显示的是not found是为什么呢?10. 关于mysql联合查询一对多的显示结果问题
