除了表单外,我想要整个屏幕的叠加层,以便人们可以专注于它。
这个解决方案很理想,但表格不会改变。
body {
opacity: .4
}
.form:focus {
opacity: 1 /* crap, doesn't work */
}
这不起作用
some-element {
background: rgba(0, 0, 0, .4)
}
答案 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;