fix:image previewer position

pr675
黄云飞 4 years ago
parent 473595eabf
commit fab200531f

@ -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() {

Loading…
Cancel
Save