【问题标题】:Change div opacity with mouse position使用鼠标位置更改 div 不透明度
【发布时间】:2014-12-30 23:28:19
【问题描述】:

我正在尝试根据鼠标位置更改元素的不透明度。我在这里找到了这个解决方案——Changing Opacity with Mouse Position——但我需要修改一下。我正在寻找元素的垂直和水平 center 中的不透明度为 0。离中心越远,不透明度越高。

这是我的开发页面:http://www.bjornfloki.com/dev/spoon

我正在使用以下脚本:

var $win = $(window),
w = 0,h = 0,
opacity = 1,
getWidth = function() {
    w = $win.width();
    h = $win.height();
};

$win.mousemove(function(e) {
    getWidth();
    opacity = (e.pageX/w * 0.5) + (e.pageY/h * 0.5);

    $('#myElement').css('opacity',opacity);

});

【问题讨论】:

    标签: jquery position mouseevent opacity


    【解决方案1】:

    将 centerX 设置为水平中心的位置,然后将 centerY 设置为垂直中心。 通过将 currentX 和 currentY 位置的模与 centerX 和 centerY 相结合来计算不透明度。

    像不透明度 = [1-(centerX % currentX)] + [1-(centerY % currentY)]

    【讨论】:

      【解决方案2】:

      我认为这对你有帮助

          var window_xy_addition = $(window).height() + $(window).width();
          var mouse_position_xy_addition = event.pageY + event.pageX;
          $("#change_opacity").css("opacity", (mouse_position_xy_addition/window_xy_addition));
      

      【讨论】:

        【解决方案3】:

        这里是Plunker - Preview

        Working Fiddle

        脚本

        $(function () {
            $(document).on("mousemove", function (e) {
                var me = $("#scene"),
                    cx = me.offset().left + me.width() / 2,
                    cy = me.offset().top + me.height() / 2,
                    d = (Math.sqrt(Math.pow(cx, 2) + Math.pow(cy, 2))),
                    md = (Math.sqrt(Math.pow(e.pageX - cx, 2) + Math.pow(e.pageY - cy, 2)));
                me.css('opacity', md / d);
         -webkit-transition:all 0.5s ease-out;
            });
        
        });
        

        HTML

        <ul id="scene" class="scene" style="position: relative;">
            <li class="layer beresponsive" data-depth="0" style="position: relative; display: block; left: 0px; top: 0px; transform: translate(0px, 0px);">
                <img src="http://www.bjornfloki.com/wp-content/themes/wordpress-bootstrap-master-child/images/bg-eyes.jpg" />
            </li>
            <li class="layer" data-depth="00" style="position: absolute; display: block; left: 0px; top: 0px; transform: translate(0px, 0px);">
                <img id="gradient" src="http://www.bjornfloki.com/wp-content/themes/wordpress-bootstrap-master-child/images/empty.png" style="opacity: 0.196366554362154;" />
            </li>
            <li class="layer" data-depth="00" style="position: absolute; display: block; left: 0px; top: 0px; transform: translate(0px, 0px);">
                <img src="http://www.bjornfloki.com/wp-content/themes/wordpress-bootstrap-master-child/images/spoon-logo-1920.png" />
            </li>
        </ul>
        

        【讨论】:

        • Venkata,一个很好的解决方案,非常感谢!它的工作原理与它应该的一样,除了不透明度应该反转 - 我正在寻找不透明度在中心为 0,在其他边缘为 1。现在它在中心是 1,在外边缘是 0:bjornfloki.com/dev/spoon(请注意,该函数被应用于空 PNG 以产生背景效果,而不是 bg-eyes.jpg 图像)
        • 糟糕!那是被忽略的。我刚刚通过反转并从您的网站获取一些 html 并将其添加到 fiddle 并在这里进行更新,看看。
        • 你太棒了我的朋友!我完全按照您提供的代码使用了代码,但在脚本中我将 #scene 替换为 #gradient 以获得完全符合我想要的外观。再次感谢!
        猜你喜欢
        • 2023-03-23
        • 2012-08-06
        • 2022-06-11
        • 1970-01-01
        • 1970-01-01
        • 2012-08-15
        • 1970-01-01
        • 2014-12-27
        • 1970-01-01
        相关资源
        最近更新 更多