Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 探索GWT客户端代码中的样式元素_Html_Css_Gwt - Fatal编程技术网

Html 探索GWT客户端代码中的样式元素

Html 探索GWT客户端代码中的样式元素,html,css,gwt,Html,Css,Gwt,我有一个GWT代码,创建一个列表网格作为结果,并将样式设置为CSS类,如 .test tr { height: 26px; } 现在…如果从代码中我需要在渲染未完成或网格没有元素时获得26px?我能得到那个值吗?我知道我能行 obj.getElement().getStyle().getProperty("height"); 要获取某些样式属性,但如何获取子元素tr相关值?正如您所发现的,元素的style属性只包含直接在元素本身上设置的样式-它不会自动拾取已应用到它的css,或已应

我有一个GWT代码,创建一个列表网格作为结果,并将样式设置为CSS类,如

.test tr {
    height: 26px; 
}
现在…如果从代码中我需要在渲染未完成或网格没有元素时获得26px?我能得到那个值吗?我知道我能行

obj.getElement().getStyle().getProperty("height");

要获取某些样式属性,但如何获取子元素tr相关值?

正如您所发现的,元素的style属性只包含直接在元素本身上设置的样式-它不会自动拾取已应用到它的css,或已应用到父节点并继承到它的css,等等

为此,需要获取元素的“计算”样式。这是一个有点昂贵的操作,所以应该小心地完成,在旧版本的IE中不起作用,所以必须完全编写不同的代码。有些库(如GXT)有一个内置功能来为您完成这项工作XElement.getComputedStyle…,如果您没有使用这样的库,您将需要编写JSNI来调用此api并询问这些详细信息

请查看IE8及以下版本,旧的Android浏览器和Opera Mini显然存在问题,有关呼叫的详细信息。在JSNI中,请记住使用$wnd引用窗口对象,如下所示:

    $wnd.getComputedStyle(element).getPropertyValue('height');

无需通过编程方式获取该值。我假设您只有一个或两个样式来定义表,因此您总是可以从样式名称推断行高。例如,如果将标准高度设置为26px,并将大桌子样式设置为36px,则可以简单地:

int rowHeight = myTable.getStyleName().contains("big-table") ? 36 : 26;

你为什么需要这个?看起来您正在尝试解决一个可能更容易解决的问题。我需要计算组件中可见行的数量,我知道行可能会更大,但我至少需要知道最小可预测大小,以便根据css设置计算参考值,而不受我的控制为什么不获取行和/或整个表的实际高度,然后进行相应调整?例如,您可以渲染一个表,获取其高度,调整行数-或任何需要调整的内容,然后使其可见。因为大小用于预测要检索的数据量,并且在渲染完成时知道数据量意味着太晚无法考虑,数据已加载…错误的假设,这种风格是我的战争的消费者可以在没有我控制的情况下改变的,他们可以赋予任何价值,这不是问题的答案,而是避免问题的一种方式!首先,我想帮你,所以我建议你改变你的态度。第二,你从来没有在你的问题中提到你对CSS文件没有控制权。这是一个非常不寻常的情况,可能会导致很多问题。安德烈,请不要误会我,我非常感谢任何帮助,非常感谢你的时间,如果你有不同的感觉,很抱歉。无论如何,回到核心,我认为这是一个非常普遍的情况:你意识到你的客户将管理一个组件或一个门户,并且,为了集成到其他门户,或者仅仅为了适应图形重新排序,他们改变css…这是我花了很多时间的事情,当你把产品留给客户时,你永远不知道他会做什么!到目前为止,我仍然没有尝试科林的答案,因为有点复杂似乎是唯一可能的。OK:我认为你对它进行了一些过度优化。如果您谈论的是DataGrid,那么您可以使用大多数应用程序使用的标准分页方法—加载10/20/50条记录,而不管一个可见部分中包含多少条记录。