【发布时间】:2012-11-04 06:38:24
【问题描述】:
这是我试图解决的一个难题。我正在客户页面内开发滚动界面。基本上,我无法更改文档类型、周围元素以及已经在客户端页面中的样式表或脚本,我必须让我的小代码块“适合”其中。这对于 Web 开发人员来说很常见。 现在棘手的部分是我的块中的一些 img 元素实际上被继承的客户端样式表中的 CSS 规则定位(当然,我不能删除或更改)。解释为什么在这种情况下我实际上不能自己使用更具体的 CSS 规则来弥补这一点太长了,但这是事实。所以我的问题是:除了创建另一个规则或删除规则之外,有没有办法防止 HTML 元素成为 CSS 规则的目标?困难在于像
这样的规则.containter1 .containter3 { ... }
将针对内部的一个元素:
<div class="container1">
<div class="containter2">
<div class="containter3">Element
...
页面内的元素不会为 CSS 规则制造“墙”,这些规则会“跳过”容器以到达目标元素。所以像
这样的规则img { ... }
将针对任何 img 标签。我知道弥补这一点的唯一方法是创建一个更具体的 CSS 规则,针对要保护的精确 img。但我不能在这里这样做。有没有办法在不创建 CSS 规则的情况下仅通过添加 HTML 来获得相同的结果?
/* 编辑澄清*/
我知道 CSS 规则、特异性、继承等。我的问题更务实。考虑这个例子来澄清问题:假设您有一个您无法触摸的客户样式表,它定义了以下一般规则:
img { display:none; }
问题是你不能设置相应的通用规则来做相反的事情,比如:
img { display:not-none; }
因为没有与没有相反的东西。 "none" 的反义词可以是"inline"、"block"、"inline-block" 等等。
所以基本上,这意味着第一个通用规则强制您为页面中的每个img 显式定义display 属性。这很糟糕。所以我试图找到一个技巧来解决这样的情况(我的实际问题比这更糟糕,相信我,但这个例子更清晰,更容易解释)。
【问题讨论】:
-
您可以使用通过 html 写入文档的内联样式。或者您可以编写一个小脚本来更改文档加载时的 css 值。
-
你是说你不能添加任何CSS?或者您只是不能添加自己/编辑已经可用的 CSS 文件?
-
html 中没有通用的“不要被 X 类型的规则作为目标”之类的东西。您能否编辑您的问题并向我们展示您试图避免匹配的特定选择器?
-
如果您要在页面上插入代码,我不明白您为什么不能编写更具体的 CSS 来弥补。我知道你说解释太长了,但是……你可以吗?
-
除非您可以在客户页面上给您的空间中插入 iframe,否则您将不得不重置所有受影响的元素。
标签: html css inheritance css-selectors css-specificity