|
|
//==============
//== modal
$ax5modal-z-index: 2000 !default; $ax5modal-box-model: border-box !default; $ax5modal-bg: #fff !default; $ax5modal-border: 1px solid #ddd !default; $ax5modal-box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.60) !default; $ax5modal-body-padding: 0px !default; $ax5modal-header-padding: 10px 15px !default;
$ax5modal-header-addon-padding: 10px 10px !default; $ax5modal-header-addon-btn-padding: 0px 2px !default;
$ax5modal-border-radius: 4px !default; $ax5modal-easing-time-open: 0.3s !default; $ax5modal-easing-time-close: 0.3s !default; $ax5modal-easing-open: $ease-out-back !default; $ax5modal-easing-close: $ease-out-back !default;
//== modal resizer
$ax5modal-resizer-bg: #ccc !default; $ax5modal-resizer-border: 1px solid #ff0000 !default; $ax5modal-resizer-box-shaodw: 0px 0px 5px 0px rgba(0, 0, 0, 0.60) !default; $ax5modal-resizer-opacity : 0.3 !default;
//** Border color for elements within dialog
$ax5modal-default-text: #222 !default; $ax5modal-default-border: 1px solid #ddd !default; $ax5modal-default-header-bg: #f5f5f5 !default;
@mixin ax-modal() { box-sizing: border-box; *, *:before, *:after { box-sizing: border-box; }
background-color: $ax5modal-bg; border: $ax5modal-border;
@include ax-border-radius($ax5modal-border-radius); @include box-shadow($ax5modal-box-shadow);
z-index: $ax5modal-z-index; position: fixed; left: 0px; top: 0px; //overflow: hidden;
box-sizing: content-box; }
@mixin ax-modal-section() { .ax-modal-header { user-select: none; //font-size: 1em;
font-weight: 600; padding: $ax5modal-header-padding; border-bottom: 1px solid transparent; border-top-left-radius: $ax5modal-border-radius; border-top-right-radius: $ax5modal-border-radius;
cursor: move; .ax-modal-header-addon{ position: absolute; right: 0px; top: 0px; padding: $ax5modal-header-addon-padding; [data-modal-header-btn]{ border: 0; padding: $ax5modal-header-addon-btn-padding; background: transparent; display: inline-block; text-align: center; cursor: pointer; outline: 0; } } } .ax-modal-body { border-bottom-left-radius: $ax5modal-border-radius; border-bottom-right-radius: $ax5modal-border-radius;
padding: $ax5modal-body-padding; text-align: center; @include flex(1); position: relative; overflow: hidden;
iframe { border: 0 none; }
.fadeIn{ @include animation(ax-modal-fade-in $ax5modal-easing-time-open $ease-out-back forwards); } .fadeOut{ @include animation(ax-modal-fade-out $ax5modal-easing-time-open $ease-out-back forwards); } } }
@mixin modal-variant($text-color, $border, $header-bg-color) { .ax-modal-header { color: $text-color; background: $header-bg-color; .ax-modal-header-addon{ a{ color: $text-color; outline: 0; } } } .ax-modal-body {
} }
@include keyframes(ax-modal) { 0% { opacity: 0.0; //@include transform(translateY(20%));
@include transform(scale(0.8)); } 100% { opacity: 1.0; @include transform(scale(1.0)); } /* 0% { opacity: 0.0; -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } 0.1% { opacity: 1.0; -webkit-transform: matrix3d(0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); transform: matrix3d(0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } 5.9% { -webkit-transform: matrix3d(0.711, 0, 0, 0, 0, 0.742, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); transform: matrix3d(0.711, 0, 0, 0, 0, 0.742, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } 7.7% { -webkit-transform: matrix3d(0.768, 0, 0, 0, 0, 0.812, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); transform: matrix3d(0.768, 0, 0, 0, 0, 0.812, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } 11.5% { -webkit-transform: matrix3d(0.869, 0, 0, 0, 0, 0.935, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); transform: matrix3d(0.869, 0, 0, 0, 0, 0.935, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } 11.7% { -webkit-transform: matrix3d(0.873, 0, 0, 0, 0, 0.94, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); transform: matrix3d(0.873, 0, 0, 0, 0, 0.94, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } 15.2% { -webkit-transform: matrix3d(0.941, 0, 0, 0, 0, 1.014, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); transform: matrix3d(0.941, 0, 0, 0, 0, 1.014, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } 17.5% { -webkit-transform: matrix3d(0.973, 0, 0, 0, 0, 1.045, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); transform: matrix3d(0.973, 0, 0, 0, 0, 1.045, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } 19% { -webkit-transform: matrix3d(0.99, 0, 0, 0, 0, 1.058, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); transform: matrix3d(0.99, 0, 0, 0, 0, 1.058, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } 22.8% { -webkit-transform: matrix3d(1.019, 0, 0, 0, 0, 1.071, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); transform: matrix3d(1.019, 0, 0, 0, 0, 1.071, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } 23.2% { -webkit-transform: matrix3d(1.021, 0, 0, 0, 0, 1.071, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); transform: matrix3d(1.021, 0, 0, 0, 0, 1.071, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } 30.3% { -webkit-transform: matrix3d(1.036, 0, 0, 0, 0, 1.049, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); transform: matrix3d(1.036, 0, 0, 0, 0, 1.049, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } 30.4% { -webkit-transform: matrix3d(1.036, 0, 0, 0, 0, 1.049, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); transform: matrix3d(1.036, 0, 0, 0, 0, 1.049, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } 37.5% { -webkit-transform: matrix3d(1.028, 0, 0, 0, 0, 1.016, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); transform: matrix3d(1.028, 0, 0, 0, 0, 1.016, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } 44.6% { -webkit-transform: matrix3d(1.016, 0, 0, 0, 0, 0.997, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); transform: matrix3d(1.016, 0, 0, 0, 0, 0.997, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } 50.3% { -webkit-transform: matrix3d(1.008, 0, 0, 0, 0, 0.992, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); transform: matrix3d(1.008, 0, 0, 0, 0, 0.992, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } 51.7% { -webkit-transform: matrix3d(1.006, 0, 0, 0, 0, 0.992, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); transform: matrix3d(1.006, 0, 0, 0, 0, 0.992, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } 70.3% { -webkit-transform: matrix3d(0.998, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); transform: matrix3d(0.998, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } 80.3% { -webkit-transform: matrix3d(0.999, 0, 0, 0, 0, 1.001, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); transform: matrix3d(0.999, 0, 0, 0, 0, 1.001, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } 100% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } */ }
@include keyframes(ax-modal-destroy) { /* from { @include transform(scale(1)); opacity: 1.0; } to { @include transform(scale(0.5)); opacity: 0.0; } */ 100% { opacity: 0.0; @include transform(translateY(20%)); } 0% { opacity: 1.0; @include transform(translateY(0)); }
}
@include keyframes(ax-modal-fullscreen) { 0% { @include transform(translateY(20%)); } 100% { @include transform(translateY(0)); } }
@include keyframes(ax-modal-fullscreen-destroy) { 0% { @include transform(translateY(0)); } 100% { @include transform(translateY(100%)); } }
@include keyframes(ax-modal-fade-in){ 0% { opacity: 0.0; } 100% { opacity: 1.0; } }
@include keyframes(ax-modal-fade-out){ 0% { opacity: 1.0; } 100% { opacity: 0.0; } }
// mixins --------------------------------------------- end
.ax5modal { * { box-sizing: border-box; } *:before, *:after { box-sizing: border-box; }
@include animation(ax-modal $ax5modal-easing-time-open $ax5modal-easing-open forwards); @include transform(translateZ(0px)); //@include transition(all $ax5modal-easing-time-open linear);
@include ax-modal(); @include ax-modal-section(); @include modal-variant($ax5modal-default-text, $ax5modal-default-border, $ax5modal-default-header-bg);
&.destroy { @include animation(ax-modal-destroy $ax5modal-easing-time-close $ax5modal-easing-close forwards); }
&.fullscreen { border: 0px none; @include ax-border-radius(0px); @include box-shadow(none); @include animation(ax-modal-fullscreen $ax5modal-easing-time-open $ease-out-back forwards);
&.destroy { @include animation(ax-modal-fullscreen-destroy $ax5modal-easing-time-close $ease-out-expo forwards); } }
&.draged{ .ax-modal-header { opacity: 0.5; } .ax-modal-body { opacity: 0.5; } } [data-ax5modal-resizer]{ position: absolute; display: block; &:before{ position: absolute; content: ' '; display: block; width: auto; height: auto; left: auto; top: auto; right: auto; bottom: auto; //background: #ff3300;
//opacity: 0.3;
}
&[data-ax5modal-resizer="top"]{ left: 0; top: 0; width: 100%; height: 0;
&:before{ width: 100%; height: 8px; left: 0; top: -4px; cursor: row-resize; } } &[data-ax5modal-resizer="bottom"]{ left: 0; bottom: 0; width: 100%; height: 0;
&:before{ width: 100%; height: 8px; left: 0; top: -4px; cursor: row-resize; } } &[data-ax5modal-resizer="left"]{ left: 0; top: 0; width: 0; height: 100%;
&:before{ width: 8px; height: 100%; left: -4px; top: 0; cursor: col-resize; } } &[data-ax5modal-resizer="right"]{ right: 0; top: 0; width: 0; height: 100%;
&:before{ width: 8px; height: 100%; left: -4px; top: 0; cursor: col-resize; } } &[data-ax5modal-resizer="top-left"]{ left: 0; top: 0; width: 0; height: 0;
&:before{ width: 8px; height: 8px; left: -4px; top: -4px; cursor: nwse-resize; } } &[data-ax5modal-resizer="top-right"]{ right: 0; top: 0; width: 0; height: 0;
&:before{ width: 8px; height: 8px; left: -4px; top: -4px; cursor: nesw-resize; } } &[data-ax5modal-resizer="bottom-left"]{ left: 0; bottom: 0; width: 0; height: 0;
&:before{ width: 8px; height: 8px; left: -4px; top: -4px; cursor: nesw-resize; } } &[data-ax5modal-resizer="bottom-right"]{ right: 0; bottom: 0; width: 0; height: 0;
&:before{ width: 8px; height: 8px; left: -4px; top: -4px; cursor: nwse-resize; } } } }
// resizer가 활성화 되면 리사이저 백그라운드도 함께 활성화 됩니다. 백그라운드는 페이지 전체를 투명 레이어로 덮어 리사이저가 자유롭게 활동 하도록 도와 줍니다.
.ax5modal-resizer-background{ position: fixed; left: 0px; top: 0px; width: 100%; height: 100%; background: transparent; z-index: $ax5modal-z-index; //opacity: 0.1;
cursor: move; } .ax5modal-resizer{ position: absolute; left: 0px; top: 0px;
z-index: $ax5modal-z-index + 1; cursor: move;
box-sizing: $ax5modal-box-model; background-color: $ax5modal-resizer-bg; border: $ax5modal-resizer-border; opacity: $ax5modal-resizer-opacity;
@include ax-border-radius($ax5modal-border-radius); @include box-shadow($ax5modal-box-shadow); }
|