2012-03-19 128 views
5

我有一些旧的内容包含表格,其宽度用HTML宽度属性指定,如下所示:<table width="250">。该属性被CSS选择器table的规则覆盖。我可以停止这种覆盖,以便表格具有在HTML attributute中指定的宽度(这不总是250像素,这只是一个示例)?我可以挑选出不应该用选择器#column1 table覆盖宽度的表格。停止CSS覆盖HTML宽度属性

+1

为什么你不能简单地删除重写属性的css'width'规则? – fcalderan 2012-03-19 13:18:56

+0

因为这是在旧的导入内容的_lot_上。我可能会编写一个查找替换脚本,它为所有与#column1表匹配的表执行此操作,但是找到更简单的方法会很好。 – tog22 2012-03-19 13:25:06

+0

我想最好删除所有内联的宽度和高度属性,否则你将不得不添加其他内联样式,正如Christopher Kenney所建议的 – fcalderan 2012-03-19 13:30:13

回答

4

试试这个:

#column1 table { 
    width: auto; 
} 

只要你知道,CSS总是会覆盖旧的HTML内嵌属性。这在使用wysiwyg编辑器时通常是个问题。

我解决了由wysiwyg编辑器在cms中使用javascript和jquery生成的旧html问题。我遍历表(S)和阅读的宽度和高度属性,然后我转换为内联CSS:

var $table = $('#column1 table'); 
$table.css({ 
    "width" : $table.attr('width'), 
    "height" : $table.attr('height') 
}); 
+1

这不行,我试过了。它计算表格,好像没有应用CSS或HTML宽度属性。 – tog22 2012-03-19 13:25:23

+0

只需使用width:250px而不是auto。 – 2012-03-19 13:27:45

+0

@ tog22我添加了曾经使用的javascript(和jquery)解决方案。 – 2012-03-19 13:38:35

5

你不能用HTML覆盖的CSS,但你可以添加属性style 例如:

style = " width: 250px;" 

编辑:您可以通过将外部覆盖它的CSS规则的结束,这将抵消有关任何其他的CSS属性,你改变什么重要的!

如:

#column1 table { 
    width: 250px !important; 
} 
+0

谢谢,但看到我对原始问题的澄清评论。 – tog22 2012-03-19 13:26:29

+0

用户澄清后,这似乎是正确的答案:+1 – fcalderan 2012-03-19 13:34:37

+0

@ togg22:是的,!重要的可以帮助。但是,我不会将它用作style =“...”,而是用在样式表中。否则,你可以做一个查找替换,无论如何推荐! – Chris 2012-03-19 13:48:56

0

请问您为什么使用这种内嵌html属性?

除非你有很强的理由,否则我建议你将任何样式相关的东西移到CSS。如果CSS有自己的文件,并且不包含内联,那就好多了。

总是将内容与演示文稿分开是一种更好的做法。

+0

我知道,请参阅我对原始问题的澄清评论。 – tog22 2012-03-19 13:26:20

0

对我来说,一个可能的但不雅的回答是将CSS选择器table的规则替换为:not(#column1) table。但是,这只适用于一些现代浏览器,而不是IE。

0

如上所述,我建议你使用一个样式表!您只需将其实施到您的styles.css中:

table { 
    width:250px; 
} 

如果还不够,可以添加!重要的是,这样的:

table { 
    width:250px !important; 
} 

而在你的HTML的头部添加的样式表是这样的:

<link rel="stylesheet" type="text/css" href="css/stlyes.css"> 

否则,你将需要添加的样式=:直接“宽250像素”,以每个表。如果你想再次改变宽度,例如260px,你将不得不再次改变它们。

但是,如果您有权访问您的HTML代码,则建议您执行“查找替换”,无论如何要有干净的代码。几乎所有甚至非常简单的TextEdit程序都应该有一个Find-Replace选项...

0

我知道这个问题在2年前被问到,但它可能对其他有类似问题的人有帮助。您可以使用CSS属性选择:

table:not([width]) { 
    width: 250px; 
} 

注意,它不会IE 9下工作,据我所知。

+0

我不认为这回答我的问题吗? – tog22 2014-11-21 12:07:55