Tại sao dùng CSS Sprite ?
Với kỹ thuật này thì chỉ có 1 file hình lớn duy nhất được load thay vì hàng loạt hình nhỏ được load lần lượt. Nhiều người cho rằng, load những hình nhỏ thì nhanh hơn load 1 hình lớn. Điều này không chính xác. Mỗi hình khi load sẽ tạo 1 HTTP-Request, mỗi request như vậy sẽ phải “open” và “close” 1 socket mới, càng nhiều hình thì càng nhiều request, và điều này ảnh hưởng lớn tới tốc độ của website (Yahoo! User Interface Blog). Ngoài ra dễ thấy hơn là khi đặt tất cả hình ảnh vào trong 1 file thì kích thước file giảm đi đáng kể.
Lợi thế của việc dùng duy nhất 1 hình lớn mang lại ngoài việc tăng tốc độ thực thi của website còn giảm chi phí cho bandwith.(Thủ thuật CSS)
Nó phổ biến như thế nào (không phải ở VN ?!)?
youtube
Apple
Yahoo
OK, nguyên tắc hoạt động như thế nào ?
Sử dụng hình backgound lớn đã chuẩn bị để làm background, kết hợp với thuộc tính background-position trong css để hiển thị chính xác phần hình ảnh mong muốn. Giá trị được tính theo pixel và có thể xác định dễ dàng bằng photoshop như hình sau:
Cách thực hiện
Cách thứ nhất: Lên kế hoạch ngay từ đầu quá trình cắt layout. Tạo mới 1 file PSD và đặt từng hình vào từng vị trí thích hợp, thông thường ta đặt theo chiều dọc tại các vị trí thuận lợi cho việc tạo CSS sau này. Bạn có thể ghi lại ngay lúc này để sau này khỏi cần mở file ra canh lại.
Cách thứ 2: Thực hiện mọi thứ như bạn vẫn thường làm. Sau đó dùng CSS Sprite Generator nào đó để ghép các hình vào 1 hình và tạo CSS thích hợp cho bạn. Có 1 website thực hiện việc này khá tốt là www.spriteme.org.
Cách này cũng có thể áp dụng để nâng cấp các website hiện có của bạn.
Vấn đề tồn tại
Trong 1 số trường hợp không thể dùng sprite để thực hiện được, như cần repeat background chẳng hạn. Một số khác thì khiến bạn tốn thời gian nhiều hơn thay vì sử dụng các hình ảnh riêng lẻ.
Vấn đề nữa là khó khăn trong việc bảo trì, cập nhật hoặc chỉnh sửa hình ảnh. Việc thêm hình đôi khi khiến bạn phải thay đổi cả những thông số CSS cũ.
Lựa chọn của bạn
Nếu thử xem background của blog này, bạn sẽ thấy nó đang sử dụng CSS Sprite! Tuy nhiên xem kỹ hơn, bạn sẽ thấy nó không hoàn toàn chỉ có 1 hình background duy nhất. Đó là lựa chọn của tôi.
Với những vị trí phức tạp, khó dùng sprite thì tôi dùng 1 hình riêng. Thật sự không gì là không có giá của nó cả, vấn đề là sự lựa chọn của bạn.
Không có nhận xét nào:
Đăng nhận xét