JavaScript初学者表白利器--怦然心动

1.首先,我们可以根据所学的html与css知识画一个爱心(文章结尾附源代码)

 

2、 定义一个类名为"f"的元素样式,设置宽度为170px,高度为160px,相对位置为相对于父元素的左边缘和上边缘的偏移量分别为200px和200px。

 
3、定义一个类名为"m"的元素样式,应用一个名为"jump"的动画,动画时长为1秒,使用ease曲线作为动画速度变化,动画每次交替执行,并且无限循环。

jump动画代码如下:

4、设置"f"类名下的子元素为绝对定位,也就是说该元素的位置将相对于离它最近的具有定位属性(除了static)的父元素来定位。

 
5、类名为"z1"和"z2"的两个圆的元素样式,设置z1和z2宽度和高度为100px,边框半径为50%,背景颜色为红色。并将z2左边缘定位偏移量设置为70px。

 
6、定义类名为"z3"的元素样式,设置宽度和高度为100px,左边缘和上边缘定位偏移量分别为35px,背景颜色为红色,并通过transform属性将元素旋转45度。

 
7、定义类名为"z4"的元素样式,设置上边缘和左边缘定位偏移量分别为50px和40px,字体大小为large,字体颜色为aliceblue,z-index为-1。

 
8、定义类名为"z4c"的元素样式,应用一个名为"circles"的动画,动画时长为1秒,动画速度变化为线性,动画延迟1秒开始,动画每次交替执行,并且无限循环。

circle旋转动画代码如下:

 当然,不要忘了给body中的button按钮绑定事件来控制爱心的跳动:

做好了上述操作,最后就是见证奇迹的script部分:

1.使用document.getElementById('divF')document.getElementById('z4')获取具有id属性值为divFz4的元素,并将其分别赋值给变量divFz4。这样可以通过DOM操作来控制这些元素。

 

2.start1()函数用于启动动画效果,它将给divF元素添加了fm的类名(使用className属性),这将触发CSS中的相应样式,并使得元素显示动画效果。同时,它还给z4元素添加了z4z4c的类名,以触发CSS中的相应样式来对z4元素进行动画。

 

3.stop1()函数用于停止动画效果,它将从divF元素的类名中移除m类名,使得动画效果停止。同时,它也将从z4元素的类名中移除z4c类名,以停止z4元素的动画效果。

 

4.通过调用start1()stop1()函数,可以控制元素的动画效果的启动和停止。最后实现的代码效果如下视频所示,初学者的表白利器!

心动的感觉

    

源代码:

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>心动的感觉</title>

    <style>

        /*定义一个跳动动画*/

        @keyframes jump{

            from{

                transform: scale(0.5);/*框架大小倍率调整到原来的0.5倍*/

                opacity: 0.5;

                /*box-shadow: 10px 10px 6px;阴影效果*/

            }to{

                transform: scale(2);

                opacity: 1;

            }

        }

        /*定义一个旋转动画*/

        @keyframes circles{

            from{

                transform: rotate(0deg);

                z-index: 1;/*出现*/

            }to{

                transform: rotate(720deg);

                z-index: -1;/*隐藏*/

            }

        }

        .f{

            width: 170px;

            height: 160px;

            position: relative;

            left: 200px;

            top:200px;

            /*给父元素绑定动画*/

            /*animation:jump 1s ease alternate infinite ;*/

        }

        .m{

            animation:jump 1s ease alternate infinite;

        }

        .f>div{

            position: absolute;

        }

        /*两个圆*/

        .z1,.z2{

            width: 100px;

            height: 100px;

            border-radius: 50%;

            background-color: red;

        }

        .z2{

            left: 70px;

        }

        .z3{

            width: 100px;

            height: 100px;

            left: 35px;

            top:35px;    

            background-color: red;

            transform: rotate(45deg);

        }

        .z4{

            top:50px;

            left: 40px;

            font-size: large;

            color: aliceblue;

            z-index: -1;

        }

        .z4c{

            animation: circles 1s linear 1s infinite alternate;

        }

        button{

            width: 80px;

            height: 40px;

            background-color:rgb(54, 214, 54);

            border: none;

            color:white;

            font-size:large;

            border-radius: 10px;

            cursor: pointer;

            box-shadow:0 8px 5px gray;

        }

        button:active{

            transform: translate(5px,5px);

        }

    </style>

</head>

<body>

    <button οnclick="start1()">开始</button>

    <button οnclick="stop1()">停止</button>

    <div id="divF" class="f"><!--class中可以有多个值-->

    <div class="z1"></div>

    <div class="z2"></div>

    <div class="z3"></div>

    <div id="z4" class="z4">i&emsp;love&emsp;u</div><!--&emsp是空格-->

    </div>

</body>

<script>

    //1.获取

    let divF=document.getElementById('divF')

    let z4=document.getElementById('z4')

    function start1(){

        //2.设值

        divF.className='f m'

        z4.className='z4 z4c'

    }

    function stop1(){

        //2.设值

        divF.className='f'

        z4.className='z4'

    }

   

</script>

</html>

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用 JavaScript 实现动态爱心代码的示例: ```html <!DOCTYPE html> <html> <head> <style> body { text-align: center; background-color: #f5f5f5; } #heart { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 100px; color: red; animation: heartbeat 1s infinite; } @keyframes heartbeat { 0% { transform: scale(1); } 50% { transform: scale(1.3); } 100% { transform: scale(1); } } </style> </head> <body> <div id="heart">❤</div> <script> // 使用 JavaScript 动态创建爱心元素 function createHeart() { const heart = document.createElement('div'); heart.classList.add('heart'); heart.innerHTML = '❤'; // 设置随机位置 const x = Math.floor(Math.random() * window.innerWidth); const y = Math.floor(Math.random() * window.innerHeight); heart.style.left = x + 'px'; heart.style.top = y + 'px'; // 设置随机大小 const size = Math.floor(Math.random() * 100) + 50; heart.style.fontSize = size + 'px'; // 设置随机动画延迟和持续时间 const delay = Math.random() * 2; const duration = Math.random() * 2 + 2; heart.style.animationDelay = delay + 's'; heart.style.animationDuration = duration + 's'; // 添加到页面中 document.body.appendChild(heart); // 动画结束后移除爱心元素 setTimeout(() => { heart.remove(); }, duration * 1000); } // 每隔一段时间创建新的爱心 setInterval(createHeart, 500); </script> </body> </html> ``` 这段代码将在页面上创建动态的爱心效果。爱心会按照随机位置、大小、动画延迟和持续时间进行动态生成和移除。每隔500毫秒会创建一个新的爱心元素。你可以将上述代码复制到一个 HTML 文件中,并在浏览器中打开该文件以查看效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值