2010-10-15 63 views
0

您可以將CSS樣式塊(即<style type="text/css">...</style>)放在ascx頁面上,以便設置用戶控件的樣式嗎?我試了一下,它的工作原理。但是,我不知道這是否是一種常見的做法,問題是樣式塊被插入到最終的HTML中,在用戶控件應該是的位置。我的理解是風格塊應該在前面的<head></head>標籤之間。所以它似乎不合適。順便說一句,JavaScript可以放在HTML上的任何地方?用戶控件是否可以在用戶控件中嵌入自己的CSS樣式?

回答

1

Javascript標籤可以放在任何地方。頭部接縫似乎是合乎邏輯的地方,但有些人建議在</body>之前將其置於底部。通過這種方式,您的網頁內容加載速度更快,可能會改善搜索引擎優化。

Stylesheets肯定應該放在<head>中,因爲它是W3C的建議。 使用樣式表時,請將Tim的建議放在頭部,或者更好的是使用外部.css文件。

2

我在你的head標籤中有runat =「server」,那麼你可以動態地添加CSS或Script tages。

Dim lt as New Literal() 
lt.Text = "<style type='text/css'>styles......</style>" 
Page.Header.Controls.Add(lt) 

lt = New Literal() 
lt.Text = "<script type='text/javascript'>scripts.....</script>" 
Page.Header.Controls.Add(lt) 
0

是,<style>標籤和標籤<script>可以在任何地方插入HTML。它不一定要在<head></head>。請注意瀏覽器從上到下加載html。如果您在指定<style>參考的之前爲您的html 中的特定控件指定了css類,則可能無法獲得所需的樣式效果。 <script>同樣的事情。

0

使用我在全局可訪問HtmlHelper類存儲爲靜態方法,這些輔助方法:

/// <summary>Register a CSS block in HEAD</summary> 
/// <param name="page">A reference to the current Page instance (usually this.Page from a page or control)</param> 
/// <param name="id">An ID used to track if this style block has been added before or not. Must be a unique ID in the HTML</param> 
/// <param name="cssText">The CSS text</param> 
public static void RegisterCSSBlock(System.Web.UI.Page page, string id, string cssText) 
{ 
    if (page != null && page.FindControl(id) == null) 
    { 
     HtmlGenericControl css = new HtmlGenericControl(); 
     css.ID = id; 
     css.TagName = "style"; 
     css.Attributes.Add("type", "text/css"); 
     css.Controls.Add(new LiteralControl(cssText)); 
     page.Header.Controls.Add(css); 
    } 
} 

這是很容易適應CSS文件(而不是代碼)。您不需要爲JavaScript調整它,因爲內置的ClientScriptManager方法已經處理好了。

相關問題