javascript - 除 Angular 4 的输入外,所有页面上都有阴影

标签 javascript css angular typescript

我有一个带输入的 Angular 4 应用程序,我想在单击它时专注于此输入。所以我想使除焦点输入之外的所有页面变暗。所以我尝试添加一个黑色背景和 50% 不透明度的 div。

但是输入总是低于 div 而它的 z-index 更高。

这是我的 html 代码:

<router-outlet></router-outlet>
<div id="blanket"></div>

毯子的CSS代码:

#blanket {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background: black;
  opacity: 0.5;
  z-index: 100;
  visibility: hidden;
}

在组件中:

<input type="text" class="form-control" style="z-index: 2000000 !important;background-color: #fff" (focus)="focusOnInputName()" (blur)="blurOnInputName()" >

还有两个函数:

focusOnInputName(){
    console.log('focus');
    let d = document.querySelector('#blanket');
    this.renderer.setStyle(d, "visibility", "visible");

}

blurOnInputName(){
    console.log('blur');
    let d = document.querySelector('#blanket');
    this.renderer.setStyle(d, "visibility", "hidden");
}

当聚焦或模糊时,blanket div 出现或消失,但输入始终被“blanket”隐藏。

我该怎么做才能得到我想要的?

编辑 我想做与 Bootstrap 模态相同的事情,但要单击输入。

最佳答案

只需将 position: relative 添加到输入元素即可。

.container {
  position: relative;
  width: 500px;
  height: 200px;
  top: 10px;
  left: 50px;
  border: #00f solid 2px;
}
.container input {
  z-index: 2;
  position: relative; /* Add this */
}
.blanket {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
  background: rgba(0,0,0,0.6);
}
<div class="container">
  <p>Some text</p>
  <p>Some other text</p>
  <input placeholder="Type something"/>
  <p>Some more text</p>
</div>

<div class="blanket"></div>

关于javascript - 除 Angular 4 的输入外,所有页面上都有阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47036025/

相关文章:

javascript - 从 JavaScript 中的数组中删除索引未知的项的更好方法

c# - jQuery 不加载响应

javascript - GeoJSON 要素坐标未显示在 OpenLayers map 上

html - 具有快速鼠标悬停/鼠标移出的完整悬停动画持续时间?

javascript - 响应式 Bootstrap

javascript - 在推送对象时,我得到的所有内容都是 NULL angular2+typescript

angular - 使用angular6的Http get方法

javascript - 在常规 JS 文件中使用 Meteor Iron Router 数据上下文?

javascript - 展开和折叠元素以及从 JavaScript 中删除静态文本

angularjs - tsconfig 模块选项 - 'System' 是指 SystemJS 吗?