如何只使用CSS而不使用JavaScript动态地向html元素添加CSS类

如何只使用CSS而不使用JavaScript动态地向html元素添加CSS类,html,css,sass,Html,Css,Sass,我在一个旧的html项目上工作,在那里我对DOM几乎没有控制权。我不能像这样手动添加css类: 我部门的内容 我必须以以下方式指定选择器: body > div:first-of-type > table:nth-of-type(2) > tr:last-of-type > td .... 它变得很长而且不可读,特别是如果我必须指定位于不同嵌套级别的html元素 是否可以将css类动态添加到上述指定元素中,以便将其用于添加的类,而不是显式选择器 在伪代码中,我会想象如下

我在一个旧的html项目上工作,在那里我对DOM几乎没有控制权。我不能像这样手动添加css类:

我部门的内容

我必须以以下方式指定选择器:

body > div:first-of-type > table:nth-of-type(2) > tr:last-of-type > td ....
它变得很长而且不可读,特别是如果我必须指定位于不同嵌套级别的html元素

是否可以将css类动态添加到上述指定元素中,以便将其用于添加的类,而不是显式选择器

在伪代码中,我会想象如下:

 body > div:first-of-type > table:nth-of-type(2) 
 > tr:last-of-type > td:add-class('simplified-selector')

要使用JavaScriptoujQuery添加动态类,您可以像这样使用javascript添加CSS,但这不可能是您直接在CSS中想要的

<div class="myelement">elem</div>
<script>
let myElem = document.querySelector(".myelement");
document.getElementById(myElem).style.color = "red";
</script>

也许可以使用SASS查看嵌套或函数..:

通过css向html添加动态类确实是不可能的。但是就像你的想法一样,你可能会自大或倒退:

大多数情况下,您不需要太多的类来编写清晰的样式。在大多数情况下,只有包装器元素需要一个类来构建可读的css结构。在某些情况下,一节课就足够了

因此,在您的示例中,不要给单个元素一个类:

body > div:first-of-type > table:nth-of-type(2)  > tr:last-of-type > td:add-class('simplified-selector')
只要写下:

body > div:first-of-type > table:nth-of-type(2): add-class('table2')
比css目录中的其余部分做得更好:

.table2 tr:last-child {
   
   ... your css ...

}
这将大大缩短html的工作时间,并使css结构保持可读性。我相信在使用机械的好时光里,-15岁还是20岁?编写css的技术的目标是使用尽可能少的类-


今天的“类溢出”和正在进行的“div爆炸”带来了伟大的框架,如Bootstrap。。。今天也有人说,这是糟糕的代码,因为样式设计与html的预期语义无关,只应简化为其中的信息-

谢谢,我知道sass嵌套,但发现它不那么方便。如果我们可以用css::before::after添加内容,那么我想也可能存在添加类的方法,尽管到目前为止我同意你的观点,这是不可能的。我已经写过我不想使用JS。jQuery是JS。如果您不能手动添加类或使用jQuery,您就没有其他解决方案了抱歉,祝您好运!你不能通过CSS动态添加类。我也不知道任何通过CSS添加类的方法。尽管如此,我写这个问题是为了看看是否会有人提出一些黑客的建议。很抱歉再次评论,只是为了迅速澄清:这不是一个找到黑客或甚至意见的问题。我担心在CSS中根本无法实现您的要求。祝你好运。使用CSS在HTML元素中添加类是不可能的。您可以使用jquery、javascript、PHP添加类。谢谢!您猜对了,我从事这样一个项目,其中指定的类很少。我甚至都没有上table2课。事实上,这个问题恰恰包含了这一点——如何添加这个.table2类。现在我已经用JS完成了,但是如果出现了一些css解决方案,我更希望我们使用它。方法:add-classsimplified_selector实际上不存在。我刚刚介绍它是为了更清楚地说明我在寻找什么样的方法。