我可以在代码隐藏中读取css类运行时的内容吗

本文关键字:运行时 css 代码 隐藏 读取 我可以 | 更新日期: 2023-09-27 18:15:03

我有一个链接了.css文件的页面。假设里面有这样的内容:

.wrapper {
 color:red;
}

有没有一种方法可以读取代码后面的.wrapper元素运行时的值?

问题是运行时链接了不同的样式表,因此.wapper总是可用的,但内容总是不同的。

我想要完成的是从当前附加的样式表中获取值(在本例中为color:red;(。

这可能吗?

EDIT:这可能是客户端吗,然后我可以把它放在一个隐藏的字段中,以某种方式

我可以在代码隐藏中读取css类运行时的内容吗

我假设您将拥有链接到的CSS文件的路径(物理或虚拟(。

如果它是Web服务器上的文件,您可以将其加载到文本文件中,或者如果它在远程服务器上,您可以使用XMLHTTPRequest来获取它

一旦加载了文件的主体,下面的reg ex将解析该文件,检测包装类,并将颜色键的值提取到匹配的第一组中。

'.wrapper['s|'S]*color's*:'s*([^;]*);

一些样本代码

    var inputfileReader = new StreamReader("path to my css file");
    string inputLine = inputfileReader.ReadToEnd() ;
    inputfileReader.Close();
    Regex cssParser = new Regex(@"'.wrapper['s|'S]*color's*:'s*([^;]*);");
    string myCssClass = string.Empty; ;
    if (cssParser.Match(inputLine).Groups[1] != null)
        myCssClass = cssParser.Match(inputLine).Groups[1].Value;

这很棘手

client side是可能的,
将隐藏元素添加到页面&分配类然后可以使用jquery轻松地获取DOM元素的css属性。

var testElement = $("<div></div>");
testElement.addClass("wrapper");
testElement.css("display", "none");
$("body").append(testElement);
alert(testElement.css('color'));

server side,如果要从css文件中获取值,
检查这个http://www.codeproject.com/KB/recipes/CSSParser.aspx

当做NJ

<script type="text/javascript">
     window.getComputedStyle = window.getComputedStyle || function (element) { return element.currentStyle; };
     window.onload = function () {
          var dummy = document.createElement("span");
          dummy.className = "wrapper";
          document.getElementsByTagName("body")[0].appendChild(dummy);
          document.getElementById("<%= WrapperColorHiddenField.ClientID %>").value = getComputedStyle(dummy).color;
          document.getElementsByTagName("body")[0].removeChild(dummy);
     }
</script>

该解决方案的缺点是,您需要解析返回的值:在IE中,red返回值,而在Chrome中,返回rgb(255,0,0)

您可以查看这些链接

http://blog.dynamicprogrammer.com/2008/01/20/CSSParserClassInNET.aspx

http://www.codeproject.com/KB/recipes/CSSParser.aspx

在客户端,使用CSS类总是可能的。您可以访问客户端上的任何类。您也可以添加隐藏字段或访问它。使用jquery:

$("#<%=ServerSideId.ClientID%>").addClass( className );

如果你能更清楚地了解需求,我可以提供一个解决方案。