【问题标题】:Shadow on all the page except an input with Angular 4除 Angular 4 的输入外,所有页面上都有阴影
【发布时间】:2017-10-31 12:57:01
【问题描述】:

我有一个带有输入的 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 出现或消失,但输入总是被“毯子”隐藏。

我怎样才能得到我想要的?

编辑 我想做与引导模式相同的事情,但点击输入。

【问题讨论】:

  • 那个问题应该有 CSS 标签

标签: javascript css angular typescript


【解决方案1】:

只需将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>

【讨论】:

  • 好吧,我运行了代码 sn-p,我在整页深色毯子上看到了一个工作输入。与我的 Codepen 相同:codepen.io/jeremythille/pen/vWOxvo。定义it doesn't work
  • 但是“div 毯子”对我来说不在同一水平。它会导致问题吗?
  • 是否和我的 sn-p 中的输入处于同一级别? :)
  • 如果你隐藏毯子并在点击输入时显示它。有用吗?
  • 呃,为什么不呢?毯子在正确的位置。
猜你喜欢
  • 1970-01-01
  • 2018-07-05
  • 2021-03-02
  • 1970-01-01
  • 1970-01-01
  • 2016-06-07
  • 2016-04-10
  • 1970-01-01
相关资源
最近更新 更多