样式语言比CSS强制执行更多的纪律?(但不是LESS和SASS)

Pek*_*ica 26 css sass less

随着时间的推移,CSS样式表有一个变大和乱的习惯.

有很多规则,提示和思想流派有助于实现更清洁的CSS.(例如这里)然而,所有这些都需要持续的警觉性,活动和维护者的大量纪律,并在现实世界中取得成功.正如Nicole Sullivan所说的那样:

事实上,在大多数情况下,我们认为最佳实践的事情会导致我们试图避免的不良后果.我意识到(尽管它可能不受欢迎),我们不能通过更努力地努力使它运作良好.每次我们开始一个新项目时,我们都会想"这一次,我将保持代码清洁.这一次,该项目将成为CSS可以做些什么的光辉榜样."随着时间的推移,随着更多内容和功能被添加到网站中,代码变得意外重复和不可预测性.

是否有任何努力创建某种语言,严格的结构规则和无情的编译器,强制执行严格的规则,以防止样式表成为意大利面?编译的最终结果将是CSS.

我不知道这样的语言是什么样的,并且考虑到大量的可能性和组合,这是一个可解决的问题.

这个领域有没有研究?有什么要试试的吗?

一个非常有趣的相关工具是CSS Lint,但我要问的是甚至更远.

编辑: LESS和SASS绝对走向正确的方向,但它们不是我想要的.他们介绍了一些非常好的功能,并且对于CSS开发人员来说是天赐之物,但是我所询问的内容甚至更深入到了定义的强制结构中.

ale*_*emb 20

你可以很容易地用任何解释语言编写意大利面条代码,所以你真正想要的是一个CSS编译器.这就是Google GWT通过Java代码生成JavaScript所做的一切.

但是,CSS没有流控制,函数,变量等,这意味着在CSS周围使用更高级的语言是没有意义的.在它的根源,它只是具有级联逻辑的名称 - 值对.

如果你想统治你的CSS代码,你也需要统治你的DOM.如果要定义的ID列leftright那么你在语义上移动他们其他地方限制设计师.另一方面,如果你对事情很聪明,你可以做更多事情.

最后,级联部分是大多数新设计师最容易出错的部分.如果你密切关注DOM和级联逻辑,使用一些好的重置或基于网格的框架并合并LESS(Ruby)或LessPHP等工具,你最终会得到更加满意的CSS.我喜欢LESS,因为它为您提供准函数,变量和嵌套属性,这些有助于清理CSS.

  • +1这可能是它的长短 - 一个强制执行规则的解决方案必须控制(和结构)放入DOM以及CSS规则的内容.最后,你会得到像GWT这样的东西 - 许多人不喜欢它,因为它太受限制了.@Shauna我理解CSS不是一种编程语言,但它仍然有规则和结构,它描述的内容. (2认同)

Spu*_*ley 10

是否有任何努力来创建某种语言...编译的最终结果将是CSS.

我知道有两项努力要做到这一点:

两者都旨在提供CSS的改进版本,允许您使用更多结构编写.

此外,谷歌已经展示了Chrome的开发版本,它在类似的行中包含了许多CSS附加功能.这很有趣,因为它表明了CSS的未来发展方向,但在短期到中期内你需要使用Less或Sass,因为即使Chrome中的工作也是非常实验性的,并且不会在未来一段时间内发布(和即使它是,你还需要等待其他浏览器效仿.

[编辑]以下链接详细介绍了Google在Chrome中的实验性CSS功能:http://johanbrook.com/design/css/webkit-css-variables-mixins-nesting/

[2012年4月18日更新]自从我写这个答案以来,这个领域取得了一些进展.进展缓慢,但仍然取得进展.好消息是,CSS变量刚刚被W3C公布为初稿规范.有关规范的官方公告,请参见http://lists.w3.org/Archives/Public/www-style/2012Apr/0228.html.

这是好消息.当然,进入浏览器和最终用户群需要多长时间是任何人的猜测,但至少有进步的迹象.