关闭模态 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">&times;</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/