[英]How to vertically align an image in unknown size to the center of a div?
我有一个简单的HTML按钮,其中包含文本和图像:
HTML :( 已经在http://jsfiddle.net/EFwgN上 )
<span class="Button">
<img src="http://www.connectedtext.com/Image/ok.gif" />
Small Icon
</span>
CSS:
span.Button {display:inline-block; margin:2px 4px;padding:3px 6px;
background-color:#ddd; height:24px; line-height:24px;
vertical-align:middle;}
span.Button img {vertical-align:middle;}
我无法提出适合这些要求的组合:
line-height
将文本居中。 这是带有我当前代码的jsfiddle: http : //jsfiddle.net/EFwgN
(请注意,小图标位于按钮中心的下方)
一个简单的解决方案,如果您需要不少于IE8(在标准模式下): http : //jsfiddle.net/kizu/EFwgN/31/
只需在img
添加margin: -100px 0
,那么负的margin会margin: -100px 0
任何较大的高度:
span.Button img {vertical-align:middle; margin:-100px 0;
position:relative; top:-2px;}
我增加了position: relative; top:-2px;
position: relative; top:-2px;
只是为了看起来更好:)
但是,如果您需要支持兼容模式或IE lt 8(出于某种原因),则带有边距的东西将不起作用。 因此,您将需要一个额外的标记: http : //jsfiddle.net/kizu/EFwgN/28/ ,但是它有些hacky,并且仅适用于固定按钮的高度(例如您的示例)。
使用基于表格的显示。 由于display:table-cell;
之间的冲突,需要缩小图像display:table-cell;
和height:24px
。 与您在评论中中止的尝试非常相似,但包括必需的display:block;
在图片上: http : //jsfiddle.net/shanethehat/5ck3s/
使用jQuery,就可以了:
$(".button img").load(function()
{
$(this).each(function()
{
sh = $(this).outerHeight();
if (sh > 24){
alert(sh);
$(this).css("margin-top", - (sh - 24) / 2 + 'px');
}
});
});
编辑:刚刚看到您想要纯CSS,那么这里就是代码仓库! :)
如果图像确实比按钮高,为什么不缩小图像呢?
span.Button img {
vertical-align:middle;
max-height: 100%;
}
我可能错过了一些要求,因为将span.Button的高度设置为auto可以帮到我。
如果您想要的是按钮仅水平增长,裁剪垂直溢出,那么我可能会这样做:
span.Button {display:inline-block; margin:2px 4px;padding:3px 6px;
background-color:#ddd; width:auto; height:24px; line-height:24px;overflow:hidden;
vertical-align:middle;
}
使用一些JavaScript来确定img高度,然后相应地将其居中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.