2

我有以下less代码。less.js我已经阅读过,在声明中使用变量时存在限制,url()因此我使用了两种建议的解决方法,但真正的问题是变量来自 PHP,并且它似乎没有正确传递,因为它从未被解释过。

我在用着lessphp

也许我做错了什么。

PHP 代码

$this->parsed_css = $this->lessc->parse( $this->parsed_css, array( 'fontdir', 'myfontdir' ) );

Less代码

@font-face {
    font-family: 'FontAwesome';
    src: url(%("%s/fontawesome-webfont.eot", @fontdir));
    src: url('@{fontdir}/fontawesome-webfont.eot?#iefix') format('embedded-opentype'),
         url('@{fontdir}/fontawesome-webfont.woff') format('woff'),
         url('@{fontdir}/fontawesome-webfont.ttf') format('truetype'),
         url('@{fontdir}/fontawesome-webfont.svgz#FontAwesomeRegular') format('svg'),
         url('@{fontdir}/fontawesome-webfont.svg#FontAwesomeRegular') format('svg');
    font-weight: @fontdir;
    font-style: normal;
}

CSS 输出

@font-face {
  font-family:'FontAwesome';
  src:url("/fontawesome-webfont.eot");
  src:url('/fontawesome-webfont.eot?#iefix') format('embedded-opentype'), url('/fontawesome-webfont.woff') format('woff'), url('/fontawesome-webfont.ttf') format('truetype'), url('/fontawesome-webfont.svgz#FontAwesomeRegular') format('svg'), url('/fontawesome-webfont.svg#FontAwesomeRegular') format('svg');
  font-weight:;
  font-style:normal;
}

如您所见,该变量永远不会被解释。

4

2 回答 2

1

根据您的原始问题(在编辑中删除它之前),变量的名称是$font_dir,但您fontdir在所有引用中都使用(没有下划线)。

尝试用 为fontdir元素分配一个值array('fontdir' => $font_dir),例如:

$this->parsed_css = $this->lessc->parse( $this->parsed_css, array( 'fontdir' => $font_dir, 'myfontdir' => $my_font_dir) );
于 2012-08-01T13:39:35.147 回答
0

我刚刚下载less并测试了它,数组的东西似乎不是你的代码不起作用的唯一原因。

这不是有效less的代码(至少根据文档

src: url('@{fontdir}/fontawesome-webfont.eot?#iefix') format('embedded-opentype')
//         ^       ^    Remove these

//Right
echo $less->parse("color: @color",
    array(
        'color' => 'red'
)); //color:red;

//Wrong
echo $less->parse("color: @{color}",
        array(
            'color' => 'red'
    )); // (no output)
于 2012-08-01T14:04:58.370 回答