Javascript 将图像源设置为document ready后,使用JQuery将图像居中
我有一个关于HTML/JQuery用法中函数同步的问题: 我有一个简单的html文件,例如Javascript 将图像源设置为document ready后,使用JQuery将图像居中,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个关于HTML/JQuery用法中函数同步的问题: 我有一个简单的html文件,例如 <div id="wrapperA" style="top: 50%"> <span id="wordfortargetpic1"></span> <span id="wordfortargetpic2"></span> <span id="wordfortargetpic3"></span>
<div id="wrapperA" style="top: 50%">
<span id="wordfortargetpic1"></span>
<span id="wordfortargetpic2"></span>
<span id="wordfortargetpic3"></span>
<img id="pic1" class="imgdiv" src="" />
</div>
</div>
现在,由于图像的大小可以变化,我编写了一个JQuery函数,通过获取元素的尺寸和调整边距来居中元素:
function css_center(object) {
object.css({
"margin-left": -($(object).width() / 2),
"margin-top": -($(object).height() / 2)
});
}
我现在的问题是,如果我用
src
img
getImage()
,并使用一个回调函数来调用该函数,该回调函数以图像为中心,如下所示:
getImage(function(){
css_center($(".imgdiv"));
})
也不行。这里缺少什么?使用两个div,一个用于水平对齐,一个用于垂直对齐,如下所示:
div.horizontal {
display: flex;
justify-content: center;
}
div.vertical {
display: flex;
flex-direction: column;
justify-content: center;
}
<div class="horizontal" id="wrapperA" style="top: 50%">
<div class="vertical">
<span id="wordfortargetpic1"></span>
<span id="wordfortargetpic2"></span>
<span id="wordfortargetpic3"></span>
<img id="pic1" class="imgdiv" src="" />
</div>
</div>
div.horizontal{
显示器:flex;
证明内容:中心;
}
垂直分区{
显示器:flex;
弯曲方向:立柱;
证明内容:中心;
}
确保在加载映像后运行函数
$('#pic1').on('load', function(){
this.style.marginTop = -(this.height/2) + 'px';
this.style.marginLeft = -(this.width/2) + 'px';
})
为什么不使用纯css将图像居中?这样,无论图像大小如何,它都将始终居中。@MeisamMulla如果我不知道图像的宽度和高度,而不为每个图像编写css居中,我该怎么做?我希望它尽可能通用。@ben_aaron只需为
imgdiv
类编写CSS。@SpencerWieczorek我已经添加了CSS,希望它能澄清我的问题。我不知道显示的是哪幅图像,也不知道图像的高度或宽度。请将居中功能连接到#pic1
上的onload
事件。因此,您的函数仅在加载图像后运行,以获得正确的尺寸
$('#pic1').on('load', function(){
this.style.marginTop = -(this.height/2) + 'px';
this.style.marginLeft = -(this.width/2) + 'px';
})