< Return to Video

Animating styles with CSS animations (Video Version)

  • 0:01 - 0:03
    Ok, giờ chắc là bạn đang tự băn khoăn
  • 0:03 - 0:05
    xem nền dùng setInterval
  • 0:05 - 0:07
    hay là requestAnimationFrame
  • 0:07 - 0:09
    trong hình động của mình.
  • 0:09 - 0:10
    Nhưng mà tôi sẽ đưa cho bạn
  • 0:10 - 0:13
    thêm nguyên một lựa chọn nữa.
  • 0:14 - 0:17
    Trong Chrome, Firefox và IE 10 trở lên,
  • 0:17 - 0:20
    có một cách sử dụng CSS
  • 0:20 - 0:22
    để tạo hình động mà không phải dùng
  • 0:22 - 0:25
    tí JavaScript nào cả.
  • 0:25 - 0:28
    Ta sẽ bỏ hết đoạn code này đi
  • 0:28 - 0:30
    và thử tạo hình Oh Noes động kiểu CSS.
  • 0:31 - 0:34
    Tôi sẽ biến toàn bộ đoạn này
  • 0:34 - 0:36
    thành comment.
  • 0:37 - 0:40
    Ta bắt đầu với việc tạo style cho trang này,
  • 0:41 - 0:43
    rồi thêm một cái mà trông giống
  • 0:43 - 0:45
    như CSS, nhưng thực ra là
  • 0:45 - 0:48
    để làm hình động.
  • 0:48 - 0:52
    Viết @keyframes... rồi tên của
  • 0:52 - 0:55
    ảnh động này... là getbigger...
  • 0:55 - 0:57
    rồi dấu ngoặc móc.
  • 0:57 - 0:59
    Để tạo một ảnh động đơn giản, từ
  • 0:59 - 1:01
    trang thái này chuyển động tới trạng thái khác,
  • 1:01 - 1:06
    ta sẽ định nghĩa trạng thái bắt đầu (from) và trạng thái kết thúc (to).
  • 1:08 - 1:10
    Ở tron from{}, ta sẽ viết
  • 1:10 - 1:12
    các thuộc tính CSS lúc khởi điểm.
  • 1:12 - 1:16
    Bạn còn nhớ, ta đặt kích thước ban đầu là 50px.
  • 1:17 - 1:18
    Trong to{}, ta viết
  • 1:18 - 1:20
    thuộc tính của ảnh này khi kết thúc.
  • 1:21 - 1:25
    Hình như lúc kết thúc là 300px,
  • 1:25 - 1:26
    bạn nhớ không?
  • 1:26 - 1:28
    Giờ ta đã định nghĩa ảnh động này rồi,
  • 1:28 - 1:31
    ta cần báo cho trình duyệt biết xem element nào
  • 1:31 - 1:33
    sẽ chuyển động như thế,
  • 1:34 - 1:36
    nên là ta sẽ viết thêm CSS kiểu bình thường
  • 1:36 - 1:38
    cho ohnoes.
  • 1:39 - 1:42
    Trong này, ta ghi ra tên của hình động,
  • 1:44 - 1:46
    tức là getbigger,
  • 1:47 - 1:50
    rồi đến thời gian chuyển động,
  • 1:51 - 1:52
    là 3 giây.
  • 1:53 - 1:55
    Với một vài trình duyệt thì
  • 1:55 - 1:56
    bạn có thể viết thế này là
  • 1:56 - 1:59
    xong ngon lành rồi.
  • 1:59 - 2:00
    Nhưng trong các trình duyệt khác,
  • 2:00 - 2:01
    như là Safari hay Chrome,
  • 2:01 - 2:03
    thì chưa được đâu.
  • 2:03 - 2:08
    Lí do là vì một cái gọi là vendor prefixes.
  • 2:10 - 2:13
    Tức là khi trình duyệt bắt đầu
  • 2:14 - 2:16
    cho phép sử dụng một tính năng mới,
  • 2:16 - 2:19
    người ta đặt vendor prefix vào trước tên của tính năng đó,
  • 2:19 - 2:22
    để thấy là tính năng này chưa hoàn thiện, có thể còn được sửa đổi,
  • 2:22 - 2:24
    đây mới là bản chưa hoàn chỉnh
  • 2:24 - 2:25
    của tính năng đó.
  • 2:26 - 2:28
    Như vậy, để sử dụng tính năng này trong Chrome
  • 2:28 - 2:30
    nếu mà Chrome bạn thử với Chrome vẫn chưa được, thì bạn cần viết lại
  • 2:30 - 2:32
    những gì ta đã viết kia,
  • 2:32 - 2:34
    và thêm cái vendor prefix, tức là webkit, lên đằng trước.
  • 2:35 - 2:37
    Vậy ta viết lại đoạn này
  • 2:38 - 2:41
    và thêm -webkit- vào đây.
  • 2:42 - 2:45
    Rồi ta viết lại đoạn này nữa
  • 2:46 - 2:50
    và thêm -webkit- vào.
  • 2:50 - 2:52
    Whoa, hay rồi!
  • 2:52 - 2:55
    Giờ thì ảnh này chuyển động được trên tất cả các tình duyệt rồi.
  • 2:56 - 2:58
    Mong là khi bạn xem hướng dẫn này thì
  • 2:58 - 3:00
    không cần phải dụng cái vendor prefix này nữa,
  • 3:00 - 3:02
    nhưng mà bạn vẫn nên biết cách dùng,
  • 3:02 - 3:04
    bởi vì có khi lại cần dùng
  • 3:04 - 3:06
    với một tính năng mới khác trong tương lai.
  • 3:08 - 3:10
    Còn một cách khác dùng CSS
  • 3:10 - 3:12
    để tạo hình động,
  • 3:12 - 3:14
    đó là thuộc tính transition.
  • 3:15 - 3:18
    Thuộc tính này khiến trình duyệt chuyển đổi
  • 3:18 - 3:20
    từ một giá trị thuộc tính ban đầu tới một giá trị khác.
  • 3:21 - 3:23
    Ví dụ nếu ta muốn font-size
  • 3:23 - 3:27
    của số đếm giây kia to dần lên khi
  • 3:27 - 3:28
    người dùng di chuột vào số đó,
  • 3:28 - 3:30
    ta có thể làm với JavaScript
  • 3:30 - 3:32
    bằng cách tạo một event listener
  • 3:32 - 3:33
    cho event mouse-over,
  • 3:33 - 3:35
    rồi dùng requestAnimationFrame()
  • 3:35 - 3:37
    để tăng font-size dần lên,
    to increase the font
  • 3:37 - 3:42
    nhưng ta cũng có thể làm thế chỉ với CSS thôi.
  • 3:42 - 3:43
    Nghĩ xem nào.
  • 3:43 - 3:45
    Thường thì ta làm sao để biến font-size
  • 3:45 - 3:48
    thành to hơn khi di chuột mà chỉ dùng CSS?
  • 3:49 - 3:50
    Ta có thể dùng hover.
  • 3:51 - 3:54
    Ta viết #countdown:hover...
  • 3:54 - 3:59
    rồi đến font-size:150px.
  • 4:00 - 4:03
  • 4:03 - 4:06
  • 4:06 - 4:09
    cho biết quá trình chuyển đổi mất bao lâu,
  • 4:09 - 4:11
    sử dụng hàm tính thời gian thế nào.
  • 4:11 - 4:16
    Vậy ta viết transtion; font-size 1s linear;
  • 4:19 - 4:22
    Giờ bạn hãy dừng video
  • 4:22 - 4:25
    và thử di chuột qua dòng chữ xem có gì không.
  • 4:26 - 4:29
    Nếu bạn dùng Chrome, Firefox hoặc IE 10 trở lên,
  • 4:29 - 4:31
    thì cỡ chữ sẽ to dần ra rất mượt,
  • 4:31 - 4:34
    bạn không cần vendor prefix gì cả
  • 4:34 - 4:35
    với kĩ thuật này.
  • 4:36 - 4:37
    Còn rất nhiều thứ bạn có thể làm
  • 4:37 - 4:39
    để tạo ảnh động bằng CSS,
  • 4:39 - 4:41
    và các trình duyệt bây giờ cũng
  • 4:41 - 4:42
    hỗ trợ những tính năng này khá tốt.
  • 4:42 - 4:44
    Vậy nên tôi khuyến khích bạn nên tỉm hiểu
  • 4:44 - 0:00
    thật kĩ hơn về những tính năng này
Title:
Animating styles with CSS animations (Video Version)
Description:

more » « less
Video Language:
English
Duration:
04:47

Vietnamese subtitles

Incomplete

Revisions