ddouble / bsie

Bootstrap IE6 Compatible Library
http://ddouble.github.com/bsie/
686 stars 189 forks source link

modal 组件在 IE6 下显示时似乎也被透明化了 #4

Closed hightman closed 11 years ago

hightman commented 11 years ago

不好意思,又来报BUG了,显示 modal 时在IE6下似乎也被应用上了一层半透明效果,导致显示似乎很暗。以下是试验代码:

<!-- Button to trigger modal -->
<a href="#myModal" role="button" class="btn" data-toggle="modal">Launch demo modal</a>

<!-- Modal -->
<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
    <h3 id="myModalLabel">Modal header</h3>
  </div>
  <div class="modal-body">
    <p>One fine body…</p>
  </div>
  <div class="modal-footer">
    <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
    <button class="btn btn-primary">Save changes</button>
  </div>
</div>
hightman commented 11 years ago

跟踪了一下发现把 class="modal hide fade" 改为 class="modal fade in" 时就会在IE6下半透明。 原因就出在这个 "in" 身上,但是奇了怪的是从头找到尾也没在 in 里看到有半点修改 opacity 的css,甚至强制写上 1.0 + filter: alpha(opacity=100)也无效。。。

hightman commented 11 years ago

搞定了,原因就是css选择器的不兼容写法导致的。在 ie.css 中(预计ie7也类似问题未测试)加入以下几行即可:

.modal.fade.in {
  _filter:alpha(opacity=100);
}
.modal-backdrop {
  _filter: alpha(opacity=80);
}
ddouble commented 11 years ago

To @hightman:Good work!已按你的解决方案将此问题修复,见 master 分支。

IE6 不支持形如 .classname1.classname2 的选择器,它会将其解释为 .classname2 ,这样一来 .modal.fade.in 会改变之前所有 .in 的样式,tooltip 中也用到了 .in ,但考虑到 tooltip 即使不透明也可用,所以不再继续深究此问题,不得已之处就在 IE6 下降级显示了。