鼠标点击波纹特效 html+css+js

韩小韩
2021-05-27 / 0 评论 / 1,686 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年05月27日,已超过1065天没有更新,若内容或图片失效,请留言反馈。

鼠标点击波纹特效 html+css+js

定义标签

 <div class="card">
        <img src="3.3.png" alt="x" width="100%">
        <h3>北极光之夜</h3>
        <p >
            生活下去,错误下去,堕落下去,为胜利而欢呼,从生命中重新创造生命!
        </p>
    </div>

卡片和文字的基本样式

 .card{
            width: 200px;
            height: 300px;
            box-shadow: 1px 1px 5px #555;
            cursor: pointer;
            background-color: rgb(243, 243, 243);
            position: relative;
            overflow: hidden;
        }
        .card h3,.card p{
            padding: 5px;
            text-align: center;
            font-family: 'fangsong';
            font-weight: bold;
            user-select: none;
        }

js部分,见注释

 <script>
         /* 获取元素 */
         var card = document.querySelector('.card');
          /* 绑定点击事件 */
         card.addEventListener('click',function(e){
              /* 获取鼠标点击的水平位置 */
             let x = e.clientX - this.offsetLeft;
             /* 获取鼠标点击的垂直位置 */
             let y = e.clientY - this.offsetTop;
              /* 创建一个span元素 */
             let circle = document.createElement('span');
             /* 为span元素添加定位的 left 属性 */
             circle.style.left = x + 'px';
              /* 为span元素添加定位的 top 属性 */
             circle.style.top = y + 'px';
              /* 卡片添加创建好的span元素 */
             card.appendChild(circle);
             /* 1s后移除span元素 */
             setInterval(function(){
                 circle.remove();
             },1000)

         })

    </script>

添加上一步创建的 span 元素的css样式

  .card span{
            position: absolute;
            transform: translate(-50%,-50%);
  
            background-color: rgb(255, 254, 254);
            border-radius: 50%;
            animation: big 1s  ;
        }
        @keyframes big{
            0%{
                width: 0px;
            height: 0px;
            opacity: 1;
            }
            100%{
                width: 400px;
            height: 400px;
            opacity: 0;
            }
        }

完整源码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        body{
            height: 100vh;
            display: flex;
            justify-content: center;
            align-items: center;
            background-image: radial-gradient(white,black);
        }
        .card{
            width: 200px;
            height: 300px;
            box-shadow: 1px 1px 5px #555;
            cursor: pointer;
            background-color: rgb(243, 243, 243);
            position: relative;
            overflow: hidden;
        }
        .card h3,.card p{
            padding: 5px;
            text-align: center;
            font-family: 'fangsong';
            font-weight: bold;
            user-select: none;
        }
        .card span{
            position: absolute;
            transform: translate(-50%,-50%);
  
            background-color: rgb(255, 254, 254);
            border-radius: 50%;
            animation: big 1s  ;
        }
        @keyframes big{
            0%{
                width: 0px;
            height: 0px;
            opacity: 1;
            }
            100%{
                width: 400px;
            height: 400px;
            opacity: 0;
            }
        }
    </style>
</head>
<body>
    <div class="card">
        <img src="3.3.png" alt="x" width="100%">
        <h3>北极光之夜</h3>
        <p >
            生活下去,错误下去,堕落下去,为胜利而欢呼,从生命中重新创造生命!
        </p>
    </div>
    <script>
         
         var card = document.querySelector('.card');
         card.addEventListener('click',function(e){
             
             let x = e.clientX - this.offsetLeft;
             let y = e.clientY - this.offsetTop;

             let circle = document.createElement('span');
             circle.style.left = x + 'px';
             circle.style.top = y + 'px';
             
             card.appendChild(circle);

             setInterval(function(){
                 circle.remove();
             },1000)

         })

    </script>
</body>
</html>

2

评论 (0)

取消