网站美化——鼠标点击特效
本文最后更新于23 天前,其中的信息可能已经过时,如有错误请发送邮件到3496667827@qq.com
AI智能摘要
文章介绍了一种通过JavaScript实现的鼠标点击特效,适用于WordPress网站美化。在站点目录中找到特定主题下的footer.php文件,并在其中添加代码以实现快速点击不显示蓄力提示的按压特效。该效果通过监听鼠标按下和松开事件来动态创建和移除"按住蓄力"提示,并计算按压时间及扩散系数。

效果展示

服务器上找到 WordPress 站点目录,如笔者的是 /www/wwwroot/[站点文件名]

在目录底下找到 wp-content/themes/[WordPress使用的主题名称]/footer.php

</body> 之前添加这些代码

<script type="text/javascript">
// 快速点击不显示蓄力提示的按压特效
jQuery(document).ready(function($) {
    var pressStartTime;
    var maxPressTime = 800; // 最大按压时间
    var isPressing = false;
    var pressIndicator;
    var indicatorTimeout; // 用于延迟显示提示的计时器
    
    // 鼠标按下时记录开始时间
    $("body").mousedown(function(e) {
        isPressing = true;
        pressStartTime = Date.now();
        var $this = $(this);
        
        // 延迟显示"按住蓄力"提示(只有按压超过一定时间才显示)
        indicatorTimeout = setTimeout(function() {
            pressIndicator = $("<div class='press-indicator'>按住蓄力...</div>");
            pressIndicator.css({
                "position": "absolute",
                "top": e.pageY + 20 + "px",
                "left": e.pageX + "px",
                "transform": "translate(-50%, 0)",
                "color": "#666",
                "font-size": "12px",
                "pointer-events": "none",
                "z-index": 9999
            });
            $("body").append(pressIndicator);
            $this.data("pressIndicator", pressIndicator);
        }, 150); // 按压超过150ms才显示提示
    });
    
    // 鼠标松开时触发特效
    $("body").mouseup(function(e) {
        if (!isPressing) return;
        isPressing = false;
        
        // 清除延迟计时器(如果还没显示提示)
        clearTimeout(indicatorTimeout);
        
        // 移除按压指示器(如果已显示)
        var pressIndicator = $(this).data("pressIndicator");
        if (pressIndicator) {
            pressIndicator.remove();
            $(this).removeData("pressIndicator");
        }
        
        // 计算按压时间
        var pressEndTime = Date.now();
        var pressDuration = pressEndTime - pressStartTime;
        pressDuration = Math.min(pressDuration, maxPressTime);
        
        // 扩散系数计算
        var scaleFactor = 0.5 + (pressDuration / maxPressTime) * 1;
        
        // 创建元素
        var ring = $("<div class='click-ring'></div>");
        var particles = $("<div class='particles-container'></div>");
        var x = e.pageX, y = e.pageY;
        var finalRingSize = 150 * scaleFactor;
        
        // 圆环样式
        ring.css({
            "position": "absolute",
            "top": y + "px",
            "left": x + "px",
            "width": "15px",
            "height": "15px",
            "border-radius": "50%",
            "background": "rgba(150, 150, 150, 0.2)",
            "border": "3px solid #999",
            "transform": "translate(-50%, -50%)",
            "z-index": 9998,
            "pointer-events": "none",
            "opacity": 1
        });
        
        // 粒子容器样式
        particles.css({
            "position": "absolute",
            "top": y + "px",
            "left": x + "px",
            "transform": "translate(-50%, -50%)",
            "z-index": 9999,
            "pointer-events": "none"
        });
        
        $("body").append(ring).append(particles);
        
        // 粒子创建
        for (var i = 0; i < 20; i++) {
            var particle = $("<span class='particle'></span>");
            var angle = Math.random() * Math.PI * 2;
            var size = 5 + Math.random() * 8;
            var originalSize = size;
            var rangeFactor = 0.3 + Math.random() * 0.8;
            var lightness = 30 + Math.random() * 50;
            
            particle.css({
                "position": "absolute",
                "width": size + "px",
                "height": size + "px",
                "border-radius": "50%",
                "background": "hsl(340, 100%, " + lightness + "%)",
                "top": "0px",
                "left": "0px",
                "opacity": 0.7 + Math.random() * 0.3,
                "transform": "translate(-50%, -50%)"
            });
            
            particles.append(particle);
            
            // 粒子动画
            setTimeout(function(p, a, rf, os) {
                return function() {
                    var animateParticle = function(progress) {
                        var ringRadius = 15 + (finalRingSize - 15) * progress;
                        var particleRadius = ringRadius * rf;
                        var xPos = Math.cos(a) * particleRadius;
                        var yPos = -Math.sin(a) * particleRadius;
                        var currentSize = os * (1 - progress);
                        
                        p.css({
                            "left": xPos + "px",
                            "top": yPos + "px",
                            "width": currentSize + "px",
                            "height": currentSize + "px",
                            "opacity": 0.9 - (progress * 1.5)
                        });
                    };
                    
                    var duration = 400;
                    var start = Date.now();
                    
                    var timer = setInterval(function() {
                        var timePassed = Date.now() - start;
                        var progress = timePassed / duration;
                        
                        if (progress >= 1) {
                            progress = 1;
                            clearInterval(timer);
                            p.remove();
                        }
                        
                        animateParticle(progress);
                    }, 16);
                };
            }(particle, angle, rangeFactor, originalSize), Math.random() * 30);
        }
        
        // 圆环动画
        ring.animate({
            "width": finalRingSize + "px",
            "height": finalRingSize + "px",
            "opacity": 0,
            "border-width": "2px",
            "border-color": "rgba(170, 170, 170, 0)"
        }, 400, function() {
            ring.remove();
            setTimeout(function() {
                particles.remove();
            }, 50);
        });
    });
    
    // 鼠标离开页面时取消按压状态
    $("body").mouseleave(function() {
        isPressing = false;
        clearTimeout(indicatorTimeout);
        var pressIndicator = $(this).data("pressIndicator");
        if (pressIndicator) {
            pressIndicator.remove();
            $(this).removeData("pressIndicator");
        }
    });
});
</script>
<!--mouse effects show end-->
    

觉得有帮助可以投喂下博主哦~感谢!
作者:Hueil
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 协议
转载请注明 文章地址 及 作者 哦~
暂无评论

发送评论 编辑评论


                
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