如何计算服务器端应用的填充量?

时间:2012-01-13 14:40:53

标签: css dom server-side

是否可以在服务器端运行浏览器运行的相同进程,以便将CSS应用于DOM?

例如,我是否可以使用HTML文档,应用所有CSS规则(链接,嵌入和内联)来确定其属性的任何元素。我最关心的是盒子模型(即它的位置,边距,边框和填充)。

到目前为止,我能想到的唯一方法是使用Selenium RC和jQuery来传递值。然而,这似乎是非常耗费资源的,所以我想知道是否还有另一种方式。我查看了Google并搜索“解析CSS”只会带来阅读单个样式的结果,而不是将所有CSS规则应用于整个DOM,然后计算出结果。

任何语言都可以。

示例(不是真实用例,但类似的用例)

您正在构建一个API,允许知道HTML和CSS的人生成Java GUI。 API允许开发人员传入他们的HTML,然后返回所有代码来构建GUI,所有元素的大小和位置都相同。

2 个答案:

答案 0 :(得分:6)

首先阅读this document on how browsers work以了解计算类似需要布局引擎的内容。诸如渲染字体和图像的尺寸之类的东西,以及具有复杂的边距折叠规则的盒子模型,以及更多都影响最终布局。

除非您可以在服务器端应用程序中托管布局引擎(如WebKit),否则您正在考虑实现布局引擎,减去实际绘制到屏幕,只是为了建立应用程序的布局(如果我正确理解你的要求)。

话虽如此,WebKit引擎在很多项目中使用,但是most of them are browsers或其他客户端软件。快速搜索Google确实找到了一个有趣的结果:

  • phantomjs(“无头WebKit与JavaScript API ”,因此您可以使用JavaScript来检查DOM以及应用CSS的效果)

如果您无法托管现有布局引擎,则可能存在一些类似HTML的(XML)UI布局技术。也许那些是更好的选择?例如。 Microsoft's Silverlight/XAMLAdobe's MXML(也支持一些CSS规则),UIMLMozilla's XUL

答案 1 :(得分:0)

另外,请查看http://htmlunit.sourceforge.net/库,它试图模拟完全支持的浏览器。