vue-advanced-cropper
Version:
The advanced library to create your own croppers suited for any website design
288 lines (278 loc) • 5.08 kB
CSS
.vue-advanced-cropper {
text-align: center;
position: relative;
user-select: none;
max-height: 100%;
max-width: 100%;
direction: ltr;
}
.vue-advanced-cropper__stretcher {
pointer-events: none;
position: relative;
max-width: 100%;
max-height: 100%;
}
.vue-advanced-cropper__image {
user-select: none;
position: absolute;
transform-origin: center;
max-width: none ;
}
.vue-advanced-cropper__background, .vue-advanced-cropper__foreground {
opacity: 1;
background: black;
transform: translate(-50%, -50%);
position: absolute;
top: 50%;
left: 50%;
}
.vue-advanced-cropper__foreground {
opacity: 0.5;
}
.vue-advanced-cropper__boundaries {
opacity: 1;
transform: translate(-50%, -50%);
position: absolute;
left: 50%;
top: 50%;
}
.vue-advanced-cropper__cropper-wrapper {
width: 100%;
height: 100%;
}
.vue-advanced-cropper__image-wrapper {
overflow: hidden;
position: absolute;
width: 100%;
height: 100%;
}
.vue-advanced-cropper__stencil-wrapper {
position: absolute;
}
.vue-simple-handler {
display: block;
background: white;
height: 10px;
width: 10px;
}
.vue-handler-wrapper {
position: absolute;
transform: translate(-50%, -50%);
width: 30px;
height: 30px;
}
.vue-handler-wrapper__draggable {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.vue-handler-wrapper--west-north {
cursor: nw-resize;
}
.vue-handler-wrapper--north {
cursor: n-resize;
}
.vue-handler-wrapper--east-north {
cursor: ne-resize;
}
.vue-handler-wrapper--east {
cursor: e-resize;
}
.vue-handler-wrapper--east-south {
cursor: se-resize;
}
.vue-handler-wrapper--south {
cursor: s-resize;
}
.vue-handler-wrapper--west-south {
cursor: sw-resize;
}
.vue-handler-wrapper--west {
cursor: w-resize;
}
.vue-handler-wrapper--disabled {
cursor: auto;
}
.vue-line-wrapper {
background: none;
position: absolute;
display: flex;
align-items: center;
justify-content: center;
}
.vue-line-wrapper--north, .vue-line-wrapper--south {
height: 12px;
width: 100%;
left: 0;
transform: translateY(-50%);
}
.vue-line-wrapper--north {
top: 0;
cursor: n-resize;
}
.vue-line-wrapper--south {
top: 100%;
cursor: s-resize;
}
.vue-line-wrapper--east, .vue-line-wrapper--west {
width: 12px;
height: 100%;
transform: translateX(-50%);
top: 0;
}
.vue-line-wrapper--east {
left: 100%;
cursor: e-resize;
}
.vue-line-wrapper--west {
left: 0;
cursor: w-resize;
}
.vue-line-wrapper--disabled {
cursor: auto;
}
.vue-bounding-box {
position: relative;
height: 100%;
width: 100%;
}
.vue-bounding-box__handler {
position: absolute;
}
.vue-bounding-box__handler--west-north {
left: 0;
top: 0;
}
.vue-bounding-box__handler--north {
left: 50%;
top: 0;
}
.vue-bounding-box__handler--east-north {
left: 100%;
top: 0;
}
.vue-bounding-box__handler--east {
left: 100%;
top: 50%;
}
.vue-bounding-box__handler--east-south {
left: 100%;
top: 100%;
}
.vue-bounding-box__handler--south {
left: 50%;
top: 100%;
}
.vue-bounding-box__handler--west-south {
left: 0;
top: 100%;
}
.vue-bounding-box__handler--west {
left: 0;
top: 50%;
}
.vue-draggable-area {
position: relative;
}
.vue-preview-result {
overflow: hidden;
box-sizing: border-box;
position: absolute;
height: 100%;
width: 100%;
}
.vue-preview-result__wrapper {
position: absolute;
}
.vue-preview-result__image {
pointer-events: none;
position: relative;
user-select: none;
transform-origin: center;
max-width: none ;
}
.vue-rectangle-stencil {
position: absolute;
height: 100%;
width: 100%;
box-sizing: border-box;
}
.vue-rectangle-stencil__preview {
position: absolute;
width: 100%;
height: 100%;
}
.vue-rectangle-stencil--movable {
cursor: move;
}
.vue-circle-stencil {
position: absolute;
height: 100%;
width: 100%;
box-sizing: content-box;
cursor: move;
}
.vue-circle-stencil__preview {
border-radius: 50%;
position: absolute;
width: 100%;
height: 100%;
}
.vue-circle-stencil--movable {
cursor: move;
}
.vue-preview {
overflow: hidden;
box-sizing: border-box;
position: relative;
}
.vue-preview--fill {
width: 100%;
height: 100%;
position: absolute;
}
.vue-preview__wrapper {
position: absolute;
height: 100%;
width: 100%;
}
.vue-preview__image {
pointer-events: none;
position: absolute;
user-select: none;
transform-origin: center;
max-width: none ;
}
.vue-simple-line {
background: none;
transition: border 0.5s;
border-color: rgba(255, 255, 255, 0.3);
border-width: 0;
border-style: solid;
}
.vue-simple-line--south, .vue-simple-line--north {
height: 0;
width: 100%;
}
.vue-simple-line--east, .vue-simple-line--west {
height: 100%;
width: 0;
}
.vue-simple-line--east {
border-right-width: 1px;
}
.vue-simple-line--west {
border-left-width: 1px;
}
.vue-simple-line--south {
border-bottom-width: 1px;
}
.vue-simple-line--north {
border-top-width: 1px;
}
.vue-simple-line--hover {
opacity: 1;
border-color: white;
}