选择表单时设置不透明度(可能使用'background'属性)

时间:2017-06-02 07:31:34

标签: css

除了表单外,我想要整个屏幕的叠加层,以便人们可以专注于它。

这个解决方案很理想,但表格不会改变。

body {
  opacity: .4
}

.form:focus {
  opacity: 1 /* crap, doesn't work */
}

这不起作用

some-element {
  background: rgba(0, 0, 0, .4)
}

1 个答案:

答案 0 :(得分:1)

您可以使用一些JavaScript来选择inputs的父级以及叠加层并与之互动。您可以切换 活动 类,这样您就可以使用实际的CSS管理您的CSS,我发现它更干净。



$(document).ready(function() {
  var overlay = $('#overlay');

  $('input').focusin(function(){
    $(this).parent().addClass('active');
    overlay.addClass('active');
  });

  $('input').focusout(function(){
    $(this).parent().removeClass('active');
    overlay.removeClass('active');
  });
});

form {
  position: relative;
  background-color: white;
  padding: 20px;
}

form.active {
  z-index: 100;
}

#overlay {
  position: absolute;
  top: 0; left: 0;
  width: 100%;
  height: 100%;
  display: none;
  z-index: 0;
  background-color: rgba(0,0,0,0.5);
}
#overlay.active {
  display: block;
  z-index: 10;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
  <form>
    <input type="text" name="" value="">
  </form>

  <div id="overlay"></div>
</body>
&#13;
&#13;
&#13;