>  기사  >  웹 프론트엔드  >  현실적인 HTML5 나뭇잎 떨어지는 animation_html5 튜토리얼 기술

현실적인 HTML5 나뭇잎 떨어지는 animation_html5 튜토리얼 기술

WBOY
WBOY원래의
2016-05-16 15:45:482522검색

이 HTML5 나뭇잎 떨어지는 애니메이션은 웹킷 코어를 기반으로 합니다. 즉, 이 애니메이션은 웹킷 코어가 있는 브라우저에서만 사용할 수 있습니다.

소스코드 다운로드 데모주소

HTML 코드

XML/HTML 코드클립보드에 콘텐츠 복사
  1. <div id="컨테이너" >
  2. <div id="leafContainer" >div>
  3. <div id="메시지" >
  4. < /
  5. > div>
  6. div>
  7. CSS 코드 CSS 코드클립보드에 콘텐츠 복사
    1. #container {   
    2.     직위친척;   
    3.     높이700px;   
    4.     너비500px;   
    5.     여백10px 자동;   
    6.     오버플로숨김;   
    7.     테두리4px 단단함 #5C090A;   
    8.     배경#4E4226 url('images/BackgroundLeaves.jpg'반복 금지 상단 왼쪽;   
    9. }   
    10.   
    11. /* leafContainer div의 위치와 크기를 정의합니다.*/ 
    12. #leafContainer    
    13. {   
    14.     위치절대;   
    15.     너비: 100%;   
    16.     높이: 100%;   
    17. }  
    18.   
    19. /* 메시지 div의 모양, 위치 및 크기를 정의합니다.*/ 
    20. #message   
    21. {   
    22.     위치절대;   
    23.     상단160px;   
    24.     너비: 100%;   
    25.     높이300px;   
    26.     배경:투명 URL( 'images/textBackground.png'반복-x center;   
    27.     색상#5C090A;   
    28.     글꼴 크기: 220%;   
    29.     글꼴군'조지아';   
    30.     텍스트 정렬가운데;   
    31.     패딩20px 10px;   
    32.     -webkit-box-sizing: 테두리-box;   
    33.     -webkit-배경-크기: 100% 100%;   
    34.     z-색인: 1;   
    35. }   
    36.   
    37. p {   
    38.   여백15px;   
    39. }   
    40.   
    41. 아   
    42. {   
    43.   색상#5C090A;   
    44.   텍스트 장식없음;   
    45. }   
    46.   
    47. /* '공룡의 가드닝 서비스' 메시지 색상 설정 */ 
    48. em    
    49. {   
    50.     글꼴 두께굵게;   
    51.     글꼴 스타일일반;   
    52. }   
    53.   
    54. .phone {   
    55.   글꼴 크기: 150%;   
    56.   세로 정렬가운데;   
    57. }  
    58.   
    59. /* 이 CSS 규칙은 leafContainer div의 모든 div 요소에 적용됩니다.  
    60.    각 leafDiv의 스타일을 지정하고 애니메이션을 적용합니다.  
    61. */  
    62. #leafContainer > div    
    63. {   
    64.     위치절대;   
    65.     너비100px;   
    66.     높이100px;   
    67.   
    68.     /* 다음 속성을 사용하여 각 잎에 페이드 및 드롭 애니메이션을 적용합니다.  
    69.        이러한 각 속성은 두 가지 값을 갖습니다. 이러한 값은 각각 설정  
    70. 과 일치합니다.
    71.        페이드 앤 드롭용.  
    72.     */  
    73.     -webkit-animation-iteration-count: 무한, 무한;   
    74.     -webkit-animation-방향정상정상;   
    75.     -webkit-animation-timing-function: 선형, ease-in;   
    76. }  
    77.   
    78. /* 이 CSS 규칙은  
    79. 인 div 요소 내부의 모든 img 요소에 직접 적용됩니다.
    80.    leafContainer div 내부에서 직접 즉, 'img' 요소
    81. 와 일치합니다.
    82. createALeaf() 함수에서 생성된 leafDivs 내부.  
    83. */  
    84. #leafContainer > div > img {   
    85.      위치절대;   
    86.      너비100px;   
    87.      높이100px;   
    88.   
    89.     /* 우리는 다음 속성을 사용하여 시계방향Spin 또는 반시계방향SpinAndFlip  
    90. 을 조정합니다.
    91.        각 잎에 애니메이션이 표시됩니다.  
    92.        Leaves.js 파일의 createALeaf 함수는 리프에  
    93. 이 있는지 여부를 결정합니다.
    94.        시계 방향 회전 또는 시계 반대 방향 회전 및 뒤집기 애니메이션.  
    95.     */  
    96.      -webkit-animation-iteration-count: 무한;   
    97.      -webkit-animation-방향: 대체;   
    98.      -webkit-animation-timing-function: ease-in-out;   
    99.      -webkit-transform-origin: 50% -100%;   
    100. }   
    101.   
    102. /* 애니메이션의 끝 부분에 나뭇잎을 숨깁니다.*/ 
    103. @-webkit-keyframes 페이드   
    104. {   
    105.     /* 애니메이션의 95% 이하에 있는 동안 나뭇잎을 표시하고 숨깁니다. 그렇지 않으면 */  
    106.     0%   { 불투명도: 1; }   
    107.     95%  { 불투명도: 1; }   
    108.     100% { 불투명도: 0; }   
    109. }  
    110.   
    111. /* Y축에서 -300~600픽셀에서 나뭇잎을 떨어뜨립니다.*/  
    112. @-webkit-keyframes drop   
    113. {   
    114.     /* 애니메이션 시작 부분의 y축에서 리프를 -300픽셀로 이동합니다.*/ 
    115.     0%   { -webkit-transform: translate(0px, -50px); }   
    116.     /* 애니메이션 끝의 y축에서 리프를 600픽셀로 이동합니다.*/ 
    117.     100% { -webkit-transform: translate(0px650px); }   
    118. }   
    119.   
    120. /* 2D 공간에서 리프를 -50도에서 50도까지 회전합니다.*/  
    121. @-webkit-keyframes clockwiseSpin   
    122. {   
    123.     /* 애니메이션 시작 시 2D 공간에서 잎을 -50도 회전합니다.*/ 
    124.     0%   { -webkit-transform: 회전(-50도); }   
    125.     /* 애니메이션 끝의 2D 공간에서 잎을 50도 회전합니다.*/ 
    126.     100% { -webkit-transform: 회전(50도); }   
    127. }   
    128.   
    129. /* 나뭇잎을 뒤집고 2D 공간에서 50도에서 -50도로 회전합니다.*/ 
    130. @-webkit-keyframes counterclockwiseSpinAndFlip    
    131. {   
    132.     /* 애니메이션 시작 시 나뭇잎을 뒤집고 2D 공간에서 50도 회전합니다.*/ 
    133.     0%   { -webkit-transform: 배율(-1, 1) 회전(50도); }   
    134.     /* 애니메이션 끝의 2D 공간에서 나뭇잎을 뒤집고 -50도 회전합니다.*/ 
    135.     100% { -webkit-transform: 배율(-1, 1) 회전(-50deg); }   
    136. }   

