有没有办法可以覆盖' CSS主题'为我的网站?

时间:2016-10-12 13:32:14

标签: javascript html css .net document-body

我希望能够将当前的BODY css更改为万圣节的CSS主题。问题是我的.Net页面是模板。必须有一种方法可以让body类检查是否存在CSS主题覆盖?

我可以通过这样的方式来改变主题:

CSS:

/* standard theme */
body {
    background-color: white;
    font-color: #000;
}

/* halloween theme css */
body.halloween {
    background-color: black;
    font-color: #666;
}

然后将其置于HEAD的可编辑区域:

<%
'CSS Theme overwrite - uncomment if required
 cssTheme = "halloween"
 %>

我的身体标签

<body class="<%=cssTheme%"> 
    content........
</body>

我已经尝试过以上但是它没有用。

我是否需要附加到<body>的函数doOnLoad()来检查cssTheme并应用(如果有的话)?

2 个答案:

答案 0 :(得分:0)

是的,你可以这样做 - CSS中的“C”代表级联,这意味着你可以用更具体的定义覆盖样式表的某些元素。

下面使用div进行了说明,但与body或HTML中的任何其他元素的工作方式相同。 (注意:javascript是无关紧要的,只是用于添加CSS类Halloween,您将看到它定义了不同的表示规则。)

$('button').click(function(){
 $('div').addClass("halloween");  
});
div{
  background-color:grey,
    color:Black
}

div.halloween{
  background-color:black;
  color:orange
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  Content here
 </div>

<button>make halloween</button>

答案 1 :(得分:-1)

global.asax.cs中的

- c#

的示例
    void Application_PostReleaseRequestState(object sender, EventArgs e)
    {

        if (Response.ContentType == "text/html")
            Response.Filter = new myFilter(Response.Filter);

    }

    class myFilter:System.IO.MemoryStream
    {

        private System.IO.Stream outputStream =null;

        public myFilter(System.IO.Stream output)
        {
            outputStream = output;
        }

        public override void Write(byte[] buffer, int offset, int count)
        {

            var contentInBuffer = System.Text.UTF8Encoding.UTF8.GetString(buffer);


            //change the .css here
            contentInBuffer = contentInBuffer.Replace(@"MainDesign.css", @"MainDesign_hallow.css");

            outputStream.Write(System.Text.UTF8Encoding.UTF8.GetBytes(contentInBuffer), offset, System.Text.UTF8Encoding.UTF8.GetByteCount(contentInBuffer));
        }

    }