CSS ການສະແດງການສະແດງ
CSS ການສະແດງການສະແດງ
CSS 可实现 HTML 元素的动画效果,而不使用 JavaScript 或 Flash!
在本章中,您将学习如下属性:
@keyframes
animation-name
animation-duration
animation-delay
animation-iteration-count
animation-direction
animation-timing-function
animation-fill-mode
animation
对动画的浏览器支持
表格中的数字注明了完全支持该属性的首个浏览器版本。
ທີ່ຕາມ | Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|---|
@keyframes | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-name | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-duration | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-delay | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-iteration-count | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-direction | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-timing-function | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation-fill-mode | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
animation | 43.0 | 10.0 | 16.0 | 9.0 | 30.0 |
什么是 CSS 动画?
动画使元素逐渐从一种样式变为另一种样式。
您可以随意更改任意数量的 CSS 属性。
如需使用 CSS 动画,您必须首先为动画指定一些关键帧。
关键帧包含元素在特定时间所拥有的样式。
@keyframes 规则
如果您在 @keyframes
规则中指定了 CSS 样式,动画将在特定时间逐渐从当前样式更改为新样式。
要使动画生效,必须将动画绑定到某个元素。
下面的例子将 "example" 动画绑定到
ຄວາມຄິດຈິງ
/* 动画代码 */ @keyframes example { from {background-color: red;} to {background-color: yellow;} } /* 向此元素应用动画效果 */ div { width: 100px; height: 100px; background-color: red; animation-name: example; animation-duration: 4s; }
注意:animation-duration
属性定义需要多长时间才能完成动画。如果未指定 animation-duration
属性,则动画不会发生,因为默认值是 0s(0秒)。
在上面的例子中,通过使用关键字 "from" 和 "to"(代表 0%(开始)和 100%(完成)),我们设置了样式何时改变。
您也可以使用百分比值。通过使用百分比,您可以根据需要添加任意多个样式更改。
ບົດຢ່າງລາວຈະປ່ຽນສະແດງມົນລະພາບ <div> ຂອງຄວາມສະຫລັກສີຫຼັງຈາກການຍິງວິດີໂອ 25%,50% ແລະວິດີໂອຈະສຳເລັດ 100%:
ຄວາມຄິດຈິງ
/* 动画代码 */ @keyframes example { 0% {background-color: red;} 25% {background-color: yellow;} 50% {background-color: blue;} 100% {background-color: green;} } /* 应用动画的元素 */ div { width: 100px; height: 100px; background-color: red; animation-name: example; animation-duration: 4s; }
下面的例子将在动画完成 25%,完成 50% 以及动画完成 100% 时更改背景颜色和
ຄວາມຄິດຈິງ
/* 动画代码 */ @keyframes example { 0% {background-color:red; left:0px; top:0px;} 25% {background-color:yellow; left:200px; top:0px;} 50% {background-color:blue; left:200px; top:200px;} 75% {background-color:green; left:0px; top:200px;} 100% {background-color:red; left:0px; top:0px;} } /* 应用动画的元素 */ div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; }
ການສະຖານທີ່ການເຄື່ອນໄຫວ
animation-delay
ຜົນປະກອບປະສານທີ່ສະເພາະແມ່ນການກໍານົດການສະຖານທີ່ການເລີ່ມການເຄື່ອນໄຫວຂອງການເຄື່ອນໄຫວ:
ບົດຢ່າງລາວໄດ້ເຮັດໃຫ້ການເຄື່ອນໄຫວຈະສະຖານທີ່ 2 ວິນາທີ່ກ່ອນການເລີ່ມການເຄື່ອນໄຫວ:
ຄວາມຄິດຈິງ
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-delay: 2s; }
ຄູ່ມູນທີ່ສະຫຼົກກໍ່ຈະອະນຸຍາດ. ຖ້າໃຊ້ຄູ່ມູນທີ່ສະຫຼົກ ການເຄື່ອນໄຫວເລີ່ມເຄື່ອນໄຫວຄືວ່າມີການເຄື່ອນໄຫວ N ວິນາທີ່.
ໃນບົດຢ່າງລາວຈະເຮັດໃຫ້ການເຄື່ອນໄຫວເລີ່ມການສະຖານທີ່ການເຄື່ອນໄຫວຈະເລີ່ມເຄື່ອນໄຫວຄືວ່າມີການເຄື່ອນໄຫວ 2 ວິນາທີ່:
ຄວາມຄິດຈິງ
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-delay: -2s; }
ການຕັ້ງຄືນຈຳນວນການເຄື່ອນໄຫວທີ່ຈະເຄື່ອນໄຫວ:
animation-iteration-count
ຜົນປະກອບປະສານທີ່ສະເພາະແມ່ນການເຮັດໃຫ້ການເຄື່ອນໄຫວເຄື່ອນໄຫວຈະດຳເນີນສິ່ງຈຳນວນຫຼາຍ:
ບົດຢ່າງລາວໄດ້ເຮັດໃຫ້ການເຄື່ອນໄຫວຈະເຄື່ອນໄຫວ 3 ຄັ້ງກ່ອນຢຸດໄປ:
ຄວາມຄິດຈິງ
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-iteration-count: 3; }
ບົດຢ່າງລາວໄດ້ໃຊ້ຄູ່ມູນ "infinite" ເພື່ອເຮັດໃຫ້ການເຄື່ອນໄຫວຈະສືບຕໍ່ໄປສູ່ຫຼັງ:
ຄວາມຄິດຈິງ
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-iteration-count: infinite; }
ການເຄື່ອນໄຫວຫຼັງຫຼາຍ ຫຼື ແຕ່ງຕົວກັນ
animation-direction
ຜົນປະກອບປະສານທີ່ສະເພາະແມ່ນການເຄື່ອນໄຫວໄປດ້ານໜ້າ, ໄປຫຼັງ ຫຼື ແຕ່ງຕົວກັນເຄື່ອນໄຫວການເຄື່ອນໄຫວ:
animation-direction
ປະກອບຈະຍອມຮັບຄຸນນະພາບທີ່ຖືກກຳນົດນີ້:
normal
- ການເຄື່ອນໄຫວການເຄື່ອນໄຫວໃນວິວັດທະນາການປົກກະຕິ (ດ້ານໜ້າ). ຄູ່ມູນສະຫຼົກ:reverse
- ການເຄື່ອນໄຫວການເຄື່ອນໄຫວໄປດ້ານຫຼັງ (ຫຼັງ):alternate
- ການເຄື່ອນໄຫວໄປດ້ານໜ້າ ກ່ອນແລະ ແຕ່ງຕົວກັນໃຫ້ເຄື່ອນໄຫວໄປຫຼັງalternate-reverse
- ການເຄື່ອນໄຫວຫຼັງຈາກນຳມາກ່ອນ ແລະ ແຕ່ງຕົວກັນໃຫ້ເຄື່ອນໄຫວໄປດ້ານໜ້າ
ບົດຢ່າງລາວຈະເຮັດໃຫ້ການເຄື່ອນໄຫວການເຄື່ອນໄຫວໄປດ້ານຫຼັງ:
ຄວາມຄິດຈິງ
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-direction: reverse; }
ບົດຢ່າງລາວໄດ້ໃຊ້ຄູ່ມູນ "alternate" ເພື່ອເຮັດໃຫ້ການເຄື່ອນໄຫວໄປດ້ານໜ້າ ກ່ອນແລະ ແຕ່ງຕົວກັນໃຫ້ເຄື່ອນໄຫວໄປຫຼັງ:
ຄວາມຄິດຈິງ
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-iteration-count: 2; animation-direction: alternate; }
ບົດຢ່າງລາວໄດ້ໃຊ້ຄູ່ມູນ "alternate-reverse" ເພື່ອເຮັດໃຫ້ການເຄື່ອນໄຫວຂັບກັນຫຼັງຈາກນຳມາກ່ອນ ແລະ ແຕ່ງຕົວກັນໃຫ້ເຄື່ອນໄຫວໄປດ້ານໜ້າ:
ຄວາມຄິດຈິງ
div { width: 100px; height: 100px; position: relative; background-color: red; animation-name: example; animation-duration: 4s; animation-iteration-count: 2; animation-direction: alternate-reverse; }
指定动画的速度曲线
animation-timing-function
ປະກອບກຳນົດຄວາມໄວທີ່ການດຳເນີນການອາກາດ.
animation-timing-function
ປະກອບຈະຍອມຮັບຄຸນນະພາບທີ່ຖືກກຳນົດນີ້:
ease
- ກຳນົດການດຳເນີນການອາກາດທີ່ເລີ່ມຫຼາຍຫຼາຍ, ຕັດຫຼາຍຫຼາຍ, ແລະສຸດຫຼາຍຫຼາຍ (ການສະເໜີຈະມີໂດຍກົງ)linear
- ກຳນົດການດຳເນີນການອາກາດທີ່ຄວາມໄວຈະບໍ່ປ່ຽນແປງຈາກຕົ້ນຫາສຸດease-in
- ກຳນົດການດຳເນີນການອາກາດທີ່ເລີ່ມຫຼາຍຫຼາຍease-out
- ກຳນົດການດຳເນີນການອາກາດທີ່ສຸດຫຼາຍຫຼາຍease-in-out
- ກຳນົດການດຳເນີນການອາກາດທີ່ເລີ່ມຫຼາຍແລະສຸດຫຼາຍcubic-bezier(n,n,n,n)
- ດຳເນີນຄູ່ມູນທີ່ເຈົ້າກໍານົດໃນການຄັດຄະແນນທີ່ສາມາດຄົ້ນພົບສາມາດທີ່ຫຼາກຫຼາຍນີ້:
ບົດສະຫຼຸບນີ້ຈະສະແດງວ່າມັນສາມາດນຳໃຊ້ການທາງດ້ານຄວາມໄວທີ່ຫຼາກຫຼາຍນີ້:
ຄວາມຄິດຈິງ
#div1 {animation-timing-function: linear;} #div2 {animation-timing-function: ease;} #div3 {animation-timing-function: ease-in;} #div4 {animation-timing-function: ease-out;} #div5 {animation-timing-function: ease-in-out;}
ກຳນົດການຂະຫຍາຍການອາກາດ
ການອາກາດ CSS ຈະບໍ່ມີຜົນກະທົບປະກອບກ່ອນຈະດຳເນີນການຄັດຄະແນນທີ່ທໍາອິດ ຫຼືຫຼັງຈາກຈະດຳເນີນການຄັດຄະແນນທີ່ສຸດທ້າຍ.animation-fill-mode
ປະກອບຈະສາມາດປົກປ້ອງການກະທຳນັ້ນ.
ໃນຂະນະທີ່ບໍ່ມີການດຳເນີນການອາກາດ (ກ່ອນການເລີ່ມ, ຫຼັງຈາກການສິ້ນສຸດ, ຫຼືທັງສອງທິດທາງ),animation-fill-mode
ປະກອບກຳນົດຄຸນະພາບຂອງປະກອບເປົ້າ.
ຄຸນນະພາບ animation-fill-mode ຈະຍອມຮັບຄຸນນະພາບທີ່ຖືກກຳນົດນີ້:
none
- ຄຸນນະພາບມັນເປັນການສະເໜີຈະບໍ່ມີການບັງຄັບຄຸນນະພາບໃດໆໃສ່ປະກອບທີ່ມີການດຳເນີນການອາກາດກ່ອນຫຼືຫຼັງຈາກການດຳເນີນ.forwards
- ປະກອບຈະຮັກສາຄຸນະພາບທີ່ຖືກກຳນົດໃນການຄັດຄະແນນທີ່ສຸດທ້າຍ (ອີງຕາມ animation-direction ແລະ animation-iteration-count).backwards
- ປະກອບຈະຮັບມາຄຸນນະພາບທີ່ຖືກກຳນົດໃນການຄັດຄະແນນທີ່ທໍາອິດ (ອີງຕາມ animation-direction), ແລະຮັກສາຄຸນນະພາບນັ້ນໃນຂະນະທີ່ການດຳເນີນການອາກາດຢຸດສະຫງັກ.both
- ການອາກາດຈະຕິດຕາມສະຖານະການກາງໄປແລະກັບຄືນກັນ, ເຮັດໃຫ້ການຂະຫຍາຍການຜະສົມການອາກາດໃນສອງທິດທາງ.
ບົດສະຫຼຸບນີ້ຈະເຮັດໃຫ້ <div> ປະກອບຕົວຢູ່ສະຖານະການທີ່ຫຼັງຈາກການດຳເນີນການອາກາດທີ່ຫຼັງຈາກການປະຕິບັດຄັນກ່າວນັ້ນ:
ຄວາມຄິດຈິງ
div { width: 100px; height: 100px; background: red; position: relative; animation-name: example; animation-duration: 3s; animation-fill-mode: forwards; }
ບັນທັດທີ່ລົງມານີ້ຈະເຮັດໃຫ້ຫຼັກສ່ວນ <div> ໄດ້ມີຊື່ບົດຮູບພາບທີ່ກໍານົດໃນການສະແດງອາກາດທຳອິດ, ໃນຂະນະທີ່ຈະມີການລ່າວການສະແດງອາກາດ (ໃນຂະນະທີ່ຈະມີການລ່າວການສະແດງອາກາດ)
ຄວາມຄິດຈິງ
div { width: 100px; height: 100px; background: red; position: relative; animation-name: example; animation-duration: 3s; animation-delay: 2s; animation-fill-mode: backwards; }
ບັນທັດທີ່ລົງມານີ້ຈະເຮັດໃຫ້ຫຼັກສ່ວນ <div> ໄດ້ມີຊື່ບົດຮູບພາບທີ່ກໍານົດໃນການສະແດງອາກາດທຳອິດ, ແລະກັບຊື່ບົດຮູບພາບທີ່ກໍານົດໃນການສະແດງອາກາດສຸດທ້າຍ ໃນການສະແດງອາກາດສຸດທ້າຍ:
ຄວາມຄິດຈິງ
div { width: 100px; height: 100px; background: red; position: relative; animation-name: example; animation-duration: 3s; animation-delay: 2s; animation-fill-mode: both; }
Animation Shorthand Properties
ບັນທັດທີ່ລົງມານີ້ນຳໃຊ້ຫົກວິທີການສະແດງອາກາດ:
ຄວາມຄິດຈິງ
div { animation-name: example; animation-duration: 5s; animation-timing-function: linear; animation-delay: 2s; animation-iteration-count: infinite; animation-direction: alternate; }
ການປັບຕາມທີ່ລະບຸການ animation
ຂໍ້ມູນການສະແດງອາກາດກໍ່ສາມາດນຳໃຊ້ທີ່ຄືກັນກັບບັນທັດກ່າວນີ້:
ຄວາມຄິດຈິງ
div { animation: example 5s linear 2s infinite alternate; }
CSS Animation Properties
ມູນວນລາຍການທີ່ລົງມາຂອງ @keyframes ກົດລະບຽບ ແລະ ຂອງຂໍ້ມູນ CSS ການສະແດງອາກາດທັງໝົດ:
ທີ່ຕາມ | ກ່າວກັບ |
---|---|
@keyframes | ກໍານົດວິທີການສະແດງອາກາດ. |
animation | ການປັບຕາມສຳລັບຂອງການສະແດງອາກາດທັງໝົດ. |
animation-delay | ກໍານົດການລ່າວການເລີ່ມການສະແດງອາກາດ. |
animation-direction | ກໍານົດວິທີການສະແດງອາກາດເປັນການສະແດງຕົວ, ການສະແດງຫຼັງ, ຫຼືການສະແດງຕົວ-ຫຼັງ. |
animation-duration | ກໍານົດເວລາທີ່ຄວນບໍ່ມີການສະແດງອາກາດໃນໜຶ່ງວົງວຽນທີ່ຄວນບໍ່ມີການສະແດງອາກາດ. |
animation-fill-mode | ກໍານົດຊື່ບົດຮູບພາບຂອງຫຼັກສ່ວນໃນບໍ່ມີການສະແດງອາກາດ (ກ່ອນການເລີ່ມ, ຫຼັງຈາກ, ຫຼືທັງສອງແບບນັ້ນ) |
animation-iteration-count | ກໍານົດຈຳນວນການສະແດງອາກາດທີ່ຄວນຫຼິ້ນ。 |
animation-name | ກໍານົດຊື່ @keyframes ຂອງການສະແດງອາກາດ。 |
animation-play-state | 规定动画是运行还是暂停。 |
animation-timing-function | 规定动画的速度曲线。 |