Html 通用CSS类错了吗?

Html 通用CSS类错了吗?,html,css,Html,Css,假设我有这样的清洁剂 .cleaner:after { content: '.'; display: block; clear: both; visibility: hidden; height: 0; } 因此,我可以将classcleaner添加到我想要清除浮动的所有内容中。这是一个比添加 <div style="clear:both;"></div> 相反,因为它并没有真正将设计与标记分

假设我有这样的清洁剂

.cleaner:after {
    content: '.';
    display: block;
    clear: both;
    visibility: hidden;
    height: 0;                
}
因此,我可以将classcleaner添加到我想要清除浮动的所有内容中。这是一个比添加

<div style="clear:both;"></div>

相反,因为它并没有真正将设计与标记分开

但是,虽然这种方法可以减少一些代码重复,但它也打破了分离设计的想法,因为我必须直接更改html

有这样的类并在需要的地方添加它们可以吗?或者我应该把
:after{…
明确地添加到我不想清除浮动的所有内容中(比如#header:after…,#menu:after{…`),这会导致代码重复,但也会导致更为独立的设计,我不必直接接触HTML

可能通用类对javascript很有用,在javascript中更容易更改样式,但是代码副本值得纯HTML/CSS中的分离设计吗

有这样的类并在需要的地方添加它们可以吗


是的。我在许多不同的设计中使用了很长时间,没有发现任何问题;-)

在这种情况下,我尝试做的是找出我缺少的一些底层抽象。这些元素在结构上有什么共同点吗?你能想出一个类名,将所有元素联系在一起并你觉得CSS不存在吗

如果没有,不要为欺骗感到难过。完美是好的敌人。

是的

class属性用于指示共享同一类的元素属于一个组。然后,您可以使用CSS或Javascript对这些组执行操作。一个元素可能是多个组的一部分,因此可以有多个类

在您的示例中,div属于组“elements after which is want clear floats”,因此该组中的每个元素都应该具有类“cleaner”,以向CSS指示这一点


阅读这篇文章,它讨论了一种构造CSS和类的好方法

问题是,从避免重复的角度来看,CSS的设计很糟糕。如果我们能够定义规则和值组并将其应用于某些选择器,那将是非常棒的。这样,您就可以避免重复,而无需添加HTML中的表示标记。不幸的是,CSS使这很难正确实现

您的方法相当合理,但有一个主要缺点:如果同一个HTML用于多个样式表,并且其中一些样式表需要在不同的位置清除,则此方法可能存在问题。如果您的HTML代码已绑定到文档的表示,则此缺点将被消除这不太适用


编辑:忘了提一下,如果你的CSS是以编程方式生成的,你可以避免重复你自己。然后它可以像CSS要求的那样冗长和复杂,同时概念上简单且易于维护。缺点是下载量会增加。这可以通过压缩来缓解。

确实没有好的方法来编辑ear布局在一个完全独立于内容的解决方案中。这是因为CSS是一种样式语言,并且在处理布局时也被重载(就像HTML表格“在当时”一样)。实际上还没有可用的纯布局语言,因此我们必须利用现有的


我喜欢你的方法,因为它将额外的标记元素保持在最低限度,这更便于移植。但是我不确定IE6是否支持:after伪元素,所以请小心处理。

我很困惑。你是说是的,没问题/否,没有错吗?顺便说一句,清除浮动现在通常使用overflow属性来完成。下面的人我不认为所有的浏览器都支持:after。只是请不要仅仅为了清除而添加元素