UNPKG

alvin-imageviewer

Version:

一款基于 Html5、Canvas 的图片编辑器

458 lines (399 loc) 8.72 kB
html,body { width: 100%; height: 100%; } #imageViewer { border: 1px solid #aaa; background-color: #fff; } .imageContainer, .imageContainer * { box-sizing: border-box; } .imageContainer { float: right; width: 80%; height: 100%; border-bottom: none; position: relative; overflow: hidden; border-left: 1px solid #aaa; } .imageContainer .kPainterImgsDiv { position: relative; width: 100%; height: 100%; } .imageContainer .kPainterImgsDiv canvas, .imageContainer .kPainterImgsDiv img { pointer-events: none; } /*.imageContainer .center{margin:auto;left:0;right:0;top:0;bottom:0;}*/ .imageContainer>.kPainterCroper { position: absolute; margin: auto; box-sizing: content-box; } .imageContainer>.kPainterCroper>.kPainterCells { width: 100%; height: 100%; line-height: 0; position: relative; } .imageContainer>.kPainterCroper>.kPainterCells>div { display: inline-block; width: 33.33%; height: 33.33%; border-style: solid; border-color: red; background: rgba(255, 0, 0, 0.2); position: absolute; } .imageContainer>.kPainterCroper>.kPainterCells>div:nth-child(1) { border-width: 1px 0 0 1px; left: 0; top: 0; } .imageContainer>.kPainterCroper>.kPainterCells>div:nth-child(2) { border-width: 1px 1px 0 1px; left: 0; top: 0; right: 0; margin: 0 auto; } .imageContainer>.kPainterCroper>.kPainterCells>div:nth-child(3) { border-width: 1px 1px 0 0; right: 0; top: 0; } .imageContainer>.kPainterCroper>.kPainterCells>div:nth-child(4) { border-width: 1px 0 1px 1px; left: 0; top: 0; bottom: 0; margin: auto 0; } .imageContainer>.kPainterCroper>.kPainterCells>div:nth-child(5) { border-width: 1px 1px 1px 1px; left: 0; top: 0; right: 0; bottom: 0; margin: auto; } .imageContainer>.kPainterCroper>.kPainterCells>div:nth-child(6) { border-width: 1px 1px 1px 0; right: 0; top: 0; bottom: 0; margin: auto 0; } .imageContainer>.kPainterCroper>.kPainterCells>div:nth-child(7) { border-width: 0 0 1px 1px; left: 0; bottom: 0; } .imageContainer>.kPainterCroper>.kPainterCells>div:nth-child(8) { border-width: 0 1px 1px 1px; left: 0; bottom: 0; right: 0; margin: 0 auto; } .imageContainer>.kPainterCroper>.kPainterCells>div:nth-child(9) { border-width: 0 1px 1px 0; right: 0; bottom: 0; } /*.imageContainer > .kPainterCroper > .kPainterCells{width:100%;height:100%;overflow:hidden;} .imageContainer > .kPainterCroper > .kPainterCells > table{width:100%;height:100%;} .imageContainer > .kPainterCroper > .kPainterCells td{border:1px solid white;}*/ .imageContainer>.kPainterCroper>.kPainterBigMover { position: absolute; width: 100%; height: 100%; left: 0; top: 0; z-index: 1; cursor: move; } .imageContainer>.kPainterCroper>.kPainterEdges>div { position: absolute; border-color: white; border-style: solid; border: 0; } .imageContainer>.kPainterCroper>.kPainterEdges>div:nth-child(1) { width: 30px; height: 100%; left: -15px; top: 0; z-index: 1; cursor: w-resize; } .imageContainer>.kPainterCroper>.kPainterEdges>div:nth-child(2) { width: 100%; height: 30px; left: 0; top: -15px; z-index: 1; cursor: n-resize; } .imageContainer>.kPainterCroper>.kPainterEdges>div:nth-child(3) { width: 30px; height: 100%; right: -15px; top: 0; z-index: 1; cursor: e-resize; } .imageContainer>.kPainterCroper>.kPainterEdges>div:nth-child(4) { width: 100%; height: 30px; left: 0; bottom: -15px; z-index: 1; cursor: s-resize; } /*.imageContainer > .kPainterCroper > .kPainterEdges > div > span{width:16px;height:16px;display:inline-block;position:fixed;}*/ .imageContainer>.kPainterCroper>.kPainterCorners>div { position: absolute; width: 16px; height: 16px; border-color: red; border-style: solid; } .imageContainer>.kPainterCroper>.kPainterCorners>div:nth-child(1) { left: 0; top: 0; border-width: 2px 0 0 2px; z-index: 1; cursor: nw-resize; } .imageContainer>.kPainterCroper>.kPainterCorners>div:nth-child(2) { right: 0; top: 0; border-width: 2px 2px 0 0; z-index: 1; cursor: ne-resize; } .imageContainer>.kPainterCroper>.kPainterCorners>div:nth-child(3) { right: 0; bottom: 0; border-width: 0 2px 2px 0; z-index: 1; cursor: se-resize; } .imageContainer>.kPainterCroper>.kPainterCorners>div:nth-child(4) { left: 0; bottom: 0; border-width: 0 0 2px 2px; z-index: 1; cursor: sw-resize; } .imageContainer>.kPainterCroper>.kPainterCorners>div>i { width: 32px; height: 32px; position: absolute; display: inline-block; } .imageContainer>.kPainterCroper>.kPainterCorners>div:nth-child(1)>i { left: -16px; top: -16px; } .imageContainer>.kPainterCroper>.kPainterCorners>div:nth-child(2)>i { right: -16px; top: -16px; } .imageContainer>.kPainterCroper>.kPainterCorners>div:nth-child(3)>i { right: -16px; bottom: -16px; } .imageContainer>.kPainterCroper>.kPainterCorners>div:nth-child(4)>i { left: -16px; bottom: -16px; } .imageContainer>.kPainterCroper>.kPainterMover { display: inline-block; position: absolute; border: solid 12px rgba(0, 0, 0, 0.15); border-radius: 12px; left: 13px; top: 13px; z-index: 1; cursor: move; } .imageContainer>.kPainterCroper>.kPainterMover>div { display: inline-block; position: absolute; border: solid 15px transparent; border-radius: 15px; left: -15px; top: -15px; } .imageContainer>.kPainterCroper>.kPainterMover>svg { display: inline-block; position: absolute; left: -10px; top: -10px; } /*.imageContainer > .kPainterCroper > .kPainterCorners > div > i > span{width:16px;height:16px;display:inline-block;position:fixed;}*/ .imageContainer .kPainterPerspect { position: absolute; width: 100%; height: 100%; left: 0; top: 0; } .imageContainer .kPainterPerspect .kPainterPerspectCvs { position: absolute; margin: auto; left: -100000px; top: -100000px; right: -100000px; bottom: -100000px; } .imageContainer .kPainterPerspect .kPainterPerspectCorner { position: absolute; margin: auto; width: 20px; height: 20px; border-radius: 10px; border: 2px solid #0f0; color: #fff; background: rgba(0, 0, 0, 0.3); text-align: center; line-height: 16px; font-size: 12px; font-family: Arial, sans-serif; z-index: 1; cursor: move; } .imageContainer .kPainterGesturePanel { position: absolute; left: 0; top: 0; width: 100%; height: 100%; } .thumbnailContainer { float: left; width: 20%; height: 100%; overflow-x: hidden; } .thumbnailContainer .thumbnail-item .div-trashFog { display: none; } .grayFog { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.3); z-index: 1; } .spinner { width: 20vmin; height: 20vmin; margin: auto; position: absolute; top: 0; bottom: 0; left: 0; right: 0; } .double-bounce1, .double-bounce2 { position: absolute; left: 0; top: 0; width: 100%; height: 100%; border-radius: 50%; background-color: rgba(103, 207, 34, 0.6); animation: bounce 2.0s infinite ease-in-out; } .double-bounce2 { animation-delay: -1.0s; } @keyframes bounce { 0%, 100% { transform: scale(0.0); } 50% { transform: scale(1.0); } } #videoWrapper { position: fixed; z-index: 10000; top: 0; left: 0; width: 100%; height: 100%; } .kPainterVideoMdl, .kPainterVideoMdl * { box-sizing: border-box; } .kPainterVideoMdl { position: fixed; left: 0px; top: 0px; width: 100%; height: 100%; background: black; } .kPainterVideoMdl>.kPainterVideo { width: 100%; height: 100%; } .kPainterVideoMdl>.kPainterCameraSelect { height: 30px; min-width: 130px; position: absolute; left: 4px; top: 4px; border-radius: 2px; } .kPainterVideoMdl>.kPainterResolutionSelect { height: 30px; min-width: 130px; position: absolute; left: 4px; top: 40px; border-radius: 2px; } .kPainterVideoMdl>.kPainterBtnGrabVideo { position: absolute; margin: 0 auto; left: 0; right: 0; bottom: 20px; width: 64px; height: 64px; border: 0; border-radius: 32px; background: rgba(255, 255, 255, 0.5); text-align: center; } .kPainterVideoMdl>.kPainterBtnGrabVideo>svg { vertical-align: middle; } .kPainterVideoMdl>.kPainterBtnCloseVideo { position: absolute; right: 20px; bottom: 20px; width: 64px; height: 64px; border: 0; border-radius: 32px; background: rgba(255, 255, 255, 0.5); text-align: center; } .kPainterVideoMdl>.kPainterBtnCloseVideo>svg { vertical-align: middle; }