赞
踩
目录
js+css3全屏星星闪烁背景2023新年快乐动画特效,文字还有3D立体效果。其中,利用Math.random()方法,实现满天星的效果,着实让人眼前一亮。对于某些站点来说,这个方法非常实用,因为可以利用它来随机显示一些名人名言和新闻事件。
好了,话不多说,先看效果图,如下:
* index.html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8" />
- <title>js+css3全屏2023新年快乐动画特效</title>
- <link rel="stylesheet" href="css/style.css" />
- </head>
- <body>
- <section class="section">
- <h2 class="section__title">Happy New Year<br /><span>2023</span></h2>
- </section>
- <script src="js/script.js"></script>
- </body>
- </html>
* style.css
- * {
- /* 采用怪异模式下的盒模型:元素的总高度和宽度包含内边距和边框(padding与border) */
- box-sizing: border-box;
- margin: 0;
- padding: 0;
- }
-
- body {
- /* 没有滚动条 */
- overflow: hidden;
- }
-
- .section {
- display: flex;
- justify-content: center;
- align-items: center;
- position: relative;
- min-height: 100vh;
- background: linear-gradient(135deg, #111, #222, #111);
- }
- .section::before {
- content: "";
- position: absolute;
- width: 30vw;
- height: 30vw;
- /* 红色边框 */
- border: 5vw solid #ff1062;
- /* 圆形边框 */
- border-radius: 50%;
- /* 为边框添加2个下拉阴影 */
- box-shadow: 0 0 0 1vw #222, 0 0 0 1.3vw #fff;
- }
- .section .section__title {
- position: absolute;
- transform: skewY(-7deg);
- z-index: 10;
- color: #fff;
- text-align: center;
- font-size: 9vw;
- line-height: 2em;
- text-shadow: 1px 1px 0 #ccc, 2px 2px 0 #ccc, 3px 3px 0 #ccc, 4px 4px 0 #ccc,
- 5px 5px 0 #ccc, 10px 10px 0 rgba(0, 0, 0, 0.2);
- animation: floating 5s ease-in-out infinite;
- }
- .section .section__title span {
- text-shadow: 1px 1px 0 #ccc, 2px 2px 0 #ccc, 3px 3px 0 #ccc, 4px 4px 0 #ccc,
- 5px 5px 0 #ccc, 6px 6px 0 #ccc, 7px 7px 0 #ccc, 8px 8px 0 #ccc,
- 9px 9px 0 #ccc, 20px 20px 0 rgba(0, 0, 0, 0.2);
- font-weight: 700;
- font-size: 3em;
- }
- .section i {
- position: absolute;
- background: #fff;
- border-radius: 50%;
- box-shadow: 0 0 10px #fff, 0 0 20px #fff, 0 0 40px #fff, 0 0 80px #fff;
- animation: animate linear infinite;
- }
-
- @keyframes floating {
- 0%,
- 100% {
- transform: skewY(-7deg) translate(0, -20px);
- }
- 50% {
- transform: skewY(-7deg) translate(0, 20px);
- }
- }
- /* 利用透明度设置星星明暗变化的动画效果 */
- @keyframes animate {
- 0% {
- opacity: 0;
- }
- 10% {
- opacity: 1;
- }
- 90% {
- opacity: 1;
- }
- 100% {
- opacity: 0;
- }
- }
* script.js
- const stars = () => {
- const count = 200;
- const section = document.querySelector('.section');
- let i = 0;
- while (i < count) {
- // 在内存中创建一个新的空元素对象,如i或是div
- const star = document.createElement('i');
- // 定义变量x和y :通过Math.random()方法随机的使星星出现在不同位置,当然星星的定位要在文档显示区内
- const x = Math.floor(Math.random() * window.innerWidth);
- const y = Math.floor(Math.random() * window.innerHeight);
- const size = Math.random() * 4;
- // 让星星始终会在网页最左最顶端出现,通过想x和y的定位,我们要让它出现在页面各个不同的位置
- star.style.left = x + 'px';
- star.style.top = y + 'px';
- // 利用Math.random()这个方法来随机取星星的大小:为每颗星星设置随机的宽高范围为[0,5)
- star.style.width = 1 + size + 'px';
- star.style.height = 1 + size + 'px';
-
- const duration = Math.random() * 2;
-
- // 设置持续时间
- // js中除了减法计算之外,不允许随便写-。因为会混淆。所以,DOM标准规定,所有带-的css属性名,一律去横线变驼峰
- // css属性animation-duration,在js中改写为驼峰形式:animationDuration
- star.style.animationDuration = 2 + duration + 's';
- // 设置延迟
- star.style.animationDelay = 2 + duration + 's';
- // 将新元素添加到DOM树:把新创建的节点追加到父元素下所有直接子元素的结尾
- section.appendChild(star);
- i++;
- }
- }
- // 调用函数
- stars();
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/90859
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。