簡體   English   中英

是否可以有條件地包含CSS?

[英]Is it possible to conditionally include CSS?

我有一個ascx,里面有一些CSS。 這個ascx可能會多次添加到頁面中。 它使用的CSS只需要包含一次。

  1. 是否可以有條件地包含CSS? 如果是這樣的話?
  2. 這被認為是不好的做法嗎?

我有一個有一些CSS的ascx ......這被認為是不好的做法嗎?

是。 理想情況下,CSS規則應該在一個單獨的靜態css文件中定義,該文件只能在主頁的標題中加載一次。 正文中的CSS不符合標准。

如果您在靜態CSS文件上設置了良好的緩存規則,這將顯着減少您通過網絡傳輸的數據量,因為不需要為每個頁面加載再次加載CSS規則。 如果您想在呈現某些相關ASCX文件時僅在頭文件中包含此文件,請查看Neil Fenwick的答案

更新

無論出於何種原因,尼爾芬威克似乎已經刪除了他的答案。 希望他不介意我在這里復制它:

絕對是的,這是可能的。

我建議查看像ClientDependency這樣的庫來管理你的CSS和JS包含和依賴。

如何在ClientDependency codeplex頁面上包含的好例子。 組織CSS和JS依賴項的好習慣是,您可以多次斷言它們的需求,但只在輸出中發出一次依賴項。

ClientScriptManager可以通過檢查是否添加了某個特定的“腳本”來處理這個問題。 用於javascript,但適用於任何事情。

if(!Page.ClientScript.IsStartupScriptRegistered("mykey")) {
    Page.ClientScript.RegisterStartupScript(this.GetType(), "mykey", "<link type=\"text/css\" href=\"stylesheet.css\"/>", false);
}

您可能對查看Modernizr非常感興趣,它允許您根據測試結果進行大量有趣的測試並加載不同的資源(例如CSS)。 例如,如果瀏覽器不支持border-radius等,您可能需要加載rounded-images.css。

尼爾的答案為基礎 我們利用Telerik的ASP MVC擴展來管理ASP.NET MVC中的JavaScript和CSS。 它允許“智能”包含JS和CSS(甚至從部分視圖),防止文件重復。 它還帶有其他鈴聲和口哨聲(如文件合並和壓縮)。

這可能不適用於您的帖子(原始ASP.NET)的確切情況,但我想提到它是為了尋找同樣的事情的ASP.NET MVC用戶。

把它放在HTML的頭部。

<pre>
<!--[if gte IE 8]>         
 <link rel="stylesheet" type="text/css" href="ie8-and-up.css" />  <![endif]-->
</pre>

欲了解更多信息,請訪問: http//css-tricks.com/132-how-to-create-an-ie-only-stylesheet/ GTE意味着大於。

可怕的做法。 除非這是你在工作中所做的一切,因為這會產生很大的工作量,因為將來可能需要更改每個css文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM