根据其他用户的建议,我发布了一个新问题,以便寻求有关扩展问题的帮助,而不是尝试完成已有的问题: similar question。 我试图通过滚动页面上的特定元素(图像)来设置缩放。 起初我使用了transform:scale(number);但它似乎弄乱了溢出阻止完全滚动图像(左侧图像的一部分,顶部隐藏)。 我找不到能够完全滚动图像并在鼠标位置设置变换原点的方法。 我目前正在尝试通过将图像放在div容器中并更改容器宽度/高度来找到解决方法。它看起来工作得很好,唯一的问题是设置div的偏移量以匹配鼠标位置(设置transform-origin做得很好)...
这是我的代码,两种方法都可以放大... mouseWheel js是来自一些随机网站上有一个演示,我不认为这是最新版本。 正如你所看到的,我可以放大和缩小,但是我无法完全滚动对象,我已经通过将对象放在另一个div中来修复它,但它会使位置混乱,所以听起来不像一个解决方案......
#container1 {
position: fixed;
width: 300px;
height: 200px;
border: 1px solid #000000;
left: 0px;
top: 0px;
margin-left: 10px;
margin-top: 10px;
overflow: auto;
display: block;
text-align: center;
}
#object1 {
position: absolute;
width: 100px;
height: 100px;
display: inline-block;
background-color: rgba(255, 0, 255, 0.45);
margin: auto;
top: 0;
bottom: 0;
left: 0;
right: 0;
border-radius: 25px;
}
#container2 {
position: fixed;
width: 300px;
height: 200px;
border: 1px solid #000000;
left: 0px;
top: 0px;
margin-left: 330px;
margin-top: 10px;
overflow: auto;
display: block;
text-align: center;
}
#object2 {
position: absolute;
width: 100px;
height: 100px;
display: inline-block;
background-color: rgba(0, 0, 255, 0.45);
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
border-radius: 25px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://owlcarousel.owlgraphic.com/assets/vendors/jquery.mousewheel.min.js"></script>
<div id="container1">
<div id="object1"></div>
</div>
<div id="container2">
<div id="object2"></div>
</div>
<script type="text/javascript">
var scale = 1;
var object2 = document.getElementById("object2");
$('#object2').on("mousewheel", function(event) {
scale += event.deltaY < 1 ? -0.3 : 0.3;
scale = scale < 1 ? 1 : scale;
scale = scale > 5 ? 5 : scale;
object2.style.transform = "scale(" + scale + ")";
object2.style.transformOrigin = event.offsetX + "px " + event.offsetY + "px";
event.preventDefault();
});
var scale2 = 1;
var object1 = document.getElementById("object1");
$('#object1').on("mousewheel", function(event) {
scale2 += event.deltaY < 1 ? -0.3 : 0.3;
scale2 = scale2 < 1 ? 1 : scale2;
scale2 = scale2 > 5 ? 5 : scale2;
object1.style.width = (100 * scale2) + "px";
object1.style.height = (100 * scale2) + "px";
event.preventDefault();
});
</script>
这与容器div的内容相同,只是为了让你看到它如何弄乱这个位置:
#container1 {
position: fixed;
width: 300px;
height: 200px;
border: 1px solid #000000;
left: 0px;
top: 0px;
margin-left: 10px;
margin-top: 10px;
overflow: auto;
display: block;
text-align: center;
}
#objectContainer {
position: relative;
width: 100px;
height: 100px;
margin: auto;
bottom: 0;
right: 0;
}
#object1 {
position: absolute;
width: auto;
height: auto;
max-width: 100%;
max-height: 100%;
display: inline-block;
background-color: rgba(255, 0, 255, 0.45);
margin: auto;
top: 0;
bottom: 0;
left: 0;
right: 0;
border-radius: 25px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://owlcarousel.owlgraphic.com/assets/vendors/jquery.mousewheel.min.js"></script>
<div id="container1">
<div id="objectContainer">
<div id="object1"></div>
</div>
</div>
<script type="text/javascript">
var scale2 = 1;
var container1 = document.getElementById("objectContainer");
$('#object1').on("mousewheel", function(event) {
scale2 += event.deltaY < 1 ? -0.3 : 0.3;
scale2 = scale2 < 1 ? 1 : scale2;
scale2 = scale2 > 5 ? 5 : scale2;
container1.style.width = (100 * scale2) + "px";
container1.style.height = (100 * scale2) + "px";
event.preventDefault();
});
</script>