CSS Multiple Backgrounds cho phép bạn áp dụng nhiều class hình nền cho cùng một phần tử trong CSS. Điều này giúp tạo ra các hiệu ứng nền phức tạp, sáng tạo và phong phú hơn cho thiết kế web mà không cần sử dụng thêm thẻ HTML hoặc hình ảnh lồng ghép phức tạp. Bài viết này sẽ hướng dẫn bạn cách sử dụng thuộc tính background để thêm nhiều hình nền, cùng các ví dụ minh họa rõ ràng. Đây là một phần trong chuỗi bài học CSS của "codetuthub.com", bổ sung thêm cho các kiến thức như CSS Background Gradient, CSS Background Size, và CSS Border Images.
1. Tổng quan về CSS Multiple Backgrounds
Trong CSS, thuộc tính background có thể chứa nhiều hình nền cùng lúc. Để thêm nhiều class nền, bạn chỉ cần tách các class bằng dấu phẩy. Các hình nền sẽ được xếp chồng lên nhau theo thứ tự từ trên xuống dưới, với class đầu tiên ở trên cùng và class cuối cùng ở dưới cùng.
Cú pháp
selector {
background: background1, background2, background3;
}- background1, background2, ...: Các class hình nền, có thể là hình ảnh, gradient, hoặc màu sắc.
Ví dụ:
.box {
width: 300px;
height: 300px;
background: url('image1.png'), url('image2.png'), #4CAF50;
}Trong ví dụ trên:
image1.pnglà class nền trên cùng.image2.pnglà class nền kế tiếp.- Màu
#4CAF50là class nền dưới cùng.
2. Các thuộc tính hỗ trợ cho multiple backgrounds
Khi sử dụng nhiều hình nền, các thuộc tính background-size, background-repeat, background-position, và background-attachment cho phép bạn tùy chỉnh từng class nền. Để điều chỉnh cho từng class nền, bạn sử dụng cùng cú pháp với dấu phẩy.
Ví dụ
.box {
width: 400px;
height: 400px;
background-image: url('pattern.png'), linear-gradient(to right, #f06, #4a90e2);
background-repeat: repeat, no-repeat;
background-position: center, top left;
background-size: auto, cover;
}Trong ví dụ này:
background-imageáp dụngpattern.pngvà một gradient.background-repeatthiết lậppattern.pnglặp lại còn gradient không lặp.background-positioncănpattern.pngở giữa, gradient ở góc trên trái.background-sizeđiều chỉnh kích thước tự động (auto) chopattern.pngvàcovercho gradient.
3. Tạo hiệu ứng với CSS Multiple Backgrounds
3.1 Tạo hiệu ứng class nền chồng
Một ứng dụng phổ biến của multiple backgrounds là xếp chồng hình ảnh lên gradient hoặc màu sắc. Điều này giúp tạo ra các class nền phức tạp và thu hút người dùng.
.header {
height: 250px;
background: url('texture.png'), linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5));
background-blend-mode: multiply;
background-size: cover, cover;
}Trong ví dụ này, hình ảnh texture.png kết hợp với gradient để tạo ra hiệu ứng phủ bóng mờ. Điều này giúp nội dung phía trên hình nền dễ nhìn hơn.
3.2 Tạo hiệu ứng thị sai (Parallax)
Bạn có thể tạo hiệu ứng thị sai bằng cách sử dụng background-attachment: fixed; cho một trong các class nền, giúp class nền này cố định trong khi người dùng cuộn trang.
.parallax-section {
height: 500px;
background: url('parallax-image.jpg'), linear-gradient(to bottom, rgba(255, 255, 255, 0.5), rgba(0, 0, 0, 0.5));
background-attachment: fixed, scroll;
background-size: cover, cover;
background-position: center, center;
}Ở ví dụ trên, hình nền parallax-image.jpg sẽ cố định khi cuộn trang, tạo ra hiệu ứng thị sai trong khi gradient cuộn theo nội dung.
4. Kết hợp multiple backgrounds với gradient và hình ảnh
Multiple backgrounds còn giúp tạo hiệu ứng phức tạp bằng cách kết hợp hình ảnh với gradient và màu sắc nền khác nhau. Đây là cách tạo ra các hiệu ứng độc đáo và khác biệt cho giao diện.
Ví dụ tạo hiệu ứng nhiều class nền
.banner {
height: 300px;
background: linear-gradient(to right, #ff7e5f, #feb47b), url('waves.png'), radial-gradient(circle, #ffffff, #e0e0e0);
background-size: cover, 150px, auto;
background-repeat: no-repeat, repeat-x, no-repeat;
background-position: center, bottom, top;
}Trong ví dụ trên:
- Gradient là class nền trên cùng, được áp dụng với
covervà căn giữa. - Hình ảnh
waves.pnglặp ngang ở dưới gradient và nằm phía cuối phần tử. - Gradient tròn (
radial-gradient) ở dưới cùng, căn ở trên và bao phủ toàn bộ.
5. Mẹo tối ưu CSS Multiple Backgrounds trong thiết kế
Khi sử dụng nhiều hình nền, hãy lưu ý các mẹo tối ưu dưới đây để đảm bảo hiệu suất và hiệu quả thiết kế.
5.1 Sử dụng hình ảnh kích thước phù hợp
Sử dụng hình ảnh có kích thước vừa phải, tránh sử dụng hình ảnh quá lớn gây tải chậm. Bạn có thể tối ưu hình ảnh trước khi thêm vào CSS.
5.2 Tận dụng thuộc tính background-blend-mode
background-blend-mode giúp bạn pha trộn các class nền để tạo ra các hiệu ứng thị giác thú vị mà không cần thêm nhiều class hình nền khác nhau.
.overlay-effect {
height: 300px;
background: url('texture.jpg'), linear-gradient(rgba(255, 0, 0, 0.5), rgba(0, 0, 255, 0.5));
background-size: cover;
background-blend-mode: overlay;
}5.3 Kết hợp với các thuộc tính khác như border-radius và box-shadow
Kết hợp multiple backgrounds với các thuộc tính như border-radius và box-shadow giúp tăng tính thẩm mỹ cho thiết kế. Để hiểu thêm về các hiệu ứng này, bạn có thể tham khảo bài viết CSS Box Shadow và CSS Rounded Corners trên "codetuthub.com".
.card {
width: 300px;
height: 400px;
background: url('card-bg.jpg'), linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(0, 0, 0, 0.8));
border-radius: 15px;
box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.2);
overflow: hidden;
}6. Kết luận
CSS Multiple Backgrounds là một công cụ linh hoạt giúp bạn tạo ra các thiết kế độc đáo và bắt mắt với nhiều class nền. Khi kết hợp với các thuộc tính CSS khác như background-blend-mode, border-radius, và box-shadow, bạn có thể tạo ra các hiệu ứng phức tạp mà không cần mã HTML thừa thãi hoặc hình ảnh nặng. Để học thêm về CSS và các hiệu ứng khác, hãy tham khảo chuỗi bài học trên "codetuthub.com" như CSS Background Gradient, CSS Border Images, và CSS Background Size.








