FAB mở rộng là gì?
FAB mở rộng (Extended FAB) là phiên bản nâng cấp của nút nổi truyền thống. Thay vì chỉ thực hiện một hành động, FAB mở rộng có thể hiển thị một nhóm hành động phụ, ví dụ:
- Tạo mới nội dung.
- Mở form liên hệ.
- Cuộn lên đầu trang.
- Mở menu hoặc công cụ nhanh.
Đặc điểm quan trọng của FAB mở rộng:
- Luôn cố định vị trí.
- Có hiệu ứng animate vào/ra.
- Icon xoay khi mở menu.
- Chứa nhiều nút con với animation fan-out.
Cấu trúc HTML của FAB mở rộng
<div class="fab-container uk-position-fixed uk-position-bottom-left uk-position-small">
<div class="fab-menu" id="fab-menu">
<button class="fab-item uk-button uk-button-default">A</button>
<button class="fab-item uk-button uk-button-default">B</button>
<button class="fab-item uk-button uk-button-default">C</button>
</div>
<button id="fab-main" class="fab-main uk-button uk-button-primary">+</button>
</div>
CSS tạo hiệu ứng FAB + menu fan-out
.fab-container {
z-index: 9999;
}
.fab-main {
width: 56px;
height: 56px;
border-radius: 50%;
font-size: 28px;
line-height: 1;
padding: 0;
transition: transform 0.25s ease;
}
.fab-main.open {
transform: rotate(45deg);
}
.fab-menu {
display: flex;
flex-direction: column;
gap: 10px;
margin-bottom: 10px;
position: relative;
}
.fab-item {
width: 48px;
height: 48px;
border-radius: 50%;
padding: 0;
opacity: 0;
transform: translateY(20px) scale(0.7);
pointer-events: none;
transition:
opacity 0.25s ease,
transform 0.25s ease;
}
.fab-item.show {
opacity: 1;
transform: translateY(0) scale(1);
pointer-events: auto;
}
JavaScript điều khiển mở/đóng menu
(function() {
var main = document.getElementById("fab-main");
var items = document.querySelectorAll(".fab-item");
main.addEventListener("click", function() {
var isOpen = main.classList.toggle("open");
items.forEach(function(item, i) {
if (isOpen) {
setTimeout(function() {
item.classList.add("show");
}, i * 60);
} else {
setTimeout(function() {
item.classList.remove("show");
}, i * 60);
}
});
});
})();
Demo Floating Action Button (FAB) mở rộng
Nút tròn ở góc dưới bên trái là bản demo FAB mở rộng hoàn chỉnh. Nhấn vào nút để thấy menu A/B/C bung ra với animation đẹp mắt.
Mở rộng FAB
- Thêm label cho từng mục (A – “Thêm mới”, B – “Upload”, C – “Chat”).
- Làm animation fan-out theo hình tròn (Radial FAB Menu).
- Dùng SVG icon để đẹp hơn.
- Thêm hiệu ứng shadow “bật – tắt” mạnh hơn.
Kết luận
FAB mở rộng là một UI component hiện đại, mang lại trải nghiệm tương tác cao và phù hợp với các hành động quan trọng.
Với một chút CSS + JavaScript, có thể tạo một FAB chạy animation mượt, xoay icon và bung menu theo hiệu ứng fan-out như Android.
Bình luận