- vừa được xem lúc

10 Kỹ thuật CSS nâng cao sẽ thay đổi cách bạn phát triển Frontend

0 0 2

Người đăng: Vinh Phạm

Theo Viblo Asia

Sau hơn một thập kỷ làm việc với thiết kế và phát triển frontend, tôi thực sự đánh giá cao sức mạnh thuần túy của CSS. Dù JavaScript thường được chú ý nhiều hơn, nhưng chỉ với CSS, bạn cũng có thể tạo ra những trải nghiệm tương tác tuyệt vời. Dưới đây là 10 kỹ thuật CSS nâng cao giúp bạn nâng tầm kỹ năng frontend của mình.

1. Tạo Typography Responsive với clamp()

Hàm clamp() cho phép kích thước chữ tự động điều chỉnh theo kích thước viewport mà không cần media queries:

h1 { font-size: clamp(2rem, 5vw + 1rem, 5rem);
} p { font-size: clamp(1rem, 1vw + 0.75rem, 1.5rem);
}

Điều này đảm bảo văn bản không quá nhỏ trên di động và không quá lớn trên màn hình lớn, chỉ với một dòng CSS duy nhất.

2. Sử dụng :is() để viết mã CSS gọn gàng hơn

Pseudo-class :is() giúp giảm sự lặp lại trong các bộ chọn CSS:

/* Instead of this */
header a:hover, main a:hover, footer a:hover { text-decoration: underline;
} /* Use this */
:is(header, main, footer) a:hover { text-decoration: underline;
}

Điều này giúp stylesheet dễ đọc và dễ bảo trì hơn.

3. Tạo Layout chéo với clip-path

Sử dụng clip-path để tạo các phần tử có đường cắt góc cạnh hiện đại:

.diagonal-section { clip-path: polygon(0 0, 100% 0, 100% 85%, 0 100%); padding: 100px 20px;
} .diagonal-card { clip-path: polygon(0 0, 100% 0, 95% 100%, 5% 100%);
}

Kỹ thuật này giúp bố cục trang web trở nên thú vị và sinh động hơn.

4. Viền Gradient hoạt hình

Tạo hiệu ứng viền động ấn tượng bằng CSS:

.gradient-border { position: relative; border-radius: 10px; padding: 20px;
} .gradient-border::before { content: ""; position: absolute; inset: -3px; z-index: -1; border-radius: 12px; background: linear-gradient( 45deg, #ff3c78, #ffa26b, #ff3c78, #ffa26b ); background-size: 400% 400%; animation: gradient-shift 3s ease infinite;
} @keyframes gradient-shift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; }
}

Điều này tạo ra một đường viền gradient động xung quanh phần tử.

5. Hiệu ứng Parallax nâng cao với perspective

Tạo hiệu ứng chiều sâu với CSS:

.parallax-container { height: 100vh; overflow-x: hidden; overflow-y: scroll; perspective: 10px;
} .parallax-layer { position: absolute; top: 0; left: 0; right: 0; bottom: 0;
} .parallax-bg { transform: translateZ(-10px) scale(2);
} .parallax-mid { transform: translateZ(-5px) scale(1.5);
} .parallax-front { transform: translateZ(0);
}

Hiệu ứng này giúp các phần tử di chuyển với tốc độ khác nhau khi cuộn trang.

6. Tương tác biểu mẫu nâng cao với :has():focus-within

Tạo hiệu ứng biểu mẫu thông minh mà không cần JavaScript:

/* Style form when any input has focus */
form:has(:focus) { box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.5);
} /* Style a field group when its input is valid */
.field-group:has(input:valid) label { color: green;
} /* Style a field group when its input has content */
.field-group:has(input:not(:placeholder-shown)) label { transform: translateY(-1.5rem) scale(0.8); color: #4a5568;
} /* Style form when all required fields are valid */
form:has(input[required]:valid):has(input[required]:invalid) { border-color: yellow;
} form:has(input[required]:valid):not(:has(input[required]:invalid)) { border-color: green;
}

Những bộ chọn này giúp biểu mẫu phản ứng linh hoạt với thao tác nhập liệu của người dùng.

7. Grid Layout phức tạp với khu vực định danh

Sử dụng CSS Grid với tên vùng giúp mã dễ đọc hơn:

