关闭模态 window 后,模态焦点高亮保留在元素上
Modal focus highlight remains on element after closing modal window
我有一个模式设置,使用 Bootstrap,工作正常。模态调出一些文本和图像。当我将鼠标悬停在模态元素 button
上时,会弹出一个漂亮的蓝色突出显示,我想保留它。问题是,当我关闭模式 window 时,蓝色高亮显示在 button
上,我想摆脱它。
我认为这个CSS...
.modal-open .modal,
.btn:focus{
outline: none !important;
}
...会删除突出显示,但在我关闭模式后我仍然留下蓝色突出显示。以下是模态的代码...
<button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal"><img src='http://lorempixel.com/g/400/200'></button>
<!-- Modal -->
<div id="myModal" class="modal fade" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Some Title</h4>
</div>
<div class="modal-body">
<p>Some text about something, Some text about something, Some text about something.</p>
<a href='http://codepen.io'><img src='http://lorempixel.com/g/400/200'></a>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
在此先感谢您的帮助。
试试这个
$('#myModal').on('shown.bs.modal', function(e){
$('#myModaltrigger').one('focus', function(e){$(this).blur();});
});
这是设计使然,对于可访问性很重要。关闭时,模式应该 return 专注于启动元素。如果按钮无法重新获得焦点,则会破坏 keyboard/tabbed 可访问性。请参考这个github issue.
如果您想去除发光或蓝色 "highlight",我建议在模态 show/hide 上切换额外的 CSS class。例如:
<button id="openButton" type="button" class="btn btn-info btn-lg btn-no-highlight" data-toggle="modal" data-target="#myModal"><img src='http://lorempixel.com/g/400/200'></button>
$(function(){
$('#myModal').on('hidden.bs.modal', function (e) {
$('#openButton').toggleClass('btn-no-highlight');
});
$('#myModal').on('shown.bs.modal', function (e) {
$('#openButton').toggleClass('btn-no-highlight');
});
});
.btn.btn-no-highlight {
background-color: #5bc0de;
border-color: #46b8da;
outline: none !important;
}
我创建了一个 fiddle 来证明这一点:https://jsfiddle.net/e61r4ba3/
我有一个模式设置,使用 Bootstrap,工作正常。模态调出一些文本和图像。当我将鼠标悬停在模态元素 button
上时,会弹出一个漂亮的蓝色突出显示,我想保留它。问题是,当我关闭模式 window 时,蓝色高亮显示在 button
上,我想摆脱它。
我认为这个CSS...
.modal-open .modal,
.btn:focus{
outline: none !important;
}
...会删除突出显示,但在我关闭模式后我仍然留下蓝色突出显示。以下是模态的代码...
<button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal"><img src='http://lorempixel.com/g/400/200'></button>
<!-- Modal -->
<div id="myModal" class="modal fade" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Some Title</h4>
</div>
<div class="modal-body">
<p>Some text about something, Some text about something, Some text about something.</p>
<a href='http://codepen.io'><img src='http://lorempixel.com/g/400/200'></a>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
在此先感谢您的帮助。
试试这个
$('#myModal').on('shown.bs.modal', function(e){
$('#myModaltrigger').one('focus', function(e){$(this).blur();});
});
这是设计使然,对于可访问性很重要。关闭时,模式应该 return 专注于启动元素。如果按钮无法重新获得焦点,则会破坏 keyboard/tabbed 可访问性。请参考这个github issue.
如果您想去除发光或蓝色 "highlight",我建议在模态 show/hide 上切换额外的 CSS class。例如:
<button id="openButton" type="button" class="btn btn-info btn-lg btn-no-highlight" data-toggle="modal" data-target="#myModal"><img src='http://lorempixel.com/g/400/200'></button>
$(function(){
$('#myModal').on('hidden.bs.modal', function (e) {
$('#openButton').toggleClass('btn-no-highlight');
});
$('#myModal').on('shown.bs.modal', function (e) {
$('#openButton').toggleClass('btn-no-highlight');
});
});
.btn.btn-no-highlight {
background-color: #5bc0de;
border-color: #46b8da;
outline: none !important;
}
我创建了一个 fiddle 来证明这一点:https://jsfiddle.net/e61r4ba3/