5

我正在尝试<body>在 CSS 中设置外部标签的背景图像:

<html>
 <body>
  ...
   #document
    <html>
     <body>
     </body>
    </html>
  ...
 </body>
</html>

但是,我什至无法选择其中一个<body>标签而不影响另一个标签。他们没有 ID,当我尝试通过子选择器进行选择时,#document事情变得复杂(我什至不知道它是什么)。如果我尝试类似的操作body html body {...},则其#document行为就像我无法通过的障碍,因此它不会选择内部主体标签。

关于如何选择身体标签之一的任何想法?

4

3 回答 3

14

给定的清单似乎是一个 DOM 检查器视图。在这种情况下,#document它不是指一个 id 为“document”的任意元素——它指的是托管在一个<iframe>(参见 参考资料Node.nodeName)中的文档。您可以在 Firefox 和 Chrome 的 DOM 检查器中看到这一点;事实上,您现在甚至可以通过将任一浏览器指向data:text/html,<iframe>、打开检查器并展开<iframe>节点来尝试它。IE 也显示嵌套树,但没有#document标记。

如果您看到背景图像从主文档渗入 iframe,则意味着 iframe 中的文档没有自己的背景。

选择器不能穿透多个/嵌套的文档树;它们被本地化到上下文文档。这意味着您不能在<iframe>包含<iframe>. 如果您需要将样式应用于 中的文档中的元素<iframe>,则需要将 CSS 直接应用到该内部文档中,并且编写选择器,就好像您只使用该文档一样。


如果给定的列表是实际的源标记而不是 DOM 检查器视图,并且#document实际上是 ID 为“document”的任意元素,那么您的内部<html><body>元素已被注销,作为 HTML DOM一次只能包含一个元素<html>和一个<body>元素;这些将是你的外在的,而不是内在的。在这种情况下,您可以尝试选择#document并应用背景,但不能保证它会正常工作。

于 2013-08-01T12:54:14.680 回答
0

您正在考虑的将需要在和<head></head>标签内有标签,包括. 如果您希望通过嵌入和更改来更改它,那么您将需要 jQuery,但 jQuery 并不能保证,因为首先,您需要知道将它放在哪里,其次,如果多个事物使用页面上相同的 ids/classes和.#document<iframe></iframe><link rel="stylesheet" type="text/css" href="Null.css">iframeiframe

于 2014-03-17T21:23:30.620 回答
-2

使用 jQuery

您可以使用 jQuery 的 .content() 函数来访问它。

$('yourIframe').contents().find('#yourItemYouWantToChange').css({
    background: 'red'
});
于 2013-08-01T13:11:14.623 回答