@pi0/framework7
Version:
Full featured mobile HTML framework for building iOS & Android apps
210 lines (208 loc) • 4.02 kB
text/less
/* === FAB === */
.fab {
position: absolute;
z-index: 1500;
}
.fab > a, .fab-buttons a {
position: relative;
transition-duration: 300ms;
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
z-index: 1;
}
.fab > a {
i {
position: absolute;
left: 50%;
top: 50%;
transform: translate3d(-50%, -50%, 0) rotate(0deg) scale(1);
transition: 300ms;
}
i + i {
transform: translate3d(-50%, -50%, 0) rotate(-90deg) scale(0.5);
opacity: 0;
}
}
.fab[class*="fab-center"] {
left: 50%;
transform: translateX(-50%);
}
.fab[class*="left-center"], .fab[class*="right-center"] {
top: 50%;
transform: translateY(-50%);
}
.fab[class*="center-center"] {
top: 50%;
left: 50%;
transform: translateX(-50%) translateY(-50%);
}
.fab div.fab-buttons {
a {
width: 40px;
height: 40px;
}
}
.fab-buttons {
display: flex;
visibility: hidden;
pointer-events: none;
position: absolute;
a {
opacity: 0;
}
}
.fab-opened:not(.fab-morph) > a {
i {
transform: translate3d(-50%, -50%, 0) rotate(90deg) scale(0.5);
opacity: 0;
}
i + i {
transform: translate3d(-50%, -50%, 0) rotate(0deg) scale(1);
opacity: 1;
}
}
.fab-opened .fab-buttons {
visibility: visible;
pointer-events: auto;
a {
opacity: 1;
transform: translate3d(0, 0px, 0) scale(1) ;
&:nth-child(2) {
transition-delay: 50ms;
}
&:nth-child(3) {
transition-delay: 100ms;
}
&:nth-child(4) {
transition-delay: 150ms;
}
&:nth-child(5) {
transition-delay: 200ms;
}
&:nth-child(6) {
transition-delay: 250ms;
}
}
}
.fab-buttons-top, .fab-buttons-bottom {
left: 50%;
width: 40px;
margin-left: -20px;
}
.fab-buttons-top {
bottom: 100%;
margin-bottom: 16px;
flex-direction: column-reverse;
a {
transform: translate3d(0, 8px, 0) scale(0.3);
transform-origin: center bottom;
+ a {
margin-bottom: 16px;
}
}
}
.fab-buttons-bottom {
top: 100%;
margin-top: 16px;
flex-direction: column;
a {
transform: translate3d(0, -8px, 0) scale(0.3);
transform-origin: center top;
+ a {
margin-top: 16px;
}
}
}
.fab-buttons-left, .fab-buttons-right {
top: 50%;
height: 40px;
margin-top: -20px;
}
.fab-buttons-left {
right: 100%;
margin-right: 16px;
.ltr({
flex-direction: row-reverse;
});
a {
transform: translate3d(8px, 0px, 0) scale(0.3);
transform-origin: right center;
+ a {
margin-right: 16px;
}
}
}
.fab-buttons-right {
left: 100%;
margin-left: 16px;
.rtl({
flex-direction: row-reverse;
});
a {
transform: translate3d(-8px, 0, 0) scale(0.3);
transform-origin: left center;
+ a {
margin-left: 16px;
}
}
}
.fab-buttons-center {
left: 0%;
top: 0%;
width: 100%;
height: 100%;
a {
position: absolute;
&:nth-child(1) {
left: 50%;
margin-left: -20px;
bottom: 100%;
margin-bottom: 16px;
transform: translateY(-8px) scale(0.3);
transform-origin: center bottom;
}
&:nth-child(2) {
left: 100%;
margin-top: -20px;
top: 50%;
margin-left: 16px;
transform: translateX(-8px) scale(0.3);
transform-origin: left center;
}
&:nth-child(3) {
left: 50%;
margin-left: -20px;
top: 100%;
margin-top: 16px;
transform: translateY(8px) scale(0.3);
transform-origin: center top;
}
&:nth-child(4) {
right: 100%;
margin-top: -20px;
top: 50%;
margin-right: 16px;
transform: translateX(8px) scale(0.3);
transform-origin: right center;
}
}
}
.fab-opened.fab-morph > a {
i {
opacity: 0;
}
}
.fab-morph, .fab-morph > a, .fab-morph-target {
transition-duration: 250ms;
}
.fab-morph-target:not(.fab-morph-target-visible) {
display: none;
}
& when (@include-ios-theme) {
@import url('./fab-ios.less');
}
& when (@include-md-theme) {
@import url('./fab-md.less');
}