我用 javascript 编写了简单的网页,它试图在单击后随着时间的推移从页面中心缩放元素。它适用于我测试的 svg 元素。
但是当我使用图像时,它从 div 之外开始(居中)并随着它变大而缓慢地向它收敛,之后它应该是居中的。我能找到的唯一结果与溢出设置有关,但即使将溢出设置为隐藏,图像仍然在 div 之外并且可见。div 是要调整大小的第一件事,因此它总是足够大以容纳图像。
可能是因为我使用的小尺寸值,还是我的代码有问题?
<!DOCTYPE html>
<html>
<head>
<style>
body {
margin:0;
}
#maindiv {
position:absolute;
background-color:#141414;
width:100%;
height:100%;
overflow: hidden;
}
#face {
width:109px;
/* height: auto !important; */
}
#facediv {
position: absolute;
top: 50%;
left: 50%;
}
</style>
<script>
function sizeUpdate (elem){
var sf = 1
function frame(){
sf++ <!-- increment scale factor
var fwidth = 0.1;
var scaledwidthface = (fwidth * sf); <!-- scaled width - width-constant*scale-factor
var face_var =document.getElementById("face");
var facediv_var = document.getElementById("facediv");
facediv_var.style.width = ""+scaledwidthface+"px"; <!-- set containing div to same width as object
facediv_var.style.marginLeft = ""+(-1 * scaledwidthface/2 )+"px"; <!-- set the container div to x-offset half object-width (centres horizontally)
face_var.style.width = ""+scaledwidthface+"px"; <!-- set width of object
var face_ht = face_var.clientHeight; <!-- get integer-form of object height (?)
facediv_var.style.height = ""+face_ht+"px"; <!-- set container div to same height as object
facediv_var.style.marginTop = ""+(-1*face_ht/2)+"px"; <!--set container div y-offset half object-height (centres vertically)
if (sf == 500)
clearInterval(id) <!--stop when incr reaches this maximum
}
var id = setInterval(frame, 50)
}
</script>
</head>
<body>
<div id="maindiv" onclick="sizeUpdate(this.children[0])">
<div id="facediv">
<img id="face" src="http://goo.gl/6xLiC">
</div>
</div>
</body>
</html>