我希望我不会创建一个重复的主题,但我已经搜索了两天,但无法找到解决方案.
我们正在MVC4中开始一个新项目,我们加载了较少版本的bootstrap.我遇到的问题是当我尝试引用当前文件之外的bootstrap.less我global.less或其他任何类中的某些类或变量时.我可以在当前文件的顶部创建一个变量并使用它很好,但如果我想使用单独的文件,我必须这样@import做.如果我的整个应用程序在一个文件中较少,那就没问题了,但是我必须将@import 4+文件放入我创建的每个页面/部分文件中.
我从https://gist.github.com/2002958添加了MVC4捆绑添加
正如我所看到的,问题是每个文件都被评估并独立转换为css.我试图简化过程并从less bundle中的所有文件构建一个大量的字符串然后转换它们(Less.Parse(lessString)),但我收到错误:
"您正在导入以.less结尾的无法找到的文件"
所以这是我的最终问题:如果没有引用物理文件,有没有办法简单地解析一个较少的字符串?这将解决我的问题.
如果出于某种奇怪的原因这是不可能的,是否有一个我不知道的组件或过程实际上将文件捆绑在一起然后缩小它们?
关于这个主题的任何亮点都会受到赞赏,因为我正在试图让它发挥作用.
此问题也发布在Dotless小组:https://groups.google.com/forum/ ? fromgroups#!topic / fifty/j-8-CN1dNjUY
我有一个带有以下构造的.less样式表:
@width:600;
.some-style
{
width:@{width}px;
}
Run Code Online (Sandbox Code Playgroud)
这会给出以下错误:
Expected '}' on line x in file '..\styles.less'
Run Code Online (Sandbox Code Playgroud)
我需要那些大括号,因为我需要将变量与后面的px后缀区分开来(@widthpx不起作用,因为它会查找一个名为的变量widthpx).我不能使用空格,因为600 px无效的CSS.使用括号而不是花括号也不起作用.
我在这做错了什么?
更新:我从软件包管理器安装了最新版本的.less,现在它运行得更好一些,但有一个致命的缺陷:
width:@(width)px; <--note the parentheses
Run Code Online (Sandbox Code Playgroud)
现在编译,但发出这个CSS:
600 px <--note the space, which is invalid CSS, thus useless.
Run Code Online (Sandbox Code Playgroud)
解决了:ScottS向我指出了解决方案.除了他的两个方法之外,看起来编译器可以对字符串进行数学运算.这样可行:
@width:600px;
.some-style
{
width:@width / 2; <--correctly emits "300px"
}
Run Code Online (Sandbox Code Playgroud) 我最近发现了DotLess库,我对此感到非常兴奋,因为CSS一直让我讨厌.我觉得这个库使用起来非常方便.不幸的是,一旦我尝试了,我发现VS 2010不为具有.less扩展名的文件提供IntelliSense.这实际上让我感到沮丧,我决定不使用DotLess,直到VS 2010有一天提供IntelliSense.
Jon Galloway的视频MVC开发人员应该知道什么关于HTML和CSS谈论HTML/CSS以及包括DotLess在内的一些方便提示,他提到了Phil Haack的T4模板,它允许我使用.less.css扩展,然后它要生成正确的CSS文件的东西.
我去了菲尔的博客,找到了他谈论T4模板的帖子.没有与T4模板的直接链接,并且链接在他的博客文章中已经死了,这篇文章相对过时(2009年).
有没有人有这个问题的解决方案?我真的想使用DotLess库,但我不想丢失IntelliSense.
我有这个文件夹结构:
~/css/file1.less
~/css/folder/file2.less
Run Code Online (Sandbox Code Playgroud)
我想要做的是在file2.less中导入file1.less,所以在我的file2.less我有这个代码:
@import "../file1.less";
Run Code Online (Sandbox Code Playgroud)
这不起作用,编译器在构建项目时崩溃.我在Visual Studio 2010中执行编译器.
如何导入放置在父文件夹中的较少文件?
如果我有:
.foo
{
background-color:#fff;
}
Run Code Online (Sandbox Code Playgroud)
LESS将此转换为:
.foo
{
background-color:white;
}
Run Code Online (Sandbox Code Playgroud)
为什么是这样?浏览器是否比HEX值更快地处理命名颜色?
我正在使用无点实现LESS .这可以进行转换吗?如果是这样,为什么?
.less库自称为ruby LESS库的一个端口.我是否可以忽略它们都是相同LESS文件格式的编译器,或者他们是否期望略微不同的代码?问另一种方式,我是否将自己锁定在无点库中,或者可以在较少的文件上使用无点和较少的javascript库?
如何在pathstring中使用字符串插值导入.less文件.
@folder: "LessFiles";
Run Code Online (Sandbox Code Playgroud)
我试过这个
@import "@{folder}/file.less";
Error:
File Not Found.
HTTP GET Url is "%7Bfolder%7D/file.less"
Run Code Online (Sandbox Code Playgroud)
还有这个:
@import formatString("{0}/file.less",@folder);
Error:
Server throws System.NullReferenceException
Run Code Online (Sandbox Code Playgroud)
还有这个:
@path: "@{folder}/file.less";
@import @path;
Error:
directive block with unrecognised format on line 16 in file 'test.less':
[15]:
[16]: @import @path;
--------^
[17]:
Run Code Online (Sandbox Code Playgroud)
任何提示如何解决这个问题?
谢谢!
我正在使用Dotless和System.Web.Optimizations.LessBundle在我的MVC 5应用程序中包含Less stylesheets.一切都在我的本地机器上的Debug和Release中工作.
我基本上遵循了这个博客文章所做的相同步骤.
我的包代码如下所示:
bundles.Add(new LessBundle("~/Content/css/mySheet").Include(
"~/Content/lib/normalize/normalize.css",
"~/Content/site/my/sheet.less"));
Run Code Online (Sandbox Code Playgroud)
在开发本地我最终得到这样的链接:
http://localhost:57240/Content/site/my/sheet.less
Run Code Online (Sandbox Code Playgroud)
在本地发布我最终得到这样的链接:
http://localhost:57240/Content/css/mySheet?v=zGP7kp7SWQZ0s2SVk555UPp3zcThPaRqzm6bTysZJzE1
Run Code Online (Sandbox Code Playgroud)
但是,当我将Release版本部署到Azure网站(使用Visual Studio发布机制)时,我最终得到一个如下所示的链接:
http://mypage.azurewebsites.net/Content/css/mySheet?v=
Run Code Online (Sandbox Code Playgroud)
如您所见,魔术标识符未附加到URL的末尾.
是什么赋予了?
我正在努力使dotLESS @import拥有一个单独的变量文件; 我只是经常得到"变量未定义".
如果我浏览到变量配置文件,它可以工作; 如果我把变量内联在主样式表中就行了; 但是在@import中,没有骰子.我将.css和.less映射到扩展名,但是如果我只使用.less,它也不起作用.
变量文件LESS-config.less是:
/*
.LESS VARIABLES
*/
@mbw_dark_cyan: #1293b5;
@mbw_cyan: #11add4;
@mbw_magenta: #e935da;
@control_text: #ffffff;
@action_delete: #ff5400;
@section_level1_bg: @mbw_dark_cyan;
@section_level1_fg: @control_text;
@button_bg: @mbw_dark_cyan;
@button_fg: @control_text;
@button_icon: @control_text;
@data_table_header: @mbw_cyan;
.dummy {
color: @control_text;
}
Run Code Online (Sandbox Code Playgroud)
其呈现为:
/*
.LESS VARIABLES
*/
.dummy {
color: #ffffff;
}
Run Code Online (Sandbox Code Playgroud)
调用样式表main.css是:
@import (less) '/css/LESS-config';
button {
background: @button_bg;
}
Run Code Online (Sandbox Code Playgroud)
这给出了错误:
variable @button_bg is undefined on line 4 in file '/css/main.css':
[3]: button {
[4]: background: @button_bg;
----------------^
[5]: …Run Code Online (Sandbox Code Playgroud) 最初,我将我的css .less文件命名为Site.less.css智能类型处于活动状态.哪个工作正常.
我最近需要使用这种@import "Site.less"; 能力.不幸的是,这.css最终不起作用,因为这会将其视为CSS文件,而不是传递.less参数.
但是,使用该名称Site.less,发布(到IIS)功能不包括此文件.我假设这与无法识别的文件类型有关?它包含在我的解决方案资源管理器中,因此应该复制它!
如何通过发布复制?(我可以手动完成,但不应该每次都这样做)