fix:image previewer position
This commit is contained in:
@@ -153,8 +153,13 @@
|
|||||||
background-color: #e2e6ed;
|
background-color: #e2e6ed;
|
||||||
}
|
}
|
||||||
|
|
||||||
.image-previewer img {
|
.image-previewer .image-container {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image-previewer .image-container img {
|
||||||
cursor: move;
|
cursor: move;
|
||||||
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
.image-previewer .image-menu {
|
.image-previewer .image-menu {
|
||||||
@@ -170,7 +175,7 @@
|
|||||||
.image-previewer .image-menu i {
|
.image-previewer .image-menu i {
|
||||||
width: 32px;
|
width: 32px;
|
||||||
height: 32px;
|
height: 32px;
|
||||||
margin-right: 15px;
|
margin: 0 8px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
|
|||||||
@@ -190,24 +190,24 @@ export class ImageParticle {
|
|||||||
this.previewerImage = img
|
this.previewerImage = img
|
||||||
previewerContainer.append(imgContainer)
|
previewerContainer.append(imgContainer)
|
||||||
// 操作栏
|
// 操作栏
|
||||||
|
let x = 0
|
||||||
|
let y = 0
|
||||||
let scaleSize = 1
|
let scaleSize = 1
|
||||||
let rotateSize = 0
|
let rotateSize = 0
|
||||||
let translateX = 0
|
|
||||||
let translateY = 0
|
|
||||||
const menuContainer = document.createElement('div')
|
const menuContainer = document.createElement('div')
|
||||||
menuContainer.classList.add('image-menu')
|
menuContainer.classList.add('image-menu')
|
||||||
const zoomIn = document.createElement('i')
|
const zoomIn = document.createElement('i')
|
||||||
zoomIn.classList.add('zoom-in')
|
zoomIn.classList.add('zoom-in')
|
||||||
zoomIn.onclick = () => {
|
zoomIn.onclick = () => {
|
||||||
scaleSize += 0.1
|
scaleSize += 0.1
|
||||||
this._setPreviewerTransform(scaleSize, rotateSize, translateX, translateY)
|
this._setPreviewerTransform(scaleSize, rotateSize, x, y)
|
||||||
}
|
}
|
||||||
menuContainer.append(zoomIn)
|
menuContainer.append(zoomIn)
|
||||||
const zoomOut = document.createElement('i')
|
const zoomOut = document.createElement('i')
|
||||||
zoomOut.onclick = () => {
|
zoomOut.onclick = () => {
|
||||||
if (scaleSize - 0.1 <= 0.1) return
|
if (scaleSize - 0.1 <= 0.1) return
|
||||||
scaleSize -= 0.1
|
scaleSize -= 0.1
|
||||||
this._setPreviewerTransform(scaleSize, rotateSize, translateX, translateY)
|
this._setPreviewerTransform(scaleSize, rotateSize, x, y)
|
||||||
}
|
}
|
||||||
zoomOut.classList.add('zoom-out')
|
zoomOut.classList.add('zoom-out')
|
||||||
menuContainer.append(zoomOut)
|
menuContainer.append(zoomOut)
|
||||||
@@ -215,17 +215,17 @@ export class ImageParticle {
|
|||||||
rotate.classList.add('rotate')
|
rotate.classList.add('rotate')
|
||||||
rotate.onclick = () => {
|
rotate.onclick = () => {
|
||||||
rotateSize += 1
|
rotateSize += 1
|
||||||
this._setPreviewerTransform(scaleSize, rotateSize, translateX, translateY)
|
this._setPreviewerTransform(scaleSize, rotateSize, x, y)
|
||||||
}
|
}
|
||||||
menuContainer.append(rotate)
|
menuContainer.append(rotate)
|
||||||
const originalSize = document.createElement('i')
|
const originalSize = document.createElement('i')
|
||||||
originalSize.classList.add('original-size')
|
originalSize.classList.add('original-size')
|
||||||
originalSize.onclick = () => {
|
originalSize.onclick = () => {
|
||||||
|
x = 0
|
||||||
|
y = 0
|
||||||
scaleSize = 1
|
scaleSize = 1
|
||||||
rotateSize = 0
|
rotateSize = 0
|
||||||
translateX = 0
|
this._setPreviewerTransform(scaleSize, rotateSize, x, y)
|
||||||
translateY = 0
|
|
||||||
this._setPreviewerTransform(scaleSize, rotateSize, translateX, translateY)
|
|
||||||
}
|
}
|
||||||
menuContainer.append(originalSize)
|
menuContainer.append(originalSize)
|
||||||
previewerContainer.append(menuContainer)
|
previewerContainer.append(menuContainer)
|
||||||
@@ -243,11 +243,11 @@ export class ImageParticle {
|
|||||||
}
|
}
|
||||||
previewerContainer.onmousemove = (evt: MouseEvent) => {
|
previewerContainer.onmousemove = (evt: MouseEvent) => {
|
||||||
if (!isAllowDrag) return
|
if (!isAllowDrag) return
|
||||||
translateX += (evt.x - startX)
|
x += (evt.x - startX)
|
||||||
translateY += (evt.y - startY)
|
y += (evt.y - startY)
|
||||||
startX = evt.x
|
startX = evt.x
|
||||||
startY = evt.y
|
startY = evt.y
|
||||||
this._setPreviewerTransform(scaleSize, rotateSize, translateX, translateY)
|
this._setPreviewerTransform(scaleSize, rotateSize, x, y)
|
||||||
}
|
}
|
||||||
previewerContainer.onmouseup = () => {
|
previewerContainer.onmouseup = () => {
|
||||||
isAllowDrag = false
|
isAllowDrag = false
|
||||||
@@ -263,13 +263,15 @@ export class ImageParticle {
|
|||||||
if (scaleSize - 0.1 <= 0.1) return
|
if (scaleSize - 0.1 <= 0.1) return
|
||||||
scaleSize -= 0.1
|
scaleSize -= 0.1
|
||||||
}
|
}
|
||||||
this._setPreviewerTransform(scaleSize, rotateSize, translateX, translateY)
|
this._setPreviewerTransform(scaleSize, rotateSize, x, y)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public _setPreviewerTransform(scale: number, rotate: number, x: number, y: number) {
|
public _setPreviewerTransform(scale: number, rotate: number, x: number, y: number) {
|
||||||
if (!this.previewerImage) return
|
if (!this.previewerImage) return
|
||||||
this.previewerImage.style.transform = `scale(${scale}) rotate(${rotate * 90}deg) translate(${x}px,${y}px)`
|
this.previewerImage.style.left = `${x}px`
|
||||||
|
this.previewerImage.style.top = `${y}px`
|
||||||
|
this.previewerImage.style.transform = `scale(${scale}) rotate(${rotate * 90}deg)`
|
||||||
}
|
}
|
||||||
|
|
||||||
private _clearPreviewer() {
|
private _clearPreviewer() {
|
||||||
|
|||||||
Reference in New Issue
Block a user