是否有.Net CSS解析器允许我将css shorthand properties解析为其缩写形式?
例如,我想采取以下措施:
#somediv{
margin: 10px;
padding: 10px 20px;
border:5px solid #FFF;
}
并将其翻译为:
#somediv{
margin-top: 10px;
margin-right: 10px;
margin-bottom: 10px;
margin-left: 10px;
padding-top: 10px;
padding-right: 20px;
padding-bottom: 10px;
padding-left: 20px;
border-width: 5px;
border-style: solid;
border-color: #FFF;
}
以下是我需要以这种方式处理的所有不同属性的相当不错的列表:http://www.dustindiaz.com/css-shorthand/
理想情况下,我喜欢.Net中的某些东西,但如果有另一种语言的东西是开源的,我可能会对它进行调整。
更新
没有详细说明我在这里尝试做的是基本前提:
我需要以编程方式获取多个CSS文档并合并它们以创建一组明确的CSS。
所以如果doc 1有:
p { padding: 10px;}
然后我加上文档2:
p { padding-left:20px;}
生成的CSS应为:
p { padding-top: 10px; padding-right:10px; padding-bottom:10px; padding-left:20px;}
因为后来添加的文件会覆盖单个属性。为了准确地做到这一点,我需要采用每个CSS并将每个属性分解为它的最低元素。
答案 0 :(得分:1)
对于常规CSS解析,我发现这是最容易使用的:
http://www.codeproject.com/KB/recipes/CSSParser.aspx
为了将速记属性分解为他们的速记形式,我发现了两个可以做到的:
在.Net:http://www.modeltext.com/css/index.aspx
在JavaScript中:http://www.glazman.org/JSCSSP/
答案 1 :(得分:1)
最简单的方法是使用.NET的WebBrowserControl和MsHTML(IE Renderer),这也是最可靠的方法!
//Create the instance of new webbrowser control.
WebBrowser browser = new WebBrowser();
//Navigate to the specified URL.
browser.Navigate(@"test.html");
//Wait until the webpage gets loaded completely.
while (browser.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
foreach (object divElement in
(browser.Document.GetElementsByTagName("div")))
{
IHTMLCurrentStyle currentStyle = ((divElement as HtmlElement)
.DomElement as IHTMLElement2).currentStyle;
Console.WriteLine(currentStyle.marginLeft);
Console.WriteLine(currentStyle.marginRight);
}
注意:
为了使此代码正常工作,您需要添加对Microsoft.MSHTML.dll的引用,该引用可以在以下位置找到。
c:{Program Files} \ microsoft.net \ Primary Interop Assemblies \
答案 2 :(得分:0)
你能否详细介绍一下你为什么要这样做?
您是否正在寻找使用以下内容进行正确解析:
填充:10px 15px;
到
填充顶:10px的; 填充右:15像素; 填充底:10px的; 填充左:15px的;