Этот пост касается только IE.
Последняя строка следующего кода вызывает проблему.
int width = 200;
int height = 200;
int overHeight = 40;
AbsolutePanel absPanel = new AbsolutePanel();
absPanel.setSize(width + "px", height + "px");
SimplePanel underPanel = new SimplePanel();
underPanel.setWidth(width + "px");
underPanel.setHeight(height + "px");
underPanel.getElement().getStyle().setBackgroundColor("red");
SimplePanel overPanel = new SimplePanel();
overPanel.setWidth(width + "px");
overPanel.setHeight(overHeight + "px");
overPanel.getElement().getStyle().setBackgroundColor("black");
//Setting the IE opacity to 20% on the black element in order to obtain the see through effect.
overPanel.getElement().getStyle().setProperty("filter", "alpha(opacity=20)");
absPanel.add(underPanel, 0, 0);
absPanel.add(overPanel, 0, 0);
RootPanel.get("test").add(absPanel);
//The next line causes the problem.
absPanel.getElement().getStyle().setProperty("filter", "alpha(opacity=100)");
Таким образом, в основном этот код должен отображать красный квадрат размером 200 на 200 пикселей (см. UnderPanel в коде) и поверх него черный прямоугольник размером 200 на 40 пикселей (см. OverPanel в коде). Однако черный прямоугольник частично просвечивает, поскольку его прозрачность установлена на 20%, поэтому он должен быть красного цвета, но более темного красного цвета, чем прямоугольник, который находится под ним, так как на самом деле он является выцветшим черным элементом.
Некоторая проблема рендеринга возникает из-за последней строки кода, которая устанавливает непрозрачность содержащей AbsolutePanel равной 100% (что теоретически не должно влиять на визуальный результат). Действительно, в этом случае лежащая панель остается прозрачной, но прямо сквозь цвет фона страницы! Это как если бы панели, сидящей под ним, там вообще не было ...
Есть идеи?
Это под GWT 2.0 и IE7.