【问题标题】:Idea: LESS CSS creating special selectors when processing/compiling想法:LESS CSS 在处理/编译时创建特殊选择器
【发布时间】:2014-06-17 19:03:36
【问题描述】:

我试图避免选择器的长链并使用一个基于类的选择器,该选择器是在将 LESS CSS 编译为纯 CSS 时自动创建的。有关详细信息,请参阅下面的示例。

http://css-tricks.com/efficiently-rendering-css/ 的启发,我想到了为每个元素创建独特的类(重复的类可能会有意地有益)以提高 CSS 渲染的效率。

HTML

<div class="main">
  <img src="something.jpg" />
  <a class="link" href="#">Click me</a>
</div>

更少的 CSS

div.main {
  img {border:1px solid #ccc;}
  a.link {color:blue;}
}

标准纯 CSS(从上面的 LESS 编译)

div.main img {border:1px solid #ccc;}
div.main a.link {color:blue;}

Desired 纯 CSS(从上面的 LESS 编译,父元素中的子元素的类的格式类似于
.parentElement1-parentClass1-childElement1-childClass1,如果类未定义,则使用 null

.div-main-img-null {border:1px solid #ccc;}
.div-main-a-link {color:blue;}

当然,元素的更具体/描述性的类名可以解决这个问题,但对于更大的应用程序并避免重复的类名,这种方法可能会更好,因为可读性由less处理并且生产css效率很高。 “body”元素被用作基础元素,其他所有元素在命名方面都与它相关。 html 中的类名仍然必须手动定义以符合此要求,但可以创建一个脚本来自动为所有元素创建类名。

我想知道LESS 是否可以考虑到这个标准的编译方法。你对这个想法有什么想法?如果这样的事情可行?

【问题讨论】:

  • 那么你想让这个神奇的工具不仅能生成类,还能在你的 html 中更新它们吗?
  • 哈哈!类名可以手动输入,但绝对可以通过“预处理”html 的脚本来自动化。我更关心如何通过 LESS 编译成 CSS 来完成这样的事情。
  • 让我吃惊的是,这非常有利于性能(通过扁平 CSS 结构)而不是可维护性,但可能会导致巨大的 CSS 文件可能抵消增益?来自文章“我有一种感觉,我们很少谈论这个渲染效率的东西是因为它不再是一个大问题了。......超高速,零实用性”

标签: less lesscss-resources


【解决方案1】:

我不确定我是否理解这个问题...如果您需要 - 而不是点和空格,只需编写它:

.div-main {
    &-img-null {border: 1px solid #ccc}
    &-a-link   {color:  blue}
}

我想您可以使用普通的正则表达式搜索和替换将一种格式转换为另一种格式。

【讨论】:

  • 当你需要“糖”时,为什么要写“盐”?此外,tag 标识符如果您切换到此约定(例如 .div-main-a-link -> .main-link)并没有真正意义,您最终可能会遇到类似 BEM 的内容。
  • BEM 标记太可怕了!在几乎每个标签上放置一个非常长的类名,该类名取决于标签的层次位置,这看起来像是一场可维护性灾难。语义标记怎么了?
猜你喜欢
  • 1970-01-01
  • 2011-11-12
  • 1970-01-01
  • 2011-02-14
  • 2011-12-04
  • 2012-01-07
  • 1970-01-01
  • 2015-11-15
  • 1970-01-01
相关资源
最近更新 更多