gpt4 book ai didi

javascript - 图像剪辑中心

转载 作者:技术小花猫 更新时间:2023-10-29 11:39:42 26 4
gpt4 key购买 nike

我希望我的图像被剪裁在中心,并且能够在封面上左右上下移动以适应整个屏幕用户应该只能看到图像的特定部分并且能够像下面的链接一样四处移动,但他的视点是适合屏幕透视的小矩形到目前为止,我得到的只是图像的左上角

以防万一我不清楚我正在尝试实现此效果但用户看不到移动而不是正方形 https://www.w3schools.com/howto/howto_js_image_zoom.asp

如果你偶然发现这个问题,我会很快关闭这张票,看看这个问题,我相信我已经尽可能清楚了 How to clip your image freely

<style>
img {
background-position: cover;
position: absolute;
clip:rect(0px,500px,500px,0px);
}
.image1 {
background: url(images/bg.jpg) no-repeat center center;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
</style>
</head>
<body>

<div class='clipper-div'>
<img class='image1' src='office.gif'/>
</div>

最佳答案

您正在寻找的那种是插入剪裁:

clip-path: inset(top bottom left right);

可以监听鼠标移动事件来更新裁剪。在下面的示例中,我使用了 CSS custom properties我添加了 clipper-element 样式定义。

这些自定义属性用作剪裁定义的 CSS 变量。

// Globals variables (we could store them into an object,
// which would be a cleaner way
var clipperDiv = document.getElementById("clipper-div");
var hoveringClippedImg = document.getElementById("hovering-clipped");
var imgBoundingRect = hoveringClippedImg.getBoundingClientRect();
var clippingSize = 40;

// Surrouding DIV element mouse move event callback
clipperDiv.onmousemove = clipHoveredArea;

// Update image clipping

function clipHoveredArea(e) {

// First step: getting clipping coordinates from mouse position
var pos = getMousePos(e);
var top = (pos.y - clippingSize / 2);
var bottom = (imgBoundingRect.height - pos.y - (clippingSize / 2));
var left = (pos.x - clippingSize / 2);
var right = (imgBoundingRect.width - pos.x - clippingSize / 2);

// Second step: CSS custom properties
hoveringClippedImg.style.setProperty("--top", top + "px");
hoveringClippedImg.style.setProperty("--bottom", bottom + "px");
hoveringClippedImg.style.setProperty("--left", left + "px");
hoveringClippedImg.style.setProperty("--right", right + "px");

};

// Get mouse position relative to an element
// Source: //stackoverflow.com/a/42111623/4375327

function getMousePos(e) {
// e = Mouse click event.
var rect = e.currentTarget.getBoundingClientRect();
var x = e.clientX - Math.round(rect.left);
var y = e.clientY - Math.round(rect.top);
return {
x: x,
y: y
};
}
#clipper-div {
border: 2px solid black;
width: 200px;
height: 200px;
}

#hovering-clipped {
padding: 0;
margin: 0;
width: 200px;
height: 200px;
clip-path: inset(var(--top) var(--right) var(--bottom) var(--left));
--top: 0px;
--right: 0px;
--bottom: 0px;
--left: 0px;
cursor: crosshair;
}
<div id='clipper-div'>
<img id="hovering-clipped"
src="//placehold.it/200x200/d0d8f8/000000" />
</div>


注意:我使用了Clippy .这是设计您想要的剪辑的便捷工具。

关于javascript - 图像剪辑中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58051629/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com