我试图让我的花哨的 CSS3 重新设计适用于 GWT 应用程序,但是当将 CSS3Pie vml 对象应用于 GWT DialogBox Caption 时,它们似乎都没有正确显示。此外,DialogBox 或 PopupPanel 中的任何内容,例如 GwtButton,都没有正确应用其 CSS3Pie(即使这些相同的 GwtButtons 在任何地方都可以正常工作,但弹出窗口除外)。
我的假设是GWT 操作 DOM 和弹出窗口的 CSS 样式的方式导致所有样式都变得 fubared。CSS3Pie 肯定会正确地附加到这些元素上,因为背景颜色和边框样式正在被删除,并且css3-container
正在添加元素。
这是应用于 DialogBox 的 CSS
.gwt-PopupPanel,.gwt-DecoratedPopupPanel,.gwt-DialogBox,.gwt-SuggestBoxPopup
{
z-index: 999;
}
.gwt-PopupPanelGlass {
background: #000;
opacity: 0.3;
filter: alpha(opacity = 30);
z-index: 990;
}
.gwt-DialogBox .dialogTopCenterInner{
}
/** Copied from titled region **/
.gwt-DialogBox .Caption {
padding: 8px 0 0 14px;
background: #6c6d70;
background: -moz-linear-gradient(#6c6d70, #595a5c);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#6c6d70), color-stop(100%,#595a5c));
background: -webkit-linear-gradient(#6c6d70, #595a5c);
background: -o-linear-gradient(#6c6d70, #595a5c);
background: -ms-linear-gradient(#6c6d70, #595a5c);
background: linear-gradient(#6c6d70, #595a5c);
height: 25px;
border: 1px solid #4a4a4a;
-webkit-border-radius: 5px 5px 0 0;
-moz-border-radius: 5px 5px 0 0;
border-radius: 5px 5px 0 0;
-webkit-box-shadow: inset 0 1px 1px #8e8f93;
-moz-box-shadow: inset 0 1px 1px #8e8f93;
box-shadow: inset 0 1px 1px #8e8f93;
color: #fff;
font-size: 14px;
font-weight: bold;
cursor: move;
-pie-background: linear-gradient(#6c6d70, #595a5c);
position: relative;
behavior: url(/resources/css/PIE.htc);
}
.gwt-DialogBox .dialogContent {
border: 1px solid #6a6a6a;
border-top: none;
background: #f9f9f9;
padding: 10px;
}
这是从 IE Developer Toolbar 获取的对话框生成的 HTML。
<DIV style="CLIP: rect(auto,auto,auto,auto); POSITION: absolute; VISIBILITY: visible; OVERFLOW: visible; TOP: 374px; LEFT: 743px" class=gwt-DialogBox __eventBits="124"><DIV>
<TABLE cellSpacing=0 cellPadding=0>
<TBODY>
<TR class=dialogTop>
<TD class=dialogTopLeft>
<DIV class=dialogTopLeftInner></DIV></TD>
<TD class=dialogTopCenter>
<DIV class=dialogTopCenterInner>
<css3-container style="Z-INDEX: auto; POSITION: absolute; DIRECTION: ltr; TOP: 0px; LEFT: 0px"><background style="POSITION: absolute; TOP: 0px; LEFT: 0px"><group2><?xml:namespace prefix = css3vml ns = "urn:schemas-microsoft-com:vml" /><css3vml:shape style="POSITION: absolute; WIDTH: 413px; HEIGHT: 35px; BEHAVIOR: url(#default#VML); TOP: 0px; LEFT: 0px" coordsize = "826,70" coordorigin = "1,1" fillcolor = "#6c6d70" stroked = "f" path = " m0,10 qy10,0 l816,0 qx826,10 l826,70 qy826,70 l0,70 qx0,70 x e"><css3vml:fill></css3vml:fill><css3vml:fill></css3vml:fill></css3vml:shape></group2></background><border style="POSITION: absolute; TOP: 0px; LEFT: 0px"><css3vml:shape style="POSITION: absolute; WIDTH: 413px; HEIGHT: 35px; BEHAVIOR: url(#default#VML); TOP: 0px; LEFT: 0px" coordsize = "826,70" coordorigin = "1,1" filled = "f" stroked = "t" strokecolor = "#4a4a4a" strokeweight = ".75pt" path = " m1,10 qy10,1 l816,1 qx825,10 l825,70 qy826,69 l0,69 qx1,70 x e"><css3vml:stroke></css3vml:stroke><css3vml:stroke></css3vml:stroke></css3vml:shape></border></css3-container>
<DIV class="Caption pie_first-child pie_first-child" _pieId="_208">Change Region</DIV></DIV></TD>
<TD class=dialogTopRight>
<DIV class=dialogTopRightInner></DIV></TD></TR>
<TR class=dialogMiddle>
<TD class=dialogMiddleLeft>
<DIV class=dialogMiddleLeftInner></DIV></TD>
<TD class=dialogMiddleCenter>
<DIV class="dialogMiddleCenterInner dialogContent">
Fancy content here.
</DIV>
</TD>
<TD class=dialogMiddleRight>
<DIV class=dialogMiddleRightInner></DIV></TD></TR>
<TR class=dialogBottom>
<TD class=dialogBottomLeft>
<DIV class=dialogBottomLeftInner></DIV></TD>
<TD class=dialogBottomCenter>
<DIV class=dialogBottomCenterInner></DIV></TD>
<TD class=dialogBottomRight>
<DIV class=dialogBottomRightInner></DIV></TD></TR></TBODY></TABLE></DIV></DIV>
以下是我尝试过的一些事情:
- 将 HTML 复制并粘贴到页面中,而不是让 GWT 操作 DOM css3 属性
- 使用绝对定位和自定义隐藏/显示代码css3 属性的自定义弹出窗口有效
- Applying
position:relative
已经修复了其他地方的一些 css3pie 属性,但是这里没有效果
有没有人成功让 GWT PopupPanel 和 DialogBox 与 CSS3Pie 一起工作?这个项目似乎表明有人有。我错过了什么?