Skip navigation.

WP Island

Chào mừng các bạn đến WallPearl's Blog. Hiện WPB có một số link download đã hết bandwidth. Xin hãy để lại e-mail nếu bạn không thể download e-books tại đây.

What Is CSS Sprites?

, , ,

Lần trước sau khi hoàn thành cuốn Simple CSS Standard Version, Pearl có nói sẽ viết tiếp 1 bản advanced nữa nhưng lần trước cài lại máy lỡ tay format mất bản thảo cuốn advanced đi nên :D. Gần đây có người hỏi mà thấy cũng có khá nhiều người dùng từ khóa là Simple CSS Advanced Version để vào blog Pearl :wink:. Cho nên nhân lúc rảnh rỗi Pearl quyết định post 1 tuần 3 ngày thứ 3, 5, 7 các bài viết CSS nâng cao. Thứ nhất là chia nhỏ việc ra làm hăng hái hơn :D Thứ 2 là nhận được ý kiến, thắc mắc ngay cho từng bài viết, khi làm ebook cũng hoàn thiện hơn :smile:. Ở bài đầu tiên này Pearl sẽ giới thiệu với mọi người về công nghệ CSS sprites.

CSS sprites là gì?
CSS sprites là một công nghệ gom các ảnh nhỏ lại thành 1 ảnh lớn rồi dựa vào tọa độ của từng ảnh nhỏ đó để hiển thị. Đây là 1 công nghệ giúp tận dụng tối đa tốc độ đường truyền và giúp trang web hiển thị mượt mà hơn. Đây là một công nghệ được ứng dụng khá nhiều trên các website lớn đặc biệt là trang chủ của Yahoo (cái drop menu của Opera cũng áp dụng công nghệ này :wink:)

Nguyên tắc:
Khi bạn gọi 1 trang web thì trình duyệt sẽ đọc mã nguồn và list ra 1 danh sách hình ảnh cần dùng rồi… request & wait. Do nguyên tắc đó mà dù cho đường truyền internet của bạn là broadband đi nữa thì bạn vẫn phải tốn thời gian giữa những lần trình duyệt gửi request cũng như kích thước quá nhỏ bé của những tấm ảnh sẽ làm tổn hao đường truyền. 1 cách kiểm tra tương tự đó là bạn có thể copy khoảng 100 tấm ảnh từ máy tính ra USB rồi sau đó copy 1 file duy nhất có kích thước tương đương 100 tấm ảnh đó vào USB và so sánh thời gian của 2 lần copy. Rõ ràng file solo đi nhanh hơn phải không :wink:




Cách thực hiện:
Nếu website của bạn có các icon hay các ảnh có kích thước nhỏ khoảng <10kb (tốt nhất là <5kb (tiêu chuẩn WallPearl :D)) thì các bạn cứ list lại rồi dùng photoshop hay 1 trình xử lý ảnh đang dùng để ghép lại thành 1 ảnh lớn (có thể dùng các guide line để canh tọa độ cho các ảnh nhỏ này). Sau đó bạn ghi lại tọa độ (vị trí góc trái phía trên của ảnh nhỏ trên ảnh lớn) của từng ảnh nhỏ đó và lưu lại ảnh lớn (nhớ so sánh kích cỡ ảnh lớn phải không được lớn hơn tổng kích cỡ ảnh nhỏ quá 10% (tiêu chuẩn WallPearl luôn :D)).

Sau khi đã hoàn thành bước trên bạn chỉ cần dùng 1 thuộc tính CSS là background-position để định vị tọa độ hiển thị cho ảnh. Để dễ hiểu bạn có thể tưởng tượng là bạn có 1 số vị trí hiển thị icon trên trang web của mình và các vị trí này có kích thước cố định như 1 cái khung ảnh vậy. Khi bạn dùng thuộc tính background-position để định vị tọa độ ảnh hiển thị thì cũng như bạn cầm 1 cái ảnh lớn và áng vào khung đó thì tất nhiên khung đó có kích thước bao nhiêu phần ảnh mà các bạn được thấy từ ảnh lớn cũng như vậy. Do đó mà thông thường bạn phải định kích cỡ icon và khung icon bằng nhau nếu không muốn để lộ phần ảnh không mong muốn.

Ví dụ: Pearl có 10 cái icon kích cỡ 50 x 50 và Pearl combine nó vào 1 ảnh lớn có tên là Icon1.png 50 x 680 và vị trí mỗi icon cách nhau 20px thì tọa độ icon blog là (0 0), icon albums là (0 -70px) , icon archive là (0 -140px),…
Và Pearl cũng định kích cỡ khung hiển thị các icon có chiều cao là 50 x 50 rồi dùng thuộc tính background-position như sau để định nền cho các icon
#blog{background:transparent url(Icon1.png) 0 0 no-repeat}
#albums{background:transparent url(Icon1.png) 0 -70px no-repeat}
#archive{background:transparent url(Icon1.png) 0 -140px no-repeat}

Các bạn có thể xem ví dụ cho bài này tại đây. Để ý về tốc độ load của trang có áp dụng CSS sprites và trang không áp dụng CSS sprites cũng như sự hiển thị đồng bộ của trang dùng CSS sprites chứ không hiển thị theo kiểu nhảy cốc như trang thông thường.

Nói tóm lại thì 1 nguyên tắc khi thiết kế web đó là nếu trang web có hình ảnh kích thước lớn (theo Pearl khoảng >=400kb) thì bạn cắt ra thành mảnh nhỏ còn nếu hình ảnh quá nhỏ thì bạn hợp lại cho lớn lên đều này căn cứ vào đường truyền internet thông dụng mà quyết định. Quan trọng là làm sao khi trang web bạn được load thì dòng chảy dữ liệu phải luôn tương đương với khả năng truyền tải.

Đấy, viết 1 cuốn sách rồi mà còn dong dài vậy đấy :ko:

Thanh ThảnДа, я сказала: "Уходи"...

Write a comment

You must be logged in to write a comment. If you're not a registered member, please sign up.

Download Opera, the fastest and most secure browser
December 2009
S M T W T F S
November 2009January 2010
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31