【问题标题】:@media and @font-face support in LessCSSLessCSS 中的@media 和 @font-face 支持
【发布时间】:2011-05-27 08:17:21
【问题描述】:

您好,有人知道如何使用 LessCSS 进行媒体查询吗?

  @media screen and (max-width: 600px) {
      #container{
          width: 480px;
      }
  }

给我以下错误:

! Syntax Error: on line 23: expected one of :: : . # * - [ @media @font-face , { ; got ( after:

@media screen and

同样,@font-face 和任何带有 @ 的 CSS3 查询与 LessCSS 的编译器冲突。

谢谢!

【问题讨论】:

    标签: css less media-queries


    【解决方案1】:

    据我了解,LessCSS 不支持@media,你可以在他们的 github 主页上找到开放票。

    我认为在您的情况下唯一可行的方法是:

    <link rel="stylesheet" media="screen and (max-width: 480px)" href="smartphone.css" />
    

    自接受答案以来,LessCSS 版本中的问题似乎已得到修复。

    【讨论】:

    • 我很欣赏这个答案,但我听说这是可能的,但没有人能举个例子。正如您在上面指出的,这是一个简单的解决方法,我们也可以只添加一个非少 css 文件,但这并不是赏金的真正意义。 :)
    • 见下面@Colin 的回答。我可以证明 LESS 1.5.5.js 确实支持开箱即用的媒体查询,因为它们没有被剥离。它们只是不能在嵌套规则中使用。所以这取决于你所说的“支持”是什么意思。
    【解决方案2】:

    所以我在以下引用的 .less 文件中添加了一个简单的 @media print { .no-print {display:none;}}:

    <link rel="stylesheet/less" href="http://worldMaps.org/maps/styles/growth.less">
    

    它不会工作。但是,我们的 css 大师指出 .lesses 默认是使用媒体类型的屏幕,所以如果您将引用的 less 链接更改为

    <link rel="stylesheet/less" href="http://worldMaps.org/maps/styles/growth.less" media="all">
    

    然后突然间,less 文件中的@media 打印将被拾取并开始正常工作。

    希望这可以帮助像我一样困惑的其他人。

    【讨论】:

      【解决方案3】:

      以上所有答案都已过时。

      less.js 和lessCss/dotless 都支持@media 和@font-face。

      它们现在还支持带有嵌套规则的@media,例如

      .cl {
       @media screen and (max-width: 600px) {
        .d {
         .e {
           background: none;
         }
        }
       }
      }
      

      变成

      @media screen and (max-width: 600px) {
       .cl .d .e {
         background: none;
       }
      }
      

      请参阅less.js documentationdotless documentation 了解更多信息。

      【讨论】:

      • 需要顶一下,这个是对的,上面好多老的。
      • 他们可能已经添加了这个功能,但是链接的项目都没有在他们当前的文档中引用它。还是我错过了什么?
      • @IMSop:lesscss.org 现在在“语言”下有一个“嵌套媒体查询”部分。
      【解决方案4】:

      LESS 目前不为媒体查询提供任何特殊支持。这意味着在 LESS 的嵌套规则中嵌入媒体查询是不可能的,这迫使开发人员将他们的响应式样式单独放置在 LESS 文档的单独部分中,而不是将它们保留在上下文中。让我举一个例子说明它是如何工作的:

      来自A Call for LESS to Embrace Responsive Design

      所以是的,您现在可以使用媒体查询,但不能用嵌套语法编写它们。

      查看该博客文章中的 cmets,了解一些建议的解决方案,这些解决方案看起来迟早会在 less.js 中推出。

      【讨论】:

      • +1 因为你可以在 LESS 样式表中使用@media,你只需要确保它是最外层的元素。这可以避免您加载不必要的文件。
      【解决方案5】:

      如果您可以使用less.js,它可以直接使用。我尝试了同样的例子:

      @media screen and (max-width: 600px) {
          #container{
              width: 480px;
          }
      }
      

      它在 .css 文件中完全复制了它。 less.js 中还有一个转义功能,但它似乎只对值起作用,所以我认为你不能为此使用它。

      body {
          color: e('red');
      }
      

      我猜你使用的是原始的 Ruby LessCSS?如果你不能切换到新的,我唯一能想到的另一件事就是使用@include。这可能比 HTML 中的另一个链接标签稍好,如果您压缩所有 CSS 文件,您可能能够避免额外的 HTTP 请求。

      【讨论】:

      • 感谢 Robbles,我一直在 LessCSS 的网站上抱怨,看来我不是唯一一个有这个愿望的人。事实证明,Ruby gem 中也缺少父选择器,但在 js 版本中可用。似乎他们放弃了红宝石......
      【解决方案6】:

      我们在项目中使用它,但从未发现它可以工作。

      创建一个不受less管理的外部css文件。 less css 文件将能够访问字体。

      【讨论】:

        猜你喜欢
        • 2013-07-05
        • 1970-01-01
        • 2013-02-16
        • 2010-12-06
        • 1970-01-01
        • 1970-01-01
        • 2013-08-12
        • 2012-08-26
        • 2011-12-16
        相关资源
        最近更新 更多