Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 仅将样式表应用于特定元素特性_Html_Css - Fatal编程技术网

Html 仅将样式表应用于特定元素特性

Html 仅将样式表应用于特定元素特性,html,css,Html,Css,在做了一点谷歌搜索后,我无法找到答案,所以我的问题是。有没有一种方法可以指定一个特定的元素特征,比如一个id,在这个id中应该应用整个样式表 例如,如果我有一块像这样的html <html> <head> <link rel="stylesheet" type="text/css" href="./style.css"> </head> <body> <div id="my_

在做了一点谷歌搜索后,我无法找到答案,所以我的问题是。有没有一种方法可以指定一个特定的元素特征,比如一个id,在这个id中应该应用整个样式表

例如,如果我有一块像这样的html

<html>
    <head>
        <link rel="stylesheet" type="text/css" href="./style.css">
    </head>
    <body>
        <div id="my_id">
            <!-- A bunch of elements here -->
        </div>
    </body>
</html>

是否有一种方法可以指定
/style.css
中包含的规则只应用于与
\my\u id
中的元素匹配,类似于在样式表中的每个规则之前指定
\my\u id

我理解在每个规则实现这一点之前指定
#my_id
,但我想知道是否有一种方法可以做到这一点,而无需在样式表中添加膨胀


我正在编写一个greasemonkey(userscript)脚本,它在特定页面上创建一个“container”元素,并在其中创建和放置所需的所有其他GUI元素。我不希望我的CSS干扰页面上的CSS(例如意外地过度编写页面上已经存在的规则),但如果可以避免的话,我不想在样式表中添加不必要的膨胀,因为所有规则都只应用于“包装器”元素和/或其子元素。

您可以使用>选择器将样式应用于#my_id内的元素。例如:

#my_id {
  /* some style for #my_id */
}

#my_id > p {
  /* this will style all p tags within #my_id */
}

据我所知,这是不可能的。正如您所说的,您可以在规则前面加上ID,但这不是您想要做的


但是,我应该说,您不应该为单个ID指定样式表,因为ID在页面上下文中应该是唯一的。此外,我发现将同一ID应用于在不同页面上用于不同目的的元素是一种不好的做法,因为这会使编写普通JavaScript页面变得非常混乱。

这也是人们开始使用的原因之一。在SASS中,这与将所有css类嵌套在id类中一样简单,如下所示:

#my_id {
  // all styles without editing
  // Now all these styles are applied only if they fall
  // under the element with id "my_id".
}
EDIT:另一个(丑陋的)选项是使用
iframe
而不是div,并在其中加载子元素和样式表,以便将其沙盒化,如下所示

<html>
    <head></head>
    <body>
        <iframe id="my_id">
            <html>
                <head>
                    <link rel="stylesheet" type="text/css" href="./style.css" />
                </head>
                <body>
                    <!-- A bunch of elements here -->
                </body>
            </html>
        </iframe>
    </body>
</html>


注意:别忘了添加doctype。为了简单起见,我没有在示例中添加它。

您的意思是,将样式应用于#my_id中的元素吗?我是这样做的,但不是特定的规则。我想知道是否有一种方法可以让我的样式表只将样式应用于我的IDA中的元素。如问题中所述,我知道我可以将选择器挂起到规则的开头。我想问的是,是否有一种方法可以做到这一点而不必担心。你的问题不是很清楚。在任何情况下,如果您试图仅在#my#u id内设置项目样式,那么您需要预先设置#my#u id,没有其他方法。我之所以问这个问题,是因为这是第三方页面上的一个油脂猴脚本(一个存储并在客户端执行的脚本)。样式不会应用于相同id的多个元素,而是应用于存储在具有特定id的元素中的元素。我明白了。再一次,很遗憾,我不相信这是可能的。如果你正确使用ID,这应该是可能的。您可以在唯一元素上设置一个ID,并以其中的所有内容为目标。类适用于多个元素。@KyleSevenoaks-我认为他无法控制ID,因为它们在第三方页面上,这就是问题所在。啊哈,好吧。那么,我猜只有预挂起的#id是唯一的方式。除了SASS/SCSS在浏览器使用之前被编译成CSS之外。在这一点上,我的问题再次变得有效…更新的答案与替代。