我可以在代码隐藏中读取css类运行时的内容吗
本文关键字:运行时 css 代码 隐藏 读取 我可以 | 更新日期: 2023-09-27 18:15:03
我有一个链接了.css文件的页面。假设里面有这样的内容:
.wrapper {
color:red;
}
有没有一种方法可以读取代码后面的.wrapper元素运行时的值?
问题是运行时链接了不同的样式表,因此.wapper总是可用的,但内容总是不同的。
我想要完成的是从当前附加的样式表中获取值(在本例中为color:red;(。
这可能吗?
EDIT:这可能是客户端吗,然后我可以把它放在一个隐藏的字段中,以某种方式
我假设您将拥有链接到的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 );
如果你能更清楚地了解需求,我可以提供一个解决方案。