framework7-without-localstorage
Version:
Full featured mobile HTML framework for building iOS & Android apps
172 lines (171 loc) • 4.25 kB
text/less
/* === Floating Action Button === */
.floating-button {
position: absolute;
right: 15px;
bottom: 15px;
width: 50px;
height: 50px;
border-radius: 50%;
z-index: 1500;
background-color: @themeColor;
color:#fff;
overflow: hidden;
.transition(300ms);
.flexbox();
.align-items(center);
.justify-content(center);
html:not(.watch-active-state) &:active, &.active-state {
.transition(0ms);
background: darken(@themeColor, 8%);
}
.toolbar-fixed &, .toolbar-through &{
bottom: 15px + 44px;
}
.tabbar-labels-fixed &, .tabbar-labels-through &{
bottom: 15px + 50px;
@media (min-width: 768px) {
bottom: 15px + 56px;
}
}
}
.floating-button-toolbar, .speed-dial {
position: absolute;
right: 15px;
bottom: 15px;
z-index: 1500;
.toolbar-fixed &, .toolbar-through &{
bottom: 15px + 44px;
}
.tabbar-labels-fixed &, .tabbar-labels-through &{
bottom: 15px + 50px;
@media (min-width: 768px) {
bottom: 15px + 56px;
}
}
.floating-button {
right: 0;
bottom: 0;
position: relative;
}
}
// Speed Dial
.speed-dial {
.floating-button {
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;
}
}
&.speed-dial-opened {
.floating-button {
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;
}
}
}
}
.speed-dial-buttons {
position: absolute;
width: 40px;
left: 50%;
margin-left: -20px;
bottom: 100%;
margin-bottom: 16px;
.flexbox();
-webkit-box-orient: vertical;
-webkit-box-direction: reverse;
-moz-box-orient: vertical;
-moz-box-direction: reverse;
-ms-flex-direction: column-reverse;
-webkit-flex-direction: column-reverse;
flex-direction: column-reverse;
visibility: hidden;
pointer-events: none;
a {
width: 40px;
height: 40px;
opacity: 0;
color: #fff;
border-radius: 50%;
position: relative;
z-index: 1;
overflow: hidden;
background-color: @themeColor;
.transition(300ms);
.flexbox();
.align-items(center);
.justify-content(center);
.transform(translate3d(0, 8px, 0) scale(0.3));
.transform-origin(center bottom);
+ a {
margin-bottom: 16px;
}
html:not(.watch-active-state) &:active, &.active-state {
.transition(0ms);
background: darken(@themeColor, 8%);
}
}
.speed-dial-opened & {
visibility: visible;
pointer-events: auto;
a {
opacity: 1;
.transform(translate3d(0, 0, 0) scaleY(1));
// .depth(3);
&:nth-child(2) {
.delay(50ms);
}
&:nth-child(3) {
.delay(100ms);
}
&:nth-child(4) {
.delay(150ms);
}
&:nth-child(5) {
.delay(200ms);
}
&:nth-child(6) {
.delay(250ms);
}
}
}
}
// Popove Morph
.floating-button-to-popover {
&.floating-button-to-popover {
.transition(300ms);
}
&.floating-button-to-popover-in {
.transition(100ms);
i {
opacity: 0;
.transition(100ms);
}
}
&.floating-button-to-popover-scale {
border-radius: 0;
.transition(300ms);
box-shadow: none;
}
&.floating-button-to-popover-out {
.delay(0ms);
.transition(300ms);
i {
opacity: 1;
.transition(100ms);
.delay(200ms);
}
}
}