问题
当 jQueryUI 从 HTML 创建选项卡时,它会添加 jQueryUI CSS 类。从 jQueryUI 示例中:
<div id="tabs">
<ul>
<li><a href="#tabs-1">Nunc tincidunt</a></li>
<li><a href="#tabs-2">Proin dolor</a></li>
<li><a href="#tabs-3">Aenean lacinia</a></li>
</ul>
<div id="tabs-1"></div>
<div id="tabs-2"></div>
<div id="tabs-3"></div>
</div>
变成
<div id="tabs" class="ui-tabs ui-widget ui-widget-content ui-corner-all">
<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
<li class="ui-state-default ui-corner-top ui-tabs-selected ui-state-active"><a href="#tabs-1">Nunc tincidunt</a></li>
<li class="ui-state-default ui-corner-top"><a href="#tabs-2">Proin dolor</a></li>
<li class="ui-state-default ui-corner-top"><a href="#tabs-3">Aenean lacinia</a></li>
</ul>
<div id="tabs-1" class="ui-tabs-panel ui-widget-content ui-corner-bottom"></div>
<div id="tabs-2" class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"></div>
<div id="tabs-3" class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"></div>
</div>
问题正在发生,因为SlickGrid内容现在作为具有 class 的元素的子元素退出ui-widget-content
。实际上,网格标题有 2 个祖先具有该类 - 在上面的代码中,请参见<div id="tabs">
并且<div id="tabs-1">
在创建选项卡时都应用了该类。
应该适用于获取正确搜索图标的 jQueryUI CSS 规则是:
.ui-icon {
width: 16px;
height: 16px;
background-image: url(images/ui-icons_222222_256x240.png);
}
.ui-icon-search {
background-position: -160px -112px;
}
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
border: 1px solid #d3d3d3;
background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;
font-weight: normal;
color: #555555;
}
图标的标记是:
<span style="float:right" class="ui-icon ui-icon-search ui-state-default ui-corner-all" title="Toggle search panel" onclick="toggleFilterRow()"></span>
因此,应用了 CSS 规则.ui-icon
和第三条规则.ui-icon-search
的第一个匹配项.ui-state-default
。
但是,当相同的标记作为具有类的元素的后代存在时,.ui-widget-content
上述第三条规则的第二部分 ( .ui-widget-content .ui-state-default
) 也匹配更具体的。请参阅http://www.stuffandnonsense.co.uk/archives/images/specificitywars-05v2.jpg以了解有关CSS 特异性的星球大战主题解释。本质上background
,包含的第三条规则的属性background-position:50% 50%
比单个选择器.ui-icon-search
规则更具体,因此覆盖了正确的background-position:-160px -112px
.
解决方案
需要使规则与可以通过以下任一方式完成的.ui-icon-search
规则相同或更具体:.ui-widget-content .ui-state-default
- 添加
!important
到规则
- 向规则添加更多选择器
例如
.ui-icon-search {
background-position: -160px -112px !important;
}
或者
.ui-icon-search, .ui-widget-content .ui-icon-search {
background-position: -160px -112px;
}
我想不出不涉及更改 jQueryUI CSS(或.ui-icon-search
使用上述两种解决方案之一在您自己的 CSS 中复制规则)的方法。我真的很想看看自己是否还有其他方法!