我有以下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;
}
正如您所见,该变量永远不会被解释。
答案 0 :(得分: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) );
答案 1 :(得分:0)
我刚刚下载了less
并对其进行了测试,这个数组似乎并不是您的代码无法运行的唯一原因。
这不是有效less
代码(至少根据documentation)
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)