javascript - 对整个页面进行着色,悬停时取消对选定元素的着色

标签 javascript jquery dom jquery-tools

我正在尝试制作一个页面检查工具,其中:

  • 整个页面都有阴影
  • 悬停的元素没有阴影。

与灯箱类型应用程序(类似)不同,悬停的项目应保留在原位并且(理想情况下)不会重复。

最初,在查看图像灯箱实现时,我想到将叠加层附加到文档,然后在悬停时提高元素的 z 索引。然而,这种技术在这种情况下不起作用,因为覆盖层会阻止额外的鼠标悬停:

$(function() {
    window.alert('started');
    $('<div id="overlay" />').hide().appendTo('body').fadeIn('slow');


    $("p").hover(
        function () {
            $(this).css( {"z-index":5} );
        }, 
        function () {
            $(this).css( {"z-index":0} );
        }
    );

或者,JQueryTools 有一个“暴露”和“掩码”工具,我已使用下面的代码尝试过:

$(function() {
    $("a").click(function() {
         alert("Hello world!");
    });

    // Mask whole page
    $(document).mask("#222");

    // Mask and expose on however / unhover 
    $("p").hover(
        function () {
            $(this).expose();
        }, 
        function () {
            $(this).mask();
        }
    );

}); 

除非禁用初始页面屏蔽,否则悬停不起作用。有什么想法可以最好地实现这一点,使用普通的 JQuery、JQuery 工具公开或其他一些技术?谢谢你!

最佳答案

您可以做的是复制该元素并将其插入到叠加层之外的 DOM 中(具有更高的 z-index)。为此,您需要计算它的位置,但这并不太困难。

这是一个working example .

在写这篇文章时,我重新认识到一个事实:不透明度为零的东西无法触发事件。因此您不能使用 .fade(),您必须专门将不透明度设置为非零但非常小的数字。

$(document).ready(function() { init() })

function init() {
    $('.overlay').show()
    $('.available').each(function() {
       var newDiv = $('<div>').appendTo('body');
       var myPos = $(this).position()  
       newDiv.addClass('available')
       newDiv.addClass('peek')
       newDiv.addClass('demoBorder')                
       newDiv.css('top',myPos.top+'px')
       newDiv.css('left',myPos.left+'px')
       newDiv.css('height',$(this).height()+'px')
       newDiv.css('width',$(this).width()+'px')  
       newDiv.hover(function()
          {newDiv.addClass('full');newDiv.stop();newDiv.fadeTo('fast',.9)},function()
          {newDiv.removeClass('full');newDiv.fadeTo('fast',.1)})   
    })  
}

关于javascript - 对整个页面进行着色,悬停时取消对选定元素的着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4683323/

相关文章:

javascript - 如何修复表格的标题

javascript - 这个 Javascript 函数返回什么?

javascript - 在父元素之后稍微淡化子元素

jquery - 使用 jquery 设置不透明度在 IE8 中不起作用,但在 IE7 中起作用

html - 从第一行删除行高

javascript - 为什么这段 JavaScript 代码没有为窗口添加动画?

javascript - 图像宽度未正确渲染

javascript - 从 Controller 添加的表格上的 itemPress 不是函数

jQuery $.wait() *所有*延迟的被拒绝?

javascript - $watchGroup 意外行为