【发布时间】:2021-02-05 16:00:59
【问题描述】:
我目前正在尝试仅使用 javascript(无 css 中心属性)将图像中的矩形居中。然而,即使数字是正确的,显示也是错误的。 为此,我使用以下代码:
$(document).ready(function() {
$(".img-zoom-container").css("width", $("#myimage").width());
$(".img-zoom-container").css("height", $("#myimage").height());
$("#lens_container").css("width", ($("#myimage").width() - $("#lens").width()));
$("#lens_container").css("height", ($("#myimage").height() - $("#lens").height()));
$("#lens_container").css("top", ($("#lens").height() / 2));
$("#lens_container").css("left", ($("#lens").width() / 2));
});
.img-zoom-container
{
border: 1px solid red;
}
#lens
{
border: 1px solid white;
width: 50px;
height: 50px;
position: absolute;
}
#lens_container
{
border: 1px solid cyan;
position: absolute;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="img-zoom-container">
<div id="lens"></div>
<div id="lens_container"></div>
<img id="myimage" src="https://via.placeholder.com/600x160.png?text=Testing Image" alt="">
</div>
我要居中的项目是#lens_container div(在屏幕上显示为蓝色)。我还有一个大小为 50 像素 x 50 像素的白色正方形 (#lens div)。我想居中并调整蓝色矩形的大小,以便在蓝色矩形的每一侧都有一半的正方形宽度,并且与高度相同。但是,正如您在尝试代码时看到的那样,尽管数学是正确的,但事实并非如此。
我不知道你是否能理解我的需求,但我非常感谢那里的帮助。
提前致谢。
【问题讨论】:
-
是的,我意识到这一点。如果你提到我说不使用 CSS,我的意思是不使用任何 CSS 中心属性。
-
为什么?这正是 CSS flexbox is for 所使用的,并且多年来一直如此,它甚至不需要任何人打开 JS。
-
请问为什么?因为窗口调整大小使该定位不再相关,所以您需要重新计算和调整。
-
因为我需要蓝色矩形相对于白色正方形居中和调整大小。如果可以直接使用一些漂亮的 css 属性来做这 2 件事,我不会反对尝试它们。而对于窗口调整大小,这是我没有考虑到的问题。
-
您的代码输出似乎在代码 sn-p 中运行良好(一旦我给它一个真实的图像)。您可以单击“运行代码sn-p”按钮亲自查看。你到底有什么问题?
标签: javascript css dom