alvin-imageviewer
Version:
一款基于 Html5、Canvas 的图片编辑器
458 lines (399 loc) • 8.72 kB
CSS
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;
}