当前位置:   article > 正文

js+css3简易实现2023新年快乐全屏满天星动画特效_js新年特效

js新年特效

目录

⭐ 前言

一、效果图

二、代码实现 

2.1 html

2.2 CSS

2.3. JS

⭐ 预览


⭐ 前言

js+css3全屏星星闪烁背景2023新年快乐动画特效,文字还有3D立体效果。其中,利用Math.random()方法,实现满天星的效果,着实让人眼前一亮。对于某些站点来说,这个方法非常实用,因为可以利用它来随机显示一些名人名言和新闻事件。

好了,话不多说,先看效果图,如下:

一、效果图

二、代码实现 

2.1 html

* index.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <title>js+css3全屏2023新年快乐动画特效</title>
  6. <link rel="stylesheet" href="css/style.css" />
  7. </head>
  8. <body>
  9. <section class="section">
  10. <h2 class="section__title">Happy New Year<br /><span>2023</span></h2>
  11. </section>
  12. <script src="js/script.js"></script>
  13. </body>
  14. </html>

2.2 CSS

* style.css

  1. * {
  2. /* 采用怪异模式下的盒模型:元素的总高度和宽度包含内边距和边框(padding与border) */
  3. box-sizing: border-box;
  4. margin: 0;
  5. padding: 0;
  6. }
  7. body {
  8. /* 没有滚动条 */
  9. overflow: hidden;
  10. }
  11. .section {
  12. display: flex;
  13. justify-content: center;
  14. align-items: center;
  15. position: relative;
  16. min-height: 100vh;
  17. background: linear-gradient(135deg, #111, #222, #111);
  18. }
  19. .section::before {
  20. content: "";
  21. position: absolute;
  22. width: 30vw;
  23. height: 30vw;
  24. /* 红色边框 */
  25. border: 5vw solid #ff1062;
  26. /* 圆形边框 */
  27. border-radius: 50%;
  28. /* 为边框添加2个下拉阴影 */
  29. box-shadow: 0 0 0 1vw #222, 0 0 0 1.3vw #fff;
  30. }
  31. .section .section__title {
  32. position: absolute;
  33. transform: skewY(-7deg);
  34. z-index: 10;
  35. color: #fff;
  36. text-align: center;
  37. font-size: 9vw;
  38. line-height: 2em;
  39. text-shadow: 1px 1px 0 #ccc, 2px 2px 0 #ccc, 3px 3px 0 #ccc, 4px 4px 0 #ccc,
  40. 5px 5px 0 #ccc, 10px 10px 0 rgba(0, 0, 0, 0.2);
  41. animation: floating 5s ease-in-out infinite;
  42. }
  43. .section .section__title span {
  44. text-shadow: 1px 1px 0 #ccc, 2px 2px 0 #ccc, 3px 3px 0 #ccc, 4px 4px 0 #ccc,
  45. 5px 5px 0 #ccc, 6px 6px 0 #ccc, 7px 7px 0 #ccc, 8px 8px 0 #ccc,
  46. 9px 9px 0 #ccc, 20px 20px 0 rgba(0, 0, 0, 0.2);
  47. font-weight: 700;
  48. font-size: 3em;
  49. }
  50. .section i {
  51. position: absolute;
  52. background: #fff;
  53. border-radius: 50%;
  54. box-shadow: 0 0 10px #fff, 0 0 20px #fff, 0 0 40px #fff, 0 0 80px #fff;
  55. animation: animate linear infinite;
  56. }
  57. @keyframes floating {
  58. 0%,
  59. 100% {
  60. transform: skewY(-7deg) translate(0, -20px);
  61. }
  62. 50% {
  63. transform: skewY(-7deg) translate(0, 20px);
  64. }
  65. }
  66. /* 利用透明度设置星星明暗变化的动画效果 */
  67. @keyframes animate {
  68. 0% {
  69. opacity: 0;
  70. }
  71. 10% {
  72. opacity: 1;
  73. }
  74. 90% {
  75. opacity: 1;
  76. }
  77. 100% {
  78. opacity: 0;
  79. }
  80. }

2.3. JS

* script.js

  1. const stars = () => {
  2. const count = 200;
  3. const section = document.querySelector('.section');
  4. let i = 0;
  5. while (i < count) {
  6. // 在内存中创建一个新的空元素对象,如i或是div
  7. const star = document.createElement('i');
  8. // 定义变量x和y :通过Math.random()方法随机的使星星出现在不同位置,当然星星的定位要在文档显示区内
  9. const x = Math.floor(Math.random() * window.innerWidth);
  10. const y = Math.floor(Math.random() * window.innerHeight);
  11. const size = Math.random() * 4;
  12. // 让星星始终会在网页最左最顶端出现,通过想x和y的定位,我们要让它出现在页面各个不同的位置
  13. star.style.left = x + 'px';
  14. star.style.top = y + 'px';
  15. // 利用Math.random()这个方法来随机取星星的大小:为每颗星星设置随机的宽高范围为[0,5)
  16. star.style.width = 1 + size + 'px';
  17. star.style.height = 1 + size + 'px';
  18. const duration = Math.random() * 2;
  19. // 设置持续时间
  20. // js中除了减法计算之外,不允许随便写-。因为会混淆。所以,DOM标准规定,所有带-的css属性名,一律去横线变驼峰
  21. // css属性animation-duration,在js中改写为驼峰形式:animationDuration
  22. star.style.animationDuration = 2 + duration + 's';
  23. // 设置延迟
  24. star.style.animationDelay = 2 + duration + 's';
  25. // 将新元素添加到DOM树:把新创建的节点追加到父元素下所有直接子元素的结尾
  26. section.appendChild(star);
  27. i++;
  28. }
  29. }
  30. // 调用函数
  31. stars();

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/90859
推荐阅读