什么是好的';标记';要定义的css样式?

什么是好的';标记';要定义的css样式?,css,css-selectors,Css,Css Selectors,我发现定义“标记”css样式非常有用,例如'hidden'或'selected',这样我就可以轻松地将某些内容标记为隐藏或选中,尤其是在使用基于标记的技术(如ASP.NET MVC或PHP)时 .hidden { display:none; } .newsItemList li.selected { background-color: yellow; } 我并不特别喜欢这里,我想知道像这样的东西还有哪些是有用的或常见的,或者是否有任何陷阱需要注意 我应该看看其他类似的css框

我发现定义“标记”css样式非常有用,例如
'hidden'
'selected'
,这样我就可以轻松地将某些内容标记为隐藏或选中,尤其是在使用基于标记的技术(如ASP.NET MVC或PHP)时

.hidden
{
    display:none;
}

.newsItemList li.selected
{
    background-color: yellow;
}
我并不特别喜欢这里,我想知道像这样的东西还有哪些是有用的或常见的,或者是否有任何陷阱需要注意


我应该看看其他类似的css框架吗?另外,这种类型的css类有一个名称,我可以通过它进行搜索。

让我给你一个来自一个非常新手的web开发人员的答案,他最近考虑使用css类作为“标记”。请不要把这当作一个明确的答案,因为我可能完全错了,但请把它看作另一个观点


我还打算使用一些标记类。我创建了一个名为.center的文件,将DIV标记中的元素居中放置。然而,我被一个想法打动了,那就是我对CSS的看法完全错误。我推断CSS应该定义元素的显示方式,而无需更改HTML页面。通过使用标记类,比如.center,如果我想让DIV标记在下个月正确对齐,我就必须同时更改CSS和HTML。因此,我创建了一个.latesHeader类(DIV用于保存“最新信息”,如新闻项目),并在该类中设置文本对齐中心。现在,当我想更改文本的对齐方式时,我只需更改该DIV的CSS,而不必触摸HTML。

关于您关于CSS框架的问题

就我个人而言,我总是发现,对于任何CSS问题,最复杂但也是最准确的答案

经过多年的编程和使用CSS/HTML/PHP,我同意上面的评论

使用“.center”或“.rights”的线条为要居中或右对齐的对象定义一个标记是没有害处的,但是如上所述,请记住,如果要更改整个文本,您的工作量将增加,因为您必须同时编辑CSS和HTML

定义整个章节的格式很可能更符合逻辑,因为如果您想在接下来的几个月内更改章节,您只需编辑一个CSS声明的格式,而不是编辑每一篇文章


然而,CSS被设计为最终的样式语言,它可以让管理员使网站看起来完全符合他们的要求。请记住,过多的CSS会增加服务器的负载,将增加客户看到您的页面之前的时间,并符合“网页设计风水”的要求,有可能过度设计样式。

您应该根据需要增加此列表,而不是全面征求通用类列表——您最终只会得到膨胀。如果你想避免重蹈覆辙,那就看看一些CSS框架(或)。在某些方面,像.center{text align:center}这样的泛型类确实有一定程度的冗余,但通常是需要的。例如,以下模式非常常见,但应避免:

element.onclick(function(e){ this.style.backgroundColor = 'yellow' }
这很糟糕,因为您确实应该使用:

element.onclick(function(e){ this.className = 'highlight' }
后者允许您仅通过触摸CSS文件来修改样式。但是,如果CSS类名只有一个样式元素,那么您可能应该避免使用它,因为将它隐藏(在您的示例中是隐藏的)并直接调用它没有任何意义:

element.onclick(function(e){ this.display = 'hidden}

我同意其他海报上的说法,他们说只定义你需要什么,而不是用一堆不必要的类来膨胀你的代码

尽管如此,我发现自己在不断地使用以下内容:

  • .accessibility-直观地隐藏元素,但为屏幕阅读器和打印样式表保留它们的完整性
  • .清除-绑定到
  • .first child和.last child-轻松为容器中的第一个/最后一个项目指定样式。这已经拯救了很多次生命,我更喜欢它,而不是支持较差的伪选择器
  • .替换-绑定到以替换透明图像
最后,我使用

<script type="text/javascript">if(h=document.documentElement)h.className+=" js"</script>
if(h=document.documentElement)h.className+=“js”

这将允许我定义.js(选择器的其余部分)样式,只针对启用JavaScript的浏览器。

我经常发现自己在所有样式表中保留两个类:“center”(它只应用
文本对齐:center;
,以及一个应用
清除:两者;
)的浮点清除类

我已经考虑过在我所有的样式中添加一个“reset”语句,但还没有必要。reset语句类似于以下内容:

*
{
  margin: 0;
  padding: 0;
}

我经常重复使用它们,以便将它们包含在几乎所有内容中。它们足够小,因此我根本不觉得它们会膨胀代码。

这或多或少应该是这样看的-使用HTML标记文档的语义,使用类来指示附加语义,并使用跨这些应用的CSS来引入实际的v这个意思的视觉表示。@hardcode这正是我问题背后的问题。我正试图找出此类标记类的适当范围。我认为“隐藏”类和“选定”类中有很多价值,因为在生成HTML时,我不想在显示中显示:无。@hardcode,当然了.center实际上更像是说“.red”,而不是说“.hidden”。如果它是隐藏的,那么它就是隐藏的,并且总是希望被隐藏(除了打印css或ipod css)。但是如果它是红色,那么下次你可能希望它是栗色的。@Simon:在这种情况下,你当然可以说“selected”是一个语义上有意义的值;因此,可能是“隐藏”的,所以它们可能是可以接受的。没有任何硬性的