likes
comments
collection
share

国庆快乐,用这个爱心特效来赞给祖国😎

作者站长头像
站长
· 阅读数 49

前言

  一年一度的国庆节来了,在这里祝我们的祖国繁荣昌盛,祝各位国庆快乐。既然是国庆节,当然少不了给祖国献上一份礼物。在这里,我用爱心特效来给我们的祖国赞一个。

国庆快乐,用这个爱心特效来赞给祖国😎

效果展示

国庆快乐,用这个爱心特效来赞给祖国😎

实现思路

  从效果图上不难看出,爱心随着鼠标的移动而移动,这里的爱心是一张图片。当鼠标放到屏幕上并开始移动时,便会生成已经准备好的爱心图片。整体实现是由 JSCSS 实现的,关键部分是 JS 代码。这里将 JS 代码写到了index.html文件夹。

国庆快乐,用这个爱心特效来赞给祖国😎

JS 部分

  JS 部分是这里实现的关键代码。JS 作为三件套之一,有着与网页进行交互的作用。在这里用到了很多 DOM 操作,比如 querySelector() 方法,返回匹配的选择器的第一个元素;createElement() 方法,通过指定标签创建一个元素;等等。这里很多 DOM 操作我也是第一次使用或者接触,因此对我来说也是一个学习的过程。

  JS 部分代码如下,下面会来一段一段解释相关代码的作用。

 <script>
    document.addEventListener('mousemove',(e)=>{
        let body = document.querySelector('body')
        let aixin = document.createElement('span')
        let x = e.offsetX
        let y = e.offsetY
        aixin.style.left = x + 'px'
        aixin.style.top = y + 'px'
        let size = Math.random()*100
        aixin.style.width = size + 'px'
        aixin.style.height = size + 'px'
        body.appendChild(aixin)
        setTimeout(()=>{
            aixin.remove()
        },2000)
    })
   </script> 

  使用 addEventListener 添加指定事件,在这里添加 mousemove 事件,该事件是指当鼠标在元素上移动时,mousemove 事件被触发。然后设置 querySelector()createElement() 相关 DOM 操作,在这里通过 createElement() 创建 span 元素,因此在整个 index.html 文件中并没有添加其他的 HTML 元素,仅仅只有 JS 代码。

let body = document.querySelector('body')
let aixin = document.createElement('span')

  其次,引入一个新知识 —— offsetX/offsetY,这两个属性的意思是返回鼠标相对于目标元素的 X 坐标或者 Y 坐标。简单点理解就是如果想要获取 X 坐标或者 Y 坐标,就可以使用这个属性。然后通过 random 函数来生成随机大小,并将随机大小赋给宽高。

 let x = e.offsetX
 let y = e.offsetY
 aixin.style.left = x + 'px'
 aixin.style.top = y + 'px'
 let size = Math.random()*100
 aixin.style.width = size + 'px'
 aixin.style.height = size + 'px'

  最后,以上这些完成后,需要将爱心添加到 body 中,这里就要用到另一个 DOM 操作 —— appendChild(),该操作的意思是向节点添加最后一个子节点。所以这里是指向 body 添加名为 aixin 的节点,这样就算是完成了90%。因为还有最后一步,就是设置定时器。为什么要设置定时器呢?在效果图中大家能看到在不断移动鼠标的过程中,前面生成的爱心也会逐渐消失,这就是通过定时器以及后期 CSS 中的动画设置来达到此效果的。remove() 方法可以移除被选元素,包括所有文本和子节点。

 body.appendChild(aixin)
 setTimeout(()=>{
     aixin.remove()
 },2000)

CSS 部分

  CSS 部分就是编写相关样式,从效果图上也能看出,这里的样式并不复杂。并且主要是对生成的 span 编写相关样式

  对整体做样式 Reset(重置)

*{
    margin: 0;
    padding: 0;
    font-family: '微软雅黑',sans-serif;
}
body{
    height: 100vh;
    background: white;
    overflow: hidden;
}

  在 JS 中生成 span 标签,一个 span 代表一个爱心,因此在 span 中加入背景图片。

span{
    position: absolute;
    background: url('aixin.png');
    pointer-events: none;
    transform: translate(-50%,-50%);
    animation: animate 2s linear ;
    width: 100px; 
    height: 100px;
    background-size: cover;
}

总结

  这个爱心特效够赞嘛,够赞的话也可以给我来个小小的赞吧😎!其实除了爱心,还能用其他图片来代替爱心,关键是要理解 JS 部分代码,JS 部分是整个过程中最关键的,有了这 JS 部分,就可以来自由发挥了。

转载自:https://juejin.cn/post/7149823693613432869
评论
请登录