-
Ok, giờ chắc là bạn đang tự băn khoăn
-
xem nền dùng setInterval
-
hay là requestAnimationFrame
-
trong hình động của mình.
-
Nhưng mà tôi sẽ đưa cho bạn
-
thêm nguyên một lựa chọn nữa.
-
Trong Chrome, Firefox và IE 10 trở lên,
-
có một cách sử dụng CSS
-
để tạo hình động mà không phải dùng
-
tí JavaScript nào cả.
-
Ta sẽ bỏ hết đoạn code này đi
-
và thử tạo hình Oh Noes động kiểu CSS.
-
Tôi sẽ biến toàn bộ đoạn này
-
thành comment.
-
Ta bắt đầu với việc tạo style cho trang này,
-
rồi thêm một cái mà trông giống
-
như CSS, nhưng thực ra là
-
để làm hình động.
-
Viết @keyframes... rồi tên của
-
ảnh động này... là getbigger...
-
rồi dấu ngoặc móc.
-
Để tạo một ảnh động đơn giản, từ
-
trang thái này chuyển động tới trạng thái khác,
-
ta sẽ định nghĩa trạng thái bắt đầu (from) và trạng thái kết thúc (to).
-
Ở tron from{}, ta sẽ viết
-
các thuộc tính CSS lúc khởi điểm.
-
Bạn còn nhớ, ta đặt kích thước ban đầu là 50px.
-
Trong to{}, ta viết
-
thuộc tính của ảnh này khi kết thúc.
-
Hình như lúc kết thúc là 300px,
-
bạn nhớ không?
-
Giờ ta đã định nghĩa ảnh động này rồi,
-
ta cần báo cho trình duyệt biết xem element nào
-
sẽ chuyển động như thế,
-
nên là ta sẽ viết thêm CSS kiểu bình thường
-
cho ohnoes.
-
Trong này, ta ghi ra tên của hình động,
-
tức là getbigger,
-
rồi đến thời gian chuyển động,
-
là 3 giây.
-
Với một vài trình duyệt thì
-
bạn có thể viết thế này là
-
xong ngon lành rồi.
-
Nhưng trong các trình duyệt khác,
-
như là Safari hay Chrome,
-
thì chưa được đâu.
-
Lí do là vì một cái gọi là vendor prefixes.
-
Tức là khi trình duyệt bắt đầu
-
cho phép sử dụng một tính năng mới,
-
người ta đặt vendor prefix vào trước tên của tính năng đó,
-
để thấy là tính năng này chưa hoàn thiện, có thể còn được sửa đổi,
-
đây mới là bản chưa hoàn chỉnh
-
của tính năng đó.
-
Như vậy, để sử dụng tính năng này trong Chrome
-
nếu mà Chrome bạn thử với Chrome vẫn chưa được, thì bạn cần viết lại
-
những gì ta đã viết kia,
-
và thêm cái vendor prefix, tức là webkit, lên đằng trước.
-
Vậy ta viết lại đoạn này
-
và thêm -webkit- vào đây.
-
Rồi ta viết lại đoạn này nữa
-
và thêm -webkit- vào.
-
Whoa, hay rồi!
-
Giờ thì ảnh này chuyển động được trên tất cả các tình duyệt rồi.
-
Mong là khi bạn xem hướng dẫn này thì
-
không cần phải dụng cái vendor prefix này nữa,
-
nhưng mà bạn vẫn nên biết cách dùng,
-
bởi vì có khi lại cần dùng
-
với một tính năng mới khác trong tương lai.
-
Còn một cách khác dùng CSS
-
để tạo hình động,
-
đó là thuộc tính transition.
-
Thuộc tính này khiến trình duyệt chuyển đổi
-
từ một giá trị thuộc tính ban đầu tới một giá trị khác.
-
Ví dụ nếu ta muốn font-size
-
của số đếm giây kia to dần lên khi
-
người dùng di chuột vào số đó,
-
ta có thể làm với JavaScript
-
bằng cách tạo một event listener
-
cho event mouse-over,
-
rồi dùng requestAnimationFrame()
-
để tăng font-size dần lên,
to increase the font
-
nhưng ta cũng có thể làm thế chỉ với CSS thôi.
-
Nghĩ xem nào.
-
Thường thì ta làm sao để biến font-size
-
thành to hơn khi di chuột mà chỉ dùng CSS?
-
Ta có thể dùng hover.
-
Ta viết #countdown:hover...
-
rồi đến font-size:150px.
-
-
-
cho biết quá trình chuyển đổi mất bao lâu,
-
sử dụng hàm tính thời gian thế nào.
-
Vậy ta viết transtion; font-size 1s linear;
-
Giờ bạn hãy dừng video
-
và thử di chuột qua dòng chữ xem có gì không.
-
Nếu bạn dùng Chrome, Firefox hoặc IE 10 trở lên,
-
thì cỡ chữ sẽ to dần ra rất mượt,
-
bạn không cần vendor prefix gì cả
-
với kĩ thuật này.
-
Còn rất nhiều thứ bạn có thể làm
-
để tạo ảnh động bằng CSS,
-
và các trình duyệt bây giờ cũng
-
hỗ trợ những tính năng này khá tốt.
-
Vậy nên tôi khuyến khích bạn nên tỉm hiểu
-
thật kĩ hơn về những tính năng này