.dashboard { display: grid; grid-template-columns: minmax(200px, 1fr) 3fr 1fr; grid-template-rows: auto 1fr 1fr auto; grid-template-areas: "header header header" "sidebar main stats" "sidebar main activity" "footer footer footer"; gap: 16px; height: 100vh;
} @media (max-width: 900px) { .dashboard { grid-template-columns: 1fr; grid-template-rows: auto auto 1fr auto auto auto; grid-template-areas: "header" "sidebar" "main" "stats" "activity" "footer"; }
} .header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.main { grid-area: main; }
.stats { grid-area: stats; }
.activity { grid-area: activity; }
.footer { grid-area: footer; }

Điều này giúp bố cục trang linh hoạt và dễ bảo trì.

8. Cuộn mượt mà với scroll-behavior

Kích hoạt cuộn mượt mà mà không cần JavaScript:

html { scroll-behavior: smooth; scroll-padding-top: 80px; /* Adjust for fixed headers */
} /* Enhance with targeted control */
.quick-nav a { scroll-behavior: smooth;
} @media (prefers-reduced-motion) { html { scroll-behavior: auto; }
}

Điều này giúp trải nghiệm cuộn trang trở nên mượt mà hơn khi nhảy đến các điểm neo trên trang.

9. Hiệu ứng ảnh độc đáo với mix-blend-mode

Sử dụng CSS blend mode để tạo hiệu ứng hình ảnh chuyên nghiệp:

.duotone { position: relative; display: inline-block;
} .duotone img { display: block; filter: grayscale(100%) contrast(1.2);
} .duotone::before { content: ""; position: absolute; inset: 0; background: #e31b6d; mix-blend-mode: color; pointer-events: none;
} .duotone::after { content: ""; position: absolute; inset: 0; background: #47c9e5; mix-blend-mode: exclusion; pointer-events: none;
}

Hiệu ứng này giúp tạo ra các hiệu ứng phối màu độc đáo mà không cần Photoshop.

10. Tạo máy trạng thái với CSS Variables và :has()

Quản lý trạng thái của giao diện mà không cần JavaScript:

.accordion { --state: "closed";
} .accordion:has(:checked) { --state: "open";
} .accordion-content { max-height: 0; overflow: hidden; transition: max-height 0.3s;
} .accordion:has([value="open"]) .accordion-content { max-height: 500px;
}

Điều này cho phép thay đổi giao diện dựa trên trạng thái của các phần tử trong DOM.

Kết luận

Những kỹ thuật CSS nâng cao này cho thấy rằng CSS hiện đại mạnh mẽ hơn rất nhiều so với những gì nhiều lập trình viên tưởng tượng. Khả năng tạo trải nghiệm tương tác phong phú mà không cần JavaScript không chỉ giúp tăng hiệu suất mà còn làm cho giao diện dễ truy cập hơn.

Bằng cách nắm vững các kỹ thuật CSS này, bạn sẽ có thể xây dựng những tính năng tiên tiến với ít mã hơn và khả năng tương thích trình duyệt tốt hơn.

Bình luận

Bài viết tương tự

- vừa được xem lúc

The Twelve-Factor App, cẩm nang gối đầu giường trong xây dựng application (Phần 1)

Giới thiệu. Ngày nay các phần mềm được triển khai dưới dạng các dịch vụ, chúng được gọi là các web apps hay software-as-a-service (SaaS).

0 0 32

- vừa được xem lúc

8 Sai lầm phổ biến khi lập trình Android

1. Hard code.

0 0 188

- vừa được xem lúc

Popular interview question: What is the difference between Process and Thread? 10 seconds a day

Video được đăng tại channel Tips Javascript

0 0 32

- vừa được xem lúc

Thuật toán và ứng dụng - P1

Mục đích series. . Những bài toán gắn liền với thực tế. Từ đó thấy được tầm quan trọng của thuật toán trong lập trình.

0 0 36

- vừa được xem lúc

Tác dụng của Docker trong quá trình học tập

Docker bây giờ gần như là kiến thức bắt buộc đối với các anh em Dev và Devops, nhưng mà đối với sinh viên IT nói chung vẫn còn khá mơ hồ và không biết tác dụng thực tế của nó. Hôm nay mình sẽ chia sẻ

0 0 33

- vừa được xem lúc

Làm giàu trong ngành IT

Hầu như mọi người đều đi làm để kiếm tiền, ít người đi làm vì thấy cái nghề đó thú vị lắm. Bây giờ vất cho mình 100 tỷ bảo mình bỏ nghề thì mình cũng bỏ thôi.

0 0 38