我有这样的css语句:
margin-left: calc(50% - 480px);
哪个工作很好,但一旦我开始缩小,该语句就会更改为:
margin-left: calc(50%- 480px);
呈现所有 calc 语句已损坏。 宽度、最大宽度、最小宽度等也会发生类似的事情。 有什么方法可以更改捆绑包的行为以保留这些 CSS 属性吗?
目前我只是使用bundles.Add(new Bundle())
来完全防止缩小,但如果我可以正确缩小,那就太好了。
这是优化器的问题。
若要避免最小值删除空格,请用括号对受影响的元素进行分组。这就解决了这个问题。
margin-left: calc((50%) - 480px);
除了上面的答案:如果您使用:
margin-left: calc((50%) + 480px);
您应该将其重写为:
margin-left: calc((50%) - -480px);
因为它似乎没有为我修复 (50%)+。
如果默认的 css 缩小没有满足您的需求,您可以随时使用第三方缩小。
捆绑允许您使用自己的转换IBundleTransform
var bundle = new Bundle("~/Content/css", myCustomCssTransform);
有许多不同的捆绑器 - NuGet
例如,您可以使用 YUI 压缩器:
using System.IO;
using System.Web.Optimization;
using Yahoo.Yui.Compressor;
namespace Bundler.Utilities
{
public enum contentType
{
javascript,
css
}
public class YUITransform : IBundleTransform
{
readonly string _contentType = string.Empty;
public YUITransform(contentType contentType)
{
if (contentType == contentType.css)
{
this._contentType = "text/css";
}
else
{
this._contentType = "text/javascript";
}
}
public void Process(BundleContext context, BundleResponse bundle)
{
bundle.ContentType = this._contentType;
string content = string.Empty;
foreach (FileInfo file in bundle.Files)
{
using (StreamReader fileReader = new
StreamReader(file.FullName)) {
content += fileReader.ReadToEnd();
fileReader.Close();
}
}
bundle.Content = Compress(content);
}
string Compress(string content) {
if (_contentType == "text/javascript")
{
return JavaScriptCompressor.Compress(content);
}
else
{
return CssCompressor.Compress(content,
CssCompressionType.StockYuiCompressor
);
}
}
}
}
这是
完全正常的,因为它指的是CSS值和单位模块。
以下功能存在风险,可能会在 CR 期间丢弃 句点: 'calc()', 'toggle()', 'attr()'."
如果你可以跳过那里的空格,那不会是一个完全的缩小。一个选项是用 unicode caracter