【问题标题】:HTMLPanel centering with UIBinder and GWTHTMLPanel 使用 UIBinder 和 GWT 居中
【发布时间】:2013-08-10 23:20:06
【问题描述】:

下面的代码在浏览器的左上角显示了一个登录框,但我想把它显示在中间。

我已阅读有关如何使用 CSS 样式元素和单元格元素居中的各种主题,但它们不起作用。也许我做错了什么。

我刚刚开始学习 UiBinder,所以请原谅我的不良风格。

任何帮助将不胜感激,谢谢。

代码如下:

<ui:style>
        buttonsDiv{
        float: right;
        margin-top: 20px;
    }
</ui:style>
<g:DialogBox text="Instructor Registration">
    <g:HTMLPanel>
        <g:HTMLPanel styleName='buttonsDiv'>
            <g:Label>First Name</g:Label>
            <g:TextBox></g:TextBox>
        </g:HTMLPanel>
        <g:HTMLPanel styleName='buttonsDiv'>
            <g:Label>Last Name</g:Label>
            <g:TextBox></g:TextBox>
        </g:HTMLPanel>
        <g:HTMLPanel styleName='buttonsDiv'>
            <g:Label>Institution</g:Label>
            <g:TextBox></g:TextBox>
        </g:HTMLPanel>
        <g:HTMLPanel styleName='buttonsDiv'>
            <g:Label>Department</g:Label>
            <g:TextBox></g:TextBox>
        </g:HTMLPanel>

        <g:HTMLPanel styleName='buttonsDiv'>
            <g:Button ui:field="submit">Submit</g:Button>
            <g:Button ui:field="goBack">Cancel</g:Button>
        </g:HTMLPanel>

    </g:HTMLPanel>
 </g:DialogBox>

【问题讨论】:

  • 我看到你正在使用DialogBox,它有一个center() 方法,你可以在显示这个时调用它吗?
  • 有没有一种方法可以添加 CSS 元素,使该 UiBinder 中的面板居中,而无需在 java 中调用 center() 方法?

标签: css gwt uibinder


【解决方案1】:

编辑:添加 Marconius CSS

以下代码允许您将对话框的左上角居中(注意我在您的 ui binder css 语法中所做的一些更正):

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
    xmlns:g="urn:import:com.google.gwt.user.client.ui">
    <ui:style>
        .buttonsDiv {
            margin-top: 20px;
        }

        .centerCss {
            position: absolute;
            left: 50%;
            top: 50%;
            width: 150px;
            height: 300px;
            margin-top: -150px;
            margin-left: -75px;
       }
    </ui:style>
    <g:VerticalPanel stylePrimaryName="{style.centerCss}">
        <g:DialogBox text="Instructor Registration">
            <g:HTMLPanel>
                <g:HTMLPanel styleName="{style.buttonsDiv}">
                    <g:Label>First Name</g:Label>
                    <g:TextBox></g:TextBox>
                </g:HTMLPanel>
                <g:HTMLPanel styleName="{style.buttonsDiv}">
                    <g:Label>Last Name</g:Label>
                    <g:TextBox></g:TextBox>
                </g:HTMLPanel>
                <g:HTMLPanel styleName="{style.buttonsDiv}">
                    <g:Label>Institution</g:Label>
                    <g:TextBox></g:TextBox>
                </g:HTMLPanel>
                <g:HTMLPanel styleName="{style.buttonsDiv}">
                    <g:Label>Department</g:Label>
                    <g:TextBox></g:TextBox>
                </g:HTMLPanel>

                <g:HTMLPanel styleName="{style.buttonsDiv}">
                    <g:Button ui:field="submit">Submit</g:Button>
                    <g:Button ui:field="goBack">Cancel</g:Button>
                </g:HTMLPanel>
            </g:HTMLPanel>
        </g:DialogBox>
    </g:VerticalPanel>
</ui:UiBinder> 

如果你真的想将对话框本身居中,你应该做更多的考虑,它不是那么简单。您可能想看看PopupPanel 类中center() 方法的实现。

【讨论】:

  • 您可以为对象设置负边距,等于其宽度和高度的一半;这将使其完全居中,但您需要设置固定大小才能使其正常工作。
  • @Marconius 你怎么能只使用 css 做到这一点?
  • 谢谢 Marconius,这正是我想要的。
猜你喜欢
  • 2012-02-14
  • 1970-01-01
  • 2011-07-19
  • 2011-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-04
  • 2013-04-09
相关资源
最近更新 更多