在母版页上有选择地调用css

时间:2013-06-25 12:43:12

标签: javascript jquery html asp.net css

我有一个母版页,其中包含所有页面的页眉和页脚。 它调用一个css文件( master.css ),其中包含页面样式: page1.aspx,page2.aspx,page3.aspx。

但是,我现在只为page1.aspx提供了另一个css文件( firstpage.css )。这必须覆盖master.css(chaos !!)中的page1.aspx的样式

有没有一种工具能够为我做这种比较? - 在给定的2页中搜索相似的标签并合并它们

我可以为master1.aspx以外的所有其他页面调用master.css吗?

6 个答案:

答案 0 :(得分:1)

如果你在master.css之后包含firstpage.css,并且你的css结构合理,那么firstpage.css的内容将覆盖master.css的内容。

如果master.css中有非常具体的规则,则需要确保firstpage.css中相同规则的选择器特异性值更高。你可以在这里阅读更多: http://www.w3.org/TR/css3-selectors/#specificity http://css-tricks.com/specifics-on-css-specificity/

作为最后的手段,您可以在页面特定规则中使用!important。然而,这可能会让你在未来更加痛苦。

答案 1 :(得分:0)

如果您网站上的页面不多,您可以为css文件定义内容区域,并在每个页面上指定要引用的样式。如果你有100页,这可能是乏味的。

如果此页面非常不同,您可以考虑不使用母版页。

另外,考虑到样式可以被覆盖,因此如果样式被正确定义,同一页面上的两个css文件都可以提供所需的结果。

答案 2 :(得分:0)

如果您不想使用site.css中的任何样式,您可以这样做。在Site.master您有当前site.css引用的地方,请将其替换为:(您需要更改about.aspx

注意 - 这可能很糟糕,因为如果您完全删除对site.css的引用然后决定需要某些样式,并且必须添加,则可能最终会出现CSS重复他们到新的样式表。

<%
    string sPagePath = System.Web.HttpContext.Current.Request.Url.AbsolutePath;
    System.IO.FileInfo oFileInfo = new System.IO.FileInfo(sPagePath);
    string sPageName = oFileInfo.Name.ToLower();

    if (sPageName == "about.aspx") { %>
        <link href="~/Styles/about.css" rel="stylesheet" type="text/css" />
    <% } else { %>
        <link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />
    <% } %>

从 - https://stackoverflow.com/a/1833313/2470724

获取当前页面名称代码

修改

它还取决于您要覆盖哪种样式,如果是文本等,那么您只需在身体内容中添加class,然后相应地设置每个页面的样式。

答案 3 :(得分:0)

级联样式表旨在以级联方式工作。但是,您可以在母版页中创建具有默认内容的内容占位符。这可以包含master.css,您可以使用firstpage.css在页面中覆盖它。我个人会为网站中的所有页面设计一个通用的css文件,然后有一个或多个“页面特定”的css文件,可以覆盖和添加新的样式。

答案 4 :(得分:0)

您有以下选择:

  1. 最好的方法是从主css中提取你想要复制的样式定义,并将它们放在一个单独的样式表中。然后,您可以在头部执行条件语句,以便为相应的页面应用相关的样式表。
  2. 您还可以将主要css后面的重复sylesheet放在头部或页面本身(显然是在头部之后),这样就可以覆盖样式。您应该注意,这可能不适用于所有浏览器,特别是IE。
  3. 您可以在每个要覆盖的样式旁边使用!重要但是这将是很多工作,并且您可能会遇到一些跨浏览器兼容性(阅读IE)问题。
  4. 最后一个选项是在加载文档后使用javascript / jquery将样式应用于元素。这肯定会奏效,但这将是很多工作。
  5. 阅读选项1。

答案 5 :(得分:0)

“StyleSheetTheme”正是您要找的。利用ASP.Net的Theming支持,而不是将样式表分别应用于所有页面。如果您希望以不同方式设置样式,请在其页面声明中禁用“主题”。

页面声明中的

EnableTheming="true" / "false"

web.config

styleSheetTheme="theme_folder_name"元素内的

"pages"