[英]The scroll bar disappears when a jquery confirm dialogue is shown
当显示jquery确认对话框时,页面上的滚动条消失,这将导致页面跳到右侧。 对话的JavaScript代码如下:
<script src="vendor/jquery-confirm.min.js"></script>
<link href="vendor/jquery-confirm.min.css" rel="stylesheet" type="text/css">
<script>
function confirmDialog(content, func, parameter) {
$.confirm({
title: "",
content: content,
confirmButton: "Yes",
cancelButton: "No",
theme: "black",
confirm: function() { func(parameter); },
cancel: function() { }
});
}
</script>
我正在使用CSS:
body {
overflow-y: scroll;
}
如何防止这种情况发生?
更新资料
我尝试添加“重要”,但是在Firefox中检查页面时,我看到有以下CSS:
body.jconfirm-noscroll {
overflow: hidden !important;
}
并且有一行通过:
overflow-y: scroll !important;
CSS是数学。 每个选择器都归结为一个特异性数。 如果数字相等,则最后一个数字适用。 如果它们不相等,则以最高者为准,与顺序无关。
您可以尝试使用特异性计算器之类的工具将选择器链接到特定数字,但是实际上,您不需要这样做。
总的来说是:
!important > style="inline rules" > #id > .class > attribute = element
您要覆盖的选择器是:
body.jconfirm-noscroll {
some rule !important;
}
这意味着!important + 1 x class + 1 x element
。 只要您的选择器在页面中位于较低位置(稍后由浏览器解析),就可以使用相同的选择器覆盖它。
或者,请确保可以使用
html body.jconfirm-noscroll {
some rule !important;
}
或者,当然,如果您知道身上有其他任何类,请将其添加到选择器中。 或在<body>
上放置#id
并使用它。 它将击败.class
。 但是您不能用body !important
击败body.class !important
body !important
。 可以肯定的。
重要说明:在某些情况下,您绝对可以确定选择器是否更强大,但仍然拒绝应用。 不要失望。 这发生在我们所有人身上。 根据经验,在以下任何一种情况下,它都会下降:
style
属性中)实际上比#id
更强。 这就是通常通过javascript
应用样式的原因。 它们不会覆盖!important
,尽管 <a>
标签和类似标签的情况 覆盖CSS可能很棘手...
你可以试试
body, body.jconfirm-noscroll {
overflow: auto!important;
}
但这可能仍然行不通...
如果没有,请向您的身体添加一个类,例如<body class"please-scroll">
并尝试
body.please-scroll, body.please-scroll.jconfirm-noscroll {
overflow: auto!important;
}
我不确定是否可以使用,请尝试并让我知道,我很感兴趣!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.