我知道这是一个常见问题,我已经查看了许多相关的问题/答案,但仍然无法正常工作。除了某些部分,我想使整个屏幕变暗。在一种情况下,不应变暗的部分是两个同心正方形之间的区域。我想要一个仅使用javascript和CSS的解决方案。它不应使用任何第三方库(如jquery)。我不担心旧的浏览器。只要它能在最新的浏览器上运行,我都可以使用它所需的css3。我有一些其他限制-我在应用中使用绝对定位。所有元素都绝对定位。

编辑:感谢您帮助我与您的答案。我想我应该提到我想响应用户单击按钮等事件使屏幕变暗。该事件使屏幕变暗,但我要突出显示的某些区域除外。当用户再次单击该按钮时,屏幕将恢复。当屏幕变暗时,用户不应与变暗区域中的DOM元素进行任何交互。

这是我的js小提琴:http://jsfiddle.net/z1Lj7h90/

HTML:

<div id="main">
    <div id="outer"></div>
    <div id="inner"></div>
    <button id="mybutton">Highlight</button>
    <div id="darkness"></div>
</div>


CSS:

#mybutton
{
position: absolute; top: 450px; left:100px; z-index:10;
}

#main {
    position: relative;
    z-index:10;
    width:500px;
    height:500px;
    overflow:hidden;
}

#darkness
{
    z-index:5;
    width:100%;
    height:100%;
    position:absolute;
    left:0;
    top:0;
    -webkit-transition: all 1s ease;
  -moz-transition: all 1s ease;
  -ms-transition: all 1s ease;
  -o-transition: all 1s ease;
  transition: all 1s ease;
}

.fadein
{
    background:rgba(0,0,0,0.75);
}

#outer
{
    position:absolute;
    top:10px;
    left:10px;
    width:400px;
    height:400px;
    border:2px solid red;
}

#inner
{
    position:absolute;
    top:40px;
    left:40px;
    width:340px;
    height:340px;
    border:2px solid blue;
}


JS:

var button = document.getElementById("mybutton");
button.addEventListener("click", toggle);
var ff = false;
function toggle()
{
    var darkness = document.getElementById("darkness");
  darkness.classList.toggle("fadein");
    if (ff)
    {
        dice.style.zIndex = originalZIndex;
        button.innerText = "Highlight";
    }
    else
    {
        dice.style.zIndex = 10;
        button.innerText = "Restore";
    }
    ff = !ff
}

最佳答案

您可以使用CSS来实现。



html, body {
    height: 100%;
}
body {
    background-color: #999999;
}

#outer{
  position: absolute;
  width: 200px;
  height: 200px;
  top: 50%;
  left: 50%;
  margin-left: -50px;
  margin-top: -50px;
  background-color: #44c;
}

#inner{
  position: relative;
  width: 100px;
  height: 100px;
  top: 50%;
  left: 50%;
  margin-left: -50px;
  margin-top: -50px;
  background-color: #ffffff;
}

<body>
    <div id="outer">
        <div id="inner"></div>
    </div>
</body>

关于javascript - 如何使用纯javascript和css使除两个同心正方形之间的区域以外的整个屏幕变暗(无jQuery),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27283145/

10-12 12:39