[英]Bundling files in different directories?
我最近在一個網站上遇到了一個問題,網頁上的樣式確實搞砸了,但只在IE中。 我的老板告訴我這可能是因為正在渲染的CSS Bundle包含來自不同目錄的CSS文件,所以我檢查了它。 它類似於以下內容:
bundles.Add(new StyleBundle("~/path/subpath/all").Include(
"~/path/subpath/filename.css",
"~/path/subpath/filename1.css",
"~/path/subpath/filename2.css",
"~/path/subpath/filename3.css",
"~/path/subpath/anotherSubPath/filename.css",
"~/path/subpath/anotherSubPath/filename1.css",
"~/path/aDifferentSubPath/filename.css"));
他說Bundling無法像這樣工作,你必須只有Bundle中相同目錄的文件,所以我把它們拆分成如下所示:
bundles.Add(new StyleBundle("~/path/subpath/all").Include(
"~/path/subpath/filename.css",
"~/path/subpath/filename1.css",
"~/path/subpath/filename2.css",
"~/path/subpath/filename3.css"));
bundles.Add(new StyleBundle("~/path/subpath/anotherSubPath/all").Include(
"~/path/subpath/anotherSubPath/filename.css",
"~/path/subpath/anotherSubPath/filename1.css"));
bundles.Add(new StyleBundle("~/path/aDifferentSubPath/all").Include(
"~/path/aDifferentSubPath/filename.css"));
這在IE中解決了我們的問題。 好的,現在我的問題:
當您的css文件使用靜態文件(如圖像,字體等)的相對路徑時,捆綁名稱和文件夾存在常見問題。
例如,你有:
bundles.Add(new StyleBundle("~/path/subpath/all").Include(
...
"~/path/subpath/anotherSubPath/filename1.css"));
在您的filename1.css
您使用background: url(image.jpg)
,通常此圖像與filename1.css
位於同一文件夾中,即~/path/subpath/anotherSubPath/image.jpg
。 使用下面的bundels使瀏覽器查找不存在的文件~/path/subpath/all/image.jpg
。 也許這就是分離捆綁的原因。
對於IE的舊版本,至少<10有一些已知的限制
IE可以加載的CSS和腳本文件的數量 - 如果您在Debug
模式下運行站點,而捆綁包未捆綁,則可能會出現問題。
如果不是這樣的話,那么你在一個文件中有超過4,096個選擇器???
你的老板聽起來很棒! 首先,CSS路徑是相對於CSS文件的,所以我懷疑這就是他建議你改變它的原因。
但CSS長度也可能是一個問題,因此可能是這種情況下的根本原因。
不幸的是,在瀏覽器中需要注意一些怪癖,比如這個CSS,或Apple設備上的圖像大小(之前遇到過精靈表)。 你的老板聽起來像是那種充滿活力,開啟的人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.