Html 如何垂直居中放置大小可以在div中更改的图像?
当我不知道图像的高度时,如何使用css将图像垂直居中?服务器将在运行时提供映像以及高度,可以是任意数量的高度。知道了这一点,我在一个div中创建了一个div,或多或少遵循了教程中的方法1:。但我相信,只有当你知道你试图集中的内容的高度时,这才有效。那么我到底该如何垂直居中:Html 如何垂直居中放置大小可以在div中更改的图像?,html,css,Html,Css,当我不知道图像的高度时,如何使用css将图像垂直居中?服务器将在运行时提供映像以及高度,可以是任意数量的高度。知道了这一点,我在一个div中创建了一个div,或多或少遵循了教程中的方法1:。但我相信,只有当你知道你试图集中的内容的高度时,这才有效。那么我到底该如何垂直居中: <div class="galleryItem"> <a href="wherever"> <img src="whatever" width="173" height="155
<div class="galleryItem">
<a href="wherever">
<img src="whatever" width="173" height="155">
<div class="galleryTitle">
<div class="galleryImg">
<img src="centerMeVertically.jpg">
</div>
</div>
</a>
</div>
在css中添加以下内容:
垂直对齐:中心对齐;或垂直对齐:中间对齐 我会首先计算容器和图像之间的高度差,然后将其一分为二,并将其作为页边顶部 所需边距=(容器高度图像高度)/2 您可以通过JS实现这一点,服务器端甚至可以更好地处理人们出于任何原因关闭JS的情况
.galleryImg img {margin-top:<requiredMargin>px;}
.galleryImg{页边空白顶部:px;}
这是一种可靠的方法
或CSS3方式
如果你只想使用CSS,只支持最新的浏览器,那么你可以考虑使用FrasBox:
<div class="imageContainer">
<img src="http://placehold.it/350x100">
</div>
<style>
.imageContainer {
height:300px;
display: -webkit-box;
-webkit-box-align: center;
display: -moz-box;
-moz-box-align: center;
display: -ms-flexbox;
-ms-box-align: center;
display: box;
box-align: center;
}
</style>
.imageContainer{
高度:300px;
显示:-网络工具包盒;
-webkit框对齐:居中;
显示器:-moz盒;
-moz框对齐:居中;
显示:-ms flexbox;
-ms框对齐:居中;
显示:框;
框对齐:居中;
}
<> P>为了支持老浏览器,你也可以考虑使用。虽然我自己没有使用过这个,但它似乎是一个不错的选择。在div上使用表显示属性。虽然不漂亮,但它很管用
表格单元格能够将其内容垂直居中对齐。因此,我们需要将div的“display”属性更改为“table cell”,从而将其行为更改为table cell 现在请检查下面的代码,看到相应div中的图像与中心垂直对齐
.galleryImg {
display: table-cell;
height: 60px;
vertical-align: middle;
width: 173px;
}
希望它能帮助您。/JQuery
$(function(){
// vertical align images
$.fn.vAlign = function() {
return this.each(function(i){
var ah = $(this).height();
var ph = $(this).parent().height();
var mh = Math.ceil((ph-ah) / 2); //var mh = (ph - ah) / 2;
$(this).css('margin-top', mh);
//console.log(mh);
});
};
$('.galleryItem img').vAlign();
});
下面是一个实时示例,您如何将图像居中到任何div 有一些额外的css美化,但你可以忽略它
我很感激,我当然也在考虑。但我真的很想用“正确的方式”去做,我希望这里的一位大师有一些秘密的忍者黑客来实现这一点。我已经投入了足够的时间,因为这更多的是个人恩怨,而不是工作要求。编辑:现在我回复删除的评论看起来很傻。总而言之:表格布局-我知道这是一个选项,但我不想。纠正我之前的评论,看看这一条(实际上有点重复,如果我错了请纠正我:)如何使用定位@EranMedan这个解决方案是完美的,除了它在我的internet explorer中绝对爆炸。在其他浏览器中都是完美的,而且在许多情况下它显然在IE上工作,但至少在我的情况下,浮动div或某些东西一定会引起问题。@Musa这是一个跨浏览器的解决方案吗?知道向后兼容的程度吗?a)没有垂直对齐:中心对齐代码>和b)这不起作用。最好在评论之前先检查一下。有垂直对齐:中心对齐;并且正在工作。垂直对齐仅在以与表格相关的方式显示的元素上按预期工作。虽然我知道这个解决方案,但我正试图通过避免使用表格来定位,从而更符合标准。如果您知道一种使垂直对齐的方法:在非表元素上居中工作,您能扩展您的答案并向我们展示如何进行吗?我认为你是一个天才,我个人,我肯定会开始抵消你的选票:)字体大小:11px;页边距顶部:表达式(this.offsetHeight
.galleryImg {
display: table-cell;
height: 60px;
vertical-align: middle;
width: 173px;
}
$(function(){
// vertical align images
$.fn.vAlign = function() {
return this.each(function(i){
var ah = $(this).height();
var ph = $(this).parent().height();
var mh = Math.ceil((ph-ah) / 2); //var mh = (ph - ah) / 2;
$(this).css('margin-top', mh);
//console.log(mh);
});
};
$('.galleryItem img').vAlign();
});
<div class="span2 cen_eventspan2">
<figure class="span12 cen_event">
<img class="img-polaroid-user" src="https://www.dropbox.com/s/j4x8plvaupv0ftp/AC_Feedback-box-buttons_unlcear_b.png" />
</figure>
</div>
.cen_event {
background-color: #FFFFFF;
border: 1px solid rgba(0, 0, 0, 0.2);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
height: 172px;
line-height: 159px;
padding: 4px;
text-align: center;
width: 182px;
}
.cen_event .img-polaroid-user {
max-height: 160px;
max-width: 172px;
vertical-align: middle;
border:1px solid #f00;
}