---
title: Giao diện mới
date: 2021-05-22 02:38:06.582789 UTC
---
Hôm nay, sau rất nhiều năm tạo website cá nhân này, tôi mới có một đợt tu sửa giao diện đầu tiên.

Nhìn qua thì không khác gì mấy với giao diện cũ: vẫn thanh điều hướng màu cam trên đỉnh, với dòng chữ Playground to đùng phía dưới. Thực ra, sự thay đổi lớn nhất là nằm trong code: Đổi framework CSS từ [Bootstrap](https://getbootstrap.com/docs/3.4/) v3 sang [TailwindCSS](https://tailwindcss.com/) v2, bỏ [jQuery](https://jquery.com/) và thay bằng [AlpineJS](https://github.com/alpinejs/alpine). Kết quả lớn nhất của sự thay đổi này là sửa được lỗi thanh điều hướng trong màn hình điện thoại như sau:
_Before_
_After_
Việc sửa này làm được là nhờ Tailwind. Trước đây khi dùng Bootstrap, tôi bị gặp một bất tiện là Bootstrap chỉ có các class sẵn theo những phần tử giao diện cụ thể, như `.btn`, `.navbar`, `.navbar-nav` khiến việc tùy biến rất chắp vá, sửa được cái này thì hỏng cái kia (và hình như lỗi một phần cũng vì tôi dùng lại HTML từ một template có sẵn và tác giả template đó đã viết code cho thanh điều hướng một cách không đầy đủ). TailwindCSS thì không như thế, nó không tạo class cho các đối tượng như Bootstrap mà tạo class theo kiểu "viết tắt cho thuộc tính CSS", ví dụ:
- `mt-4`: Margin phía trên (top) rộng 4 đơn vị.
- `px-4 md:pl-8`: Độ dày đệm lề (padding) theo chiều ngang là 4 đơn vị mặc định cho các màn hình, nhưng khi màn hình lớn từ cỡ "medium" (`md`) trở lên thì áp dụng padding lề trái dày 8 đơn vị.
Cách thiết kế của Tailwind đã mang tới những hiệu quả thú vị như sau. Chẳng hạn thanh điều hướng phía trên, tôi muốn ở màn hình laptop thì các link dàn hàng ngang, nhưng khi ở màn hình điện thoại thì chúng xếp dọc, tôi sẽ dùng các class của TailwindCSS như sau:
```html
```
Nghĩa là, mặc định, bất kể màn hình nào, các phần từ `