10 bí kíp CSS “thần thánh” cho nhà phát triển giao diện người dùng
Trong bài viết này, chúng ta sẽ khám phá 10 thủ thuật CSS tuyệt vời sẽ giúp bạn giải quyết những thách thức thiết kế phổ biến, cải thiện quy trình làm việc và thêm phần thú vị cho các dự án của bạn. Đây không chỉ là những thủ thuật cũ – chúng thiết thực, mạnh mẽ và hoàn hảo cho các nhà phát triển giao diện người dùng như chúng ta, những người muốn tạo ra trải nghiệm web tuyệt vời.
Bạn có thể tham khảo thêm bài viết: Tối ưu, nén CSS và JS tăng tốc độ tải trang
Sự kỳ diệu của các biến CSS
1. Biến CSS là gì?
Đầu tiên trong danh sách các thủ thuật CSS của chúng ta là việc sử dụng các biến CSS, còn được gọi là các thuộc tính tùy chỉnh CSS. Nếu bạn chưa bắt đầu sử dụng chúng, bạn sẽ được trải nghiệm một điều thú vị!
Biến CSS cho phép bạn lưu trữ các giá trị cụ thể và sử dụng lại chúng trong toàn bộ stylesheet của mình. Điều này đặc biệt hữu ích khi bạn làm việc với màu sắc, phông chữ hoặc bất kỳ giá trị nào mà bạn thấy mình thường xuyên lặp lại.
2. Cách sử dụng biến CSS
Dưới đây là một ví dụ nhanh về cách bạn có thể thiết lập và sử dụng các biến CSS:
:root {
--main-color: #3498db;
--secondary-color: #2ecc71;
--font-size: 16px;
}
.button {
background-color: var(--main-color);
font-size: var(--font-size);
}
.header {
color: var(--secondary-color);
}
Những lợi ích mang lại:
- Dễ dàng cập nhật: Thay đổi giá trị ở một nơi và nó sẽ cập nhật ở mọi nơi.
- Cải thiện khả năng đọc: Làm cho CSS của bạn ngữ nghĩa hơn và dễ hiểu hơn.
- Hỗ trợ tạo theme: Tuyệt vời để tạo chế độ sáng và tối hoặc nhiều bảng màu.
Sức mạnh của các phần tử giả ::before và ::after
1. Hiểu về phần tử giả
Tiếp theo trong kho vũ khí thủ thuật CSS của chúng ta là các phần tử giả ::before và ::after. Những viên ngọc nhỏ này cho phép bạn thêm nội dung vào một phần tử mà không cần thêm mã đánh dấu HTML.
2. Ứng dụng thực tế
Bạn có thể sử dụng các phần tử giả này cho tất cả các loại hiệu ứng thú vị:
- Thêm các yếu tố trang trí.
- Tạo các bong bóng thông tin giống như chú giải công cụ.
- Tạo nội dung động.
- Tạo bố cục phức tạp.
3. Ví dụ: Tạo khối trích dẫn
Dưới đây là một ví dụ đơn giản về cách bạn có thể sử dụng ::before và ::after để tạo một khối trích dẫn phong cách:
blockquote {
position: relative;
padding: 20px;
background: #f9f9f9;
}
blockquote::before,
blockquote::after {
content: '"';
font-size: 50px;
position: absolute;
color: #ccc;
}
blockquote::before {
top: 0;
left: 10px;
}
blockquote::after {
bottom: -20px;
right: 10px;
}
Flexbox: Người bạn tốt nhất cho bố cục của bạn
1. Tính linh hoạt của Flexbox
Flexbox không hẳn là một thủ thuật, nhưng nó là một công cụ mạnh mẽ đến mức xứng đáng có một vị trí trong danh sách này. Nếu bạn chưa sử dụng Flexbox, bạn đang bỏ lỡ một trong những cách linh hoạt và hiệu quả nhất để tạo bố cục trong CSS.
2. Các thuộc tính Flexbox chính
- display: flex; - Biến một phần tử thành một flex container.
- flex-direction - Kiểm soát hướng của các flex item.
- justify-content - Căn chỉnh các item dọc theo trục chính.
- align-items - Căn chỉnh các item dọc theo trục chéo.
3. Một bố cục Flexbox đơn giản
Dưới đây là một ví dụ nhanh về cách bạn có thể sử dụng Flexbox để tạo bố cục đáp ứng:
.container {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
}
.item {
flex: 0 1 calc(33.333% - 20px);
margin: 10px;
}
@media (max-width: 768px) {
.item {
flex: 0 1 calc(50% - 20px);
}
}
@media (max-width: 480px) {
.item {
flex: 0 1 100%;
}
}
Điều này tạo ra một lưới linh hoạt điều chỉnh từ ba cột thành hai, sau đó thành một cột khi kích thước màn hình giảm.
CSS Grid bí kíp
1. Grid so với Flexbox
Trong khi Flexbox rất tốt cho bố cục một chiều, CSS Grid đưa nó lên cấp độ tiếp theo với bố cục hai chiều. Nó hoàn hảo để tạo các cấu trúc trang phức tạp một cách dễ dàng.
2. Thiết lập Grid cơ bản
Dưới đây là cách bạn có thể thiết lập một lưới đơn giản:
.grid-container {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-gap: 20px;
}
.grid-item {
background-color: #f0f0f0;
padding: 20px;
text-align: center;
}
3. Các kỹ thuật Grid nâng cao
Bạn có thể thực sự sáng tạo với Grid bằng cách sử dụng các vùng lưới được đặt tên:
.grid-container {
display: grid;
grid-template-areas:
"header header header"
"sidebar main main"
"footer footer footer";
grid-gap: 20px;
}
.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.main { grid-area: main; }
.footer { grid-area: footer; }
Điều này tạo ra một bố cục với tiêu đề, thanh bên, khu vực nội dung chính và chân trang, tất cả chỉ với một vài dòng CSS!
Thành thạo chuyển đổi CSS
1. Chuyển động mượt mà với Transitions
Chuyển đổi CSS cho phép bạn thay đổi giá trị thuộc tính một cách mượt mà trong một khoảng thời gian nhất định. Chúng là một cách tuyệt vời để thêm các hiệu ứng động tinh tế vào các yếu tố giao diện người dùng của bạn mà không cần JavaScript.
2. Cú pháp chuyển đổi cơ bản
Cú pháp cơ bản cho chuyển đổi là:
.element {
transition: property duration timing-function delay;
}
3. Ví dụ thực tế: Hiệu ứng di chuột qua nút
Hãy tạo một nút đơn giản với sự thay đổi màu sắc mượt mà khi di chuột:
.button {
background-color: #3498db;
color: white;
padding: 10px 20px;
border: none;
transition: background-color 0.3s ease;
}
.button:hover {
background-color: #2980b9;
}
Điều này tạo ra một nút thay đổi màu sắc mượt mà khi bạn di chuột qua nó, cung cấp phản hồi trực quan tốt cho người dùng.
Điều kỳ diệu của CSS Shapes
1. Thoát ra khỏi chiếc hộp
CSS Shapes cho phép bạn tạo các bố cục không phải hình chữ nhật, điều này có thể thêm một cái nhìn độc đáo và thú vị cho thiết kế của bạn.
2. Sử dụng shape-outside
Thuộc tính shape-outside xác định một hình dạng mà nội dung nội tuyến sẽ bao quanh. Dưới đây là một ví dụ:
.circle-shape {
width: 200px;
height: 200px;
float: left;
shape-outside: circle(50%);
clip-path: circle(50%);
background: #3498db;
}
Điều này tạo ra một hình tròn mà văn bản sẽ bao quanh, tạo ra một bố cục trực quan thú vị.
3. Kết hợp Shapes với hình ảnh
Bạn cũng có thể sử dụng shape-outside với hình ảnh để tạo các hình dạng phức tạp hơn:
.image-shape {
float: left;
shape-outside: url('path-to-your-image.png');
}
Điều này cho phép văn bản chạy xung quanh đường viền của hình ảnh của bạn, tạo ra sự tích hợp liền mạch giữa văn bản và hình ảnh.
Sức mạnh của CSS Counters
1. Đánh số tự động với CSS
CSS Counters giống như các biến được duy trì bởi CSS mà giá trị của chúng có thể được tăng lên bằng các quy tắc CSS. Chúng rất tốt để tạo danh sách hoặc phần được đánh số mà không cần đánh dấu thêm.
2. Thiết lập Counters
Dưới đây là cách bạn có thể thiết lập và sử dụng một counter:
body {
counter-reset: section;
}
h2::before {
counter-increment: section;
content: "Section " counter(section) ": ";
}
Điều này sẽ tự động đánh số các phần tử h2 của bạn bằng "Section 1:", "Section 2:", v.v.
3. Counters lồng nhau
Bạn thậm chí có thể tạo các counter lồng nhau cho các phần phụ:
body {
counter-reset: section;
}
h2 {
counter-reset: subsection;
}
h2::before {
counter-increment: section;
content: "Section " counter(section) ": ";
}
h3::before {
counter-increment: subsection;
content: counter(section) "." counter(subsection) " ";
}
Điều này tạo ra một hệ thống đánh số như "1.1", "1.2", "2.1", v.v., cho các phần và phần phụ của bạn.
Thanh cuộn tùy chỉnh với CSS
1. Tạo kiểu cho thanh cuộn
Bạn có biết bạn có thể tạo kiểu cho thanh cuộn bằng CSS không? Mặc dù điều này không hoạt động trong tất cả các trình duyệt, nhưng nó có thể thêm một điểm nhấn đẹp mắt cho thiết kế của bạn trong các trình duyệt được hỗ trợ.
2. Tạo kiểu thanh cuộn Webkit
Dưới đây là một ví dụ về cách tạo kiểu cho thanh cuộn trong các trình duyệt webkit:
::-webkit-scrollbar {
width: 10px;
}
::-webkit-scrollbar-track {
background: #f1f1f1;
}
::-webkit-scrollbar-thumb {
background: #888;
}
::-webkit-scrollbar-thumb:hover {
background: #555;
}
Điều này tạo ra một thanh cuộn tùy chỉnh với nút cuộn màu xám đậm dần khi di chuột.
3. Tạo kiểu thanh cuộn đa trình duyệt
Đối với giải pháp tương thích đa trình duyệt hơn, bạn có thể sử dụng các thuộc tính scrollbar-color và scrollbar-width mới:
* {
scrollbar-width: thin;
scrollbar-color: #888 #f1f1f1;
}
Điều này đặt một thanh cuộn mỏng với nút cuộn màu xám và đường ray màu xám nhạt trên các trình duyệt hỗ trợ các thuộc tính này.
Tooltips chỉ với CSS
1. Không cần JavaScript
Tooltips là một cách tuyệt vời để cung cấp thêm thông tin mà không làm lộn xộn giao diện người dùng của bạn. Và bạn đoán xem? Bạn có thể tạo chúng chỉ bằng CSS!
2. Tooltip CSS cơ bản
Dưới đây là một tooltip chỉ CSS đơn giản:
.tooltip {
position: relative;
display: inline-block;
border-bottom: 1px dotted black;
}
.tooltip .tooltiptext {
visibility: hidden;
width: 120px;
background-color: black;
color: #fff;
text-align: center;
border-radius: 6px;
padding: 5px 0;
position: absolute;
z-index: 1;
bottom: 125%;
left: 50%;
margin-left: -60px;
opacity: 0;
transition: opacity 0.3s;
}
.tooltip:hover .tooltiptext {
visibility: visible;
opacity: 1;
}
Để sử dụng, bạn sẽ cấu trúc HTML như thế này:
<div class="tooltip">Hover over me
<span class="tooltiptext">Tooltip text</span>
</div>
Điều này tạo ra một tooltip xuất hiện khi bạn di chuột qua văn bản, với hiệu ứng mờ dần mượt mà.
Accordion chỉ với CSS
1. Nội dung có thể mở rộng mà không cần JavaScript
Thủ thuật CSS cuối cùng của chúng ta là hiệu ứng accordion tiện lợi mà không cần bất kỳ JavaScript nào. Điều này rất tốt cho các phần Câu hỏi thường gặp hoặc bất kỳ nội dung nào bạn muốn mở rộng và thu gọn.
2. Accordion chỉ CSS
Dưới đây là cách bạn có thể tạo accordion chỉ CSS:
.accordion {
max-width: 500px;
margin: 0 auto;
}
.accordion-item {
border-bottom: 1px solid #ddd;
}
.accordion-header {
display: block;
padding: 15px;
background-color: #f4f4f4;
color: #333;
text-decoration: none;
position: relative;
cursor: pointer;
}
.accordion-header::after {
content: '+';
position: absolute;
right: 15px;
top: 50%;
transform: translateY(-50%);
}
.accordion-content {
max-height: 0;
overflow: hidden;
transition: max-height 0.3s ease-out;
}
.accordion-item input[type="checkbox"] {
display: none;
}
.accordion-item input[type="checkbox"]:checked ~ .accordion-content {
max-height: 1000px;
}
.accordion-item input[type="checkbox"]:checked ~ .accordion-header::after {
content: '-';
}
Và đây là cấu trúc HTML:
<div class="accordion">
<div class="accordion-item">
<input type="checkbox" id="item1">
<label class="accordion-header" for="item1">Section 1</label>
<div class="accordion-content">
<p>Content for section 1...</p>
</div>
</div>
<!-- Repeat for more accordion items -->
</div>
Điều này tạo ra một accordion có thể mở rộng hoạt động hoàn toàn với CSS, không cần JavaScript!
Cảm ơn các bạn đã theo dõi!
All rights reserved