lixin-web
Version:
vue and bootstrap
116 lines (108 loc) • 2.61 kB
text/less
.modal{
.display(flex);
.align-items(center);
.justify-content(center);
pointer-events: none;
&.in{
pointer-events: auto;
}
}
//iOS Safari position fixed click offset issue,not transform
@media (min-width: @screen-md) and (device-aspect-ratio: 16/9),(device-aspect-ratio: 16/10){
.modal{
visibility: hidden;
&.fade{
opacity: 1;
.transition-duration(.45s);
}
&.in{
visibility: visible;
.modal-dialog {
.animation(modalComeIn .25s ease);
visibility: visible; /* to keep @ final state */
}
.modal-body {
opacity: 1;
transform: translateY(0) scale(1, 1);
}
}
&.state-leave {
.modal-dialog {
.animation(modalHeadOut .35s ease .1s);
visibility: visible;
}
.modal-body {
opacity: 0;
transform: translateY(0) scale(1, 1);
.transition-delay(0s);
.transition-duration(.35s);
.transition-timing-function(ease);
.translateY(25px);
}
}
}
.modal-dialog {
visibility: hidden;
margin-top: 10% \9;
.box-shadow(2px 2px 8px 1px rgba(0,0,0,.2));
.backface-visibility(hidden); // helps render animation
.transform(translate3d(0,0,0)); // helps render animation
.transform-style(preserve-3d); // helps render animation
> .close{
position: absolute;
right: 8px;
top: 5px;
z-index:1;
font-size: 24px;
}
}
.modal-body {
opacity: 0;
.transform(translateY(0) scale(.8, .8) translateZ(0));
.transition-property(opacity, transform);
.transition-duration(.25s);
.transition-delay(.1s);
}
.modal-backdrop{
visibility: hidden;
.transition(opacity .25s ease 0s, visibility linear .35s);
&.in {
visibility: visible;
.transition-delay(0s);
.transition-duration(.2s, 0s);
}
}
}
*::-ms-backdrop, .modal{display: block}
@media @ie10hack {
.modal{display: block}
}
*::-ms-backdrop, .modal-dialog{
margin-top: 10%;}
@keyframes modalComeIn {
0% {
visibility: hidden;
opacity: 0;
transform: scale(0.8, 0.8);
}
65.5% {
transform: scale(1.03, 1.03);
}
100% {
visibility: visible;
opacity: 1;
transform: scale(1, 1);
}
}
@keyframes modalHeadOut {
0% {
visibility: visible;
opacity: 1;
transform: translateY(0) scale(1, 1);
}
100% {
visibility: hidden;
opacity: 0;
transform: translateY(35px) scale(0.97, 0.97);
}
}