2010-10-15 65 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方法已经处理好了。

相关问题