CSS和捆绑IE浏览器的限制 [英] CSS Bundling and Internet Explorer's Limit

查看:138
本文介绍了CSS和捆绑IE浏览器的限制的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我加入jQuery的用户界面将捆绑我结束了:

  bundles.Add(新StyleBundle(〜/内容/ CSS)。包括(
                            〜/内容/主题/基/ jquery.ui.core.css
                            〜/内容/主题/基/ jquery.ui.resizable.css
                            〜/内容/主题/基/ jquery.ui.selectable.css
                            〜/内容/主题/基/ jquery.ui.accordion.css
                            〜/内容/主题/基/ jquery.ui.autocomplete.css
                            〜/内容/主题/基/ jquery.ui.button.css
                            〜/内容/主题/基/ jquery.ui.dialog.css
                            〜/内容/主题/基/ jquery.ui.slider.css
                            〜/内容/主题/基/ jquery.ui.tabs.css
                            〜/内容/主题/基/ jquery.ui.datepicker.css
                            〜/内容/主题/基/ jquery.ui.progressbar.css
                            〜/内容/主题/基/ jquery.ui.theme.css

Internet Explorer已经31样式表的额度将加载,其中jQuery的已12添加在衣复位,基地和字体我在15的样式表是已经与全没有加载的网站样式或插件样式表。

显然,当它被捆绑,因为只产生一个样式表一切工作正常。我的第一直觉是使用使用@Import的那些,但是,导致捆绑到<一个href=\"http://stackoverflow.com/questions/11970293/mvc4-bundling-css-failed-unexpected-token-found-import\">fall在或不运行如下。

什么是这种情况的最佳解决方法,不是更少样式表等?
我现在的解决方案是一个#如果DEBUG 构造,但有没有更好的办法?

 #如果DEBUG
     bundles.Add(新StyleBundle(〜/内容/ CSS)。包括(
                        〜/内容/主题/基/ jquery.ui.all.css));
#其他
     bundles.Add(新StyleBundle(〜/内容/ CSS)。包括(
                            〜/内容/主题/基/ jquery.ui.core.css
                            〜/内容/主题/基/ jquery.ui.resizable.css
                            〜/内容/主题/基/ jquery.ui.selectable.css
                            〜/内容/主题/基/ jquery.ui.accordion.css
                            〜/内容/主题/基/ jquery.ui.autocomplete.css
                            〜/内容/主题/基/ jquery.ui.button.css
                            〜/内容/主题/基/ jquery.ui.dialog.css
                            〜/内容/主题/基/ jquery.ui.slider.css
                            〜/内容/主题/基/ jquery.ui.tabs.css
                            〜/内容/主题/基/ jquery.ui.datepicker.css
                            〜/内容/主题/基/ jquery.ui.progressbar.css
                            〜/内容/主题/基/ jquery.ui.theme.css));
#万一


解决方案

如果你真的需要所有的主题只是包括在调试和 jquery.ui.all.css 释放模式。

  bundles.Add(新StyleBundle(〜/内容/ CSS)。包括(
    〜/内容/主题/基/ jquery.ui.all.css));

这个方式在调试模式下你得到一个CSS文件,并在释放模式,你得到一个单一的,COM pressed CSS文件,缓存头提供服务。

When I add jquery ui to the bundle I end up with:

bundles.Add(new StyleBundle("~/Content/css").Include(
                            "~/Content/themes/base/jquery.ui.core.css",
                            "~/Content/themes/base/jquery.ui.resizable.css",
                            "~/Content/themes/base/jquery.ui.selectable.css",
                            "~/Content/themes/base/jquery.ui.accordion.css",
                            "~/Content/themes/base/jquery.ui.autocomplete.css",
                            "~/Content/themes/base/jquery.ui.button.css",
                            "~/Content/themes/base/jquery.ui.dialog.css",
                            "~/Content/themes/base/jquery.ui.slider.css",
                            "~/Content/themes/base/jquery.ui.tabs.css",
                            "~/Content/themes/base/jquery.ui.datepicker.css",
                            "~/Content/themes/base/jquery.ui.progressbar.css",
                            "~/Content/themes/base/jquery.ui.theme.css"

Internet explorer has a limit of 31 style sheets it will load, of which jquery has taken 12. Add in yui reset, base and fonts I'm at 15 style sheets already, with none of the sites styles or plugin style sheets loaded in.

Obviously, everything works fine when it is bundled as there is only one stylesheet generated. My first instinct was to use the ones that use @Import but that causes bundling to fall over or not minify.

What is the best workaround for this, other than fewer style sheets? My current solution is a #if DEBUG construct but is there a better way?

#if DEBUG
     bundles.Add(new StyleBundle("~/Content/css").Include(
                        "~/Content/themes/base/jquery.ui.all.css"));
#else
     bundles.Add(new StyleBundle("~/Content/css").Include(
                            "~/Content/themes/base/jquery.ui.core.css",
                            "~/Content/themes/base/jquery.ui.resizable.css",
                            "~/Content/themes/base/jquery.ui.selectable.css",
                            "~/Content/themes/base/jquery.ui.accordion.css",
                            "~/Content/themes/base/jquery.ui.autocomplete.css",
                            "~/Content/themes/base/jquery.ui.button.css",
                            "~/Content/themes/base/jquery.ui.dialog.css",
                            "~/Content/themes/base/jquery.ui.slider.css",
                            "~/Content/themes/base/jquery.ui.tabs.css",
                            "~/Content/themes/base/jquery.ui.datepicker.css",
                            "~/Content/themes/base/jquery.ui.progressbar.css",
                            "~/Content/themes/base/jquery.ui.theme.css"));
#endif

解决方案

If you really need all the themes simply include the jquery.ui.all.css in DEBUG and RELEASE modes.

bundles.Add(new StyleBundle("~/Content/css").Include(
    "~/Content/themes/base/jquery.ui.all.css"));

This way in DEBUG mode you get a single CSS file and in RELEASE mode you get a single, compressed CSS file served with cache headers.

这篇关于CSS和捆绑IE浏览器的限制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