JavaScript대码

JavaScript 코드复复内容到剪贴板
  1. /* 애니메이션에 사용할 나뭇잎 수 정의 */ 
  2. const NUMBER_OF_LEAVES = 30;   
  3.   
  4. /*   
  5.     'Falling Leaves' 페이지가 완전히 로드되면 호출됩니다.  
  6. */  
  7. 함수 init()   
  8. {   
  9.     /* 나뭇잎을 포함할 요소에 대한 참조 가져오기*/ 
  10.     var 컨테이너 = document.getElementById('leafContainer');   
  11.     /* 빈 용기에 새 잎을 채웁니다.*/  
  12.     for (var i = 0; i < NUMBER_OF_LEAVES; i )    
  13.     {   
  14.         container.appendChild(createALeaf());   
  15.     }   
  16. }   
  17.   
  18. /*  
  19.     범위 및  
  20. 의 가장 낮은 값과 가장 높은 값을 수신합니다.
  21.     해당 범위에 속하는 임의의 정수를 반환합니다.  
  22. */  
  23. 함수 randomInteger(low, high)   
  24. {   
  25.     반품 낮음   Math.floor(Math.random() * (높음 - 낮음));   
  26. }   
  27.   
  28. /*  
  29.    범위 및  
  30. 의 가장 낮은 값과 가장 높은 값을 수신합니다.
  31.    해당 범위 내에 속하는 무작위 부동 소수점을 반환합니다.  
  32. */  
  33. 함수 randomFloat(낮음, 높음)   
  34. {   
  35.     반환 낮음   Math.random() * (높음 - 낮음);   
  36. }   
  37.   
  38. /*  
  39.     숫자를 수신하고 해당 CSS 픽셀 값을 반환합니다.  
  40. */  
  41. 함수 pixelValue(값)   
  42. {   
  43.     반환 값   'px';   
  44. }  
  45.   
  46. /*  
  47.     떨어지는 애니메이션의 지속 시간 값을 반환합니다.  
  48. */  
  49.   
  50. 함수 durationValue(값)   
  51. {   
  52.     return 값   의';   
  53. }  
  54.   
  55. /*  
  56.     img 요소를 사용하여 각 리프를 생성합니다. "Leaves.css"는 두 가지 회전을 구현합니다.  
  57. 나뭇잎에 대한 애니메이션: 시계방향Spin 및 시계 반대방향SpinAndFlip. 이  
  58.     함수는 이러한 회전 애니메이션 중 각 잎에 적용되어야 하는 애니메이션을 결정합니다.  
  59.  
  60. */  
  61. 함수 createALeaf()   
  62. {   
  63.     /* 래퍼 div와 빈 img 요소*/ 
  64. 를 만들어 시작합니다.
  65.     var leafDiv = document.createElement('div');   
  66.     var image = document.createElement('img');   
  67.   
  68.     /* 나뭇잎 이미지를 무작위로 선택하고 새로 생성된 요소에 할당합니다.*/ 
  69.     image.src = 'images/realLeaf'   randomInteger(1, 5)   '.png';   
  70.   
  71.     leafDiv.style.top = "-100px";   
  72.   
  73.     /* 화면을 따라 임의의 위치에 리프를 배치합니다.*/  
  74.     leafDiv.style.left = pixelValue(randomInteger(0, 500));   
  75.   
  76.     /* 무작위로 회전 애니메이션 선택 */  
  77.     var spinAnimationName = (Math.random() < 0.5) ? '시계 방향 회전' : '반시계 방향 회전 및 뒤집기';   
  78.   
  79.     /* -webkit-animation-name 속성을 다음 값으로 설정 */  
  80.     leafDiv.style.webkitAnimationName = '페이드, 드롭';   
  81.     image.style.webkitAnimationName = spinAnimationName;   
  82.   
  83.     /* 페이드 및 드롭 애니메이션의 무작위 지속 시간을 파악합니다.*/  
  84.     var fadeAndDropDuration = durationValue(randomFloat(5, 11));   
  85.   
  86.     /* 회전 애니메이션의 또 다른 무작위 지속 시간을 알아냅니다.*/  
  87.     var spinDuration = durationValue(randomFloat(4, 8));   
  88.     /* -webkit-animation-duration 속성을 다음 값으로 설정 */  
  89.     leafDiv.style.webkitAnimationDuration = fadeAndDropDuration   ', '   fadeAndDropDuration;   
  90.   
  91.     var leafDelay = durationValue(randomFloat(0, 5));   
  92.     leafDiv.style.webkitAnimationDelay = leafDelay   ', '   leafDelay;   
  93.   
  94.     image.style.webkitAnimationDuration = spinDuration;   
  95.   
  96.     //  
      
  97.     leafDiv.appendChild(이미지);   
  98.   
  99.     /* 문서에 추가할 수 있도록 이 img 요소를 반환합니다.*/ 
  100.     반환 leafDiv;   
  101. }   
  102.   
  103. /* 'Falling Leaves' 페이지가 완전히 로드되면 init 함수를 호출합니다.*/ 
  104. window.addEventListener('load', init, false);   
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.