[英]How do I change the opacity of the background content when the hamburger menu is open?
[英]How to change background Opacity when bootstrap modal is open
我正在使用引导模式。 当模态打开时,默认情况下不更改背景内容不透明度。 我尝试在 js 中使用
function showModal() {
document.getElementById("pageContent").style.opacity = "0.5";
}
这是有效的,但每当模态关闭时,pageContent 仍然保留不透明度样式。 但是,我确信这不是正确的做法。 任何帮助表示赞赏。 谢谢。 打开 Modal 的 Html 按钮是
<button class="btn glossy-clear" data-toggle="modal" data-target="#modal-display" onclick="showModal()">Clear</button>
模态代码是
<div class="modal fade" id="modal-display">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title">Search results</h4>
</div>
<div class="modal-body">
<div class="container">
<div class="row">
<div class="col-md-5">Hello</div>
<div class="col-md-5">i!!!!</div>
</div>
</div>
</div>
</div>
</div>
</div>
编辑:
我假设你想设置模态背景的不透明度......
通过 CSS 设置不透明度
.modal-backdrop
{
opacity:0.5 !important;
}
!important
防止不透明度被覆盖 - 特别是在这种情况下来自 Bootstrap。
您可以覆盖样式表中的模态背景不透明度 [注意 .in 类]
.modal-backdrop.in {
opacity: 0.9;
}
你可以利用引导事件::作为
//when modal opens
$('#yourModal').on('shown.bs.modal', function (e) {
$("#pageContent").css({ opacity: 0.5 });
})
//when modal closes
$('#yourModal').on('hidden.bs.modal', function (e) {
$("#pageContent").css({ opacity: 1 });
})
以防万一有人使用 Bootstrap 4。似乎我们不能再使用.modal-backdrop.in
,但现在必须使用.modal-backdrop.show
。 保留淡入淡出效果。
.modal-backdrop.show {
opacity: 0.7;
}
使用!important
覆盖的问题是您将失去淡入效果。
所以实际绝招改变模式,背景透明度没有打破淡入效果,而无需使用无耻!important
是使用这样的:
.modal-backdrop{
opacity:0; transition:opacity .2s;
}
.modal-backdrop.in{
opacity:.7;
}
@sass
.modal-backdrop{
opacity:0; transition:opacity .2s;
&.in{opacity:.7;}
}
简单干净。
如果您有一个高度超出浏览器高度的背景页面,仅将高度设置为 100% 将不是解决方案。
添加到 Bhargavi 的答案中,这是当您在后台具有可滚动页面时的解决方案。
.modal-backdrop.in
{
opacity:0.5 !important;
position:fixed;// This makes it cover the entire scrollable page, not just browser height
height:100%;
}
经过一天的努力,我发现将 height :100% 设置为 .modal-backdrop.in 类有效。 height : 100% 使不透明度显示整个页面。
如果您使用较少的版本来编译 Bootstrap,请修改变量中的 @modal-backdrop-opacity 覆盖文件 $modal-backdrop-opacity for scss。
使用此代码
$("#your_modal_id").on("shown.bs.modal", function(){ $('.modal-backdrop.in').css('opacity', '0.9'); });
添加 !important 到 .modal-backdrop 会破坏引导模式的过渡
我通过在bootstrap.min.css 中直接编辑实现了改变模态叠加背景。 那些在本地使用 bootstrap CSS(不使用 CDN)的人可以更改.modal-backdrop类的背景颜色值。
如果您想更改 bootstrap 4 modal 覆盖不透明度,请找到此类.modal-backdrop.show并将不透明度更改为您需要的值。
如果想改变叠加过渡时间添加过渡到.modal-backdrop.fade类
如果要更改.modal.fade .modal-dialog类中的模态对象更改过渡值的过渡时间
什么对我有用,我清除了 .modal.backdrop.in 中的不透明度
.modal-backdrop.in{
filter:alpha(opacity=50);
opacity:.5
}
将其更改为
.modal-backdrop.in{
}
您可以通过rgb
函数的最后一个参数设置不透明度。
示例中的不透明度为0.5
.modal-backdrop {
background-color: rgb(0, 0, 0, 0.5);
}
您可以下载自定义编译的引导程序 3,只需从以下位置自定义 @modal-backdrop-opacity:
https://getbootstrap.com/docs/3.4/customize/
自定义引导程序 4 需要从源代码编译,覆盖 $modal-backdrop-bg,如下所述:
https://getbootstrap.com/docs/4.4/getting-started/theming/
在Bootstrap 4 自定义构建生成器/下载的答案中,有一个用于从源代码编译 Bootstrap 4 的 NodeJS 工作流程,以及一些非官方的 Bootstrap 4 定制器。
它应该与:
.modal:before{
opacity:0.001 !important;
}
使用 REACT Bootstrap 5 和打字稿。 尝试了以上许多方法,但没有奏效。
终于得到它的工作
.fade.modal-backdrop.show{
opacity: 0.8;
}
如果您想为一个特定的模式更改它,请向组件添加一个新的背景类名称样式
在 jsx 中:
<Modal show={this.show} backdropClassName="newBackdrop" ...>
在 CSS 中:
.fade.modal-backdrop.newBackdrop.show{
opacity: 0.8;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.