我正在使用其他人的代码,其中整个网站构建在一个非常恼人的表格结构上,每个<td>
元素的宽度为100%...如果我有时间,我不会问这个在这里简单地重写整个darn的东西,但它是一个相当大的网站,需要几周时间才能重写,我需要jquery插件数据表来工作。但是,由于主样式定义中的条目#container td { width: 100%; padding: 0; }
,整个表格完全搞砸了: - (
那么......有没有办法让CSS在所有表上使用这些默认定义除了<table id="exception">
,它应该忽略这些设置,而是使用数据表附带的那些?
问题是优先级 - 例如,datatables的代码为table.dataTable td { padding: 3px 10px; }
,因为#container td
具有优先权而被忽略...
同样,尽管我想,我现在也不能搞乱原来的网站结构。我可以编辑某些项目的数据表CSS,但我还必须删除这一个表的width: 100%
内容,以便STILL允许数据表实现自己的定义......
我在这个网站上的一个页面上使用jQuery,所以也许我可以用它来清除这些定义,但那时也会清除datatables设置的定义......
想法(除了“不要使用表格”)?
答案 0 :(得分:5)
当然你可以通过略微调整它来做到这一点(除非我误读):
table:not(#exception) {
/* Target all tables except the one with ID exception. */
}
可能会有其他轻微的调整,但这取决于布局。
所有主流浏览器都支持:not
选择器,但IE旧版本(8及之前版本)不支持。
解决此问题的一种方法是使用Selectivizr库。
“Selectivizr是一个模拟CSS3伪类的JavaScript实用程序 和Internet Explorer 6-8中的属性选择器。简单地包括 你的页面中的脚本和selectivizr将完成剩下的工作。“
如你所说,你正在使用DataTables,你正在使用jQuery,因此使用Selectivizr只是意味着包含<script>
,然后:not
将在旧版本的IE中运行(6-8)
答案 1 :(得分:0)
也许你可以申请!重要的是表id =“exception”css规则。
答案 2 :(得分:0)
您是否尝试过!important
?
table.dataTable td { width: auto !important; }
另一种方法是制作更具体的选择器:
#container table.dataTable td { width: auto; }
哪个应该比#container td