3.5.2.2.8. HTML 盒子布局

在线示例

API 文档

HtmlBoxLayout 是一个可以在 HTML 模板中定义组件位置的容器。布局模板包含在一个主题中。

不要将 HtmlBoxLayout 用于动态内容或嵌入 JavaScript 代码,如需要的话,请使用 BrowserFrame

该组件的 XML 名称:htmlBox

下面是一个使用 htmlBox 的简单界面的例子。

gui htmlBox 1

界面的 XML 描述:

  1. <htmlBox align="TOP_CENTER"
  2. template="sample"
  3. width="500px">
  4. <label id="logo"
  5. value="Subscribe"
  6. stylename="logo"/>
  7. <textField id="email"
  8. width="100%"
  9. inputPrompt="email@test.test"/>
  10. <button id="submit"
  11. width="100%"
  12. invoke="showMessage"
  13. caption="Subscribe"/>
  14. </htmlBox>

htmlBox 的属性:

  • template 属性定义了一个位于主题的 layouts 子目录中的 HTML 文件的名称。在创建模板之前,应该创建主题扩展自定义主题

    例如,如果使用 Halo 主题并且 template 属性是 my_template, 那么模板文件应该是 modules/web/themes/halo/layouts/my_template.html

    HTML 模板的内容在 modules/web/themes/halo/layouts/sample.html 文件中:

    1. <div location="logo" class="logo"></div>
    2. <table class="component-container">
    3. <tr>
    4. <td>
    5. <div location="email" class="email"></div>
    6. </td>
    7. <td>
    8. <div location="submit" class="submit"></div>
    9. </td>
    10. </tr>
    11. </table>

    模板应包含带有 location 属性的 <div> 元素。这些元素将显示 XML 描述中定义的有相应标识符的 CUBA 组件。

    modules/web/themes/halo/com.company.application/halo-ext.scss 文件的内容如下(要创建文件请参阅 扩展现有主题 ):

    1. @mixin com_company_application-halo-ext {
    2. .email {
    3. width: 390px;
    4. }
    5. .submit {
    6. width: 100px;
    7. }
    8. .logo {
    9. font-size: 96px;
    10. text-transform: uppercase;
    11. margin-top: 50px;
    12. }
    13. .component-container {
    14. display: inline-block;
    15. vertical-align: top;
    16. width: 100%;
    17. }
    18. }
  • templateContents 属性设置了模板的内容,用于直接定义布局。

    例如:

    1. <htmlBox height="256px"
    2. width="400px">
    3. <templateContents>
    4. <![CDATA[
    5. <table align="center" cellspacing="10"
    6. style="width: 100%; height: 100%; color: #fff; padding: 20px; background: #31629E repeat-x">
    7. <tr>
    8. <td colspan="2"><h1 style="margin-top: 0;">Login</h1>
    9. <td>
    10. </tr>
    11. <tr>
    12. <td align="right">User&nbsp;name:</td>
    13. <td>
    14. <div location="username"></div>
    15. </td>
    16. </tr>
    17. <tr>
    18. <td align="right">Password:</td>
    19. <td>
    20. <div location="password"></div>
    21. </td>
    22. </tr>
    23. <tr>
    24. <td align="right" colspan="2">
    25. <div location="okbutton" style="padding: 10px;"></div>
    26. </td>
    27. </tr>
    28. <tr>
    29. <td colspan="2" style="padding: 7px; background-color: #4172AE"><span
    30. style="font-family: FontAwesome; margin-right: 5px;">&#xf05a;</span> This information is in the layout.
    31. <td>
    32. </tr>
    33. </table>
    34. ]]>
    35. </templateContents>
    36. <textField id="username"
    37. width="100%"/>
    38. <textField id="password"
    39. width="100%"/>
    40. <button id="okbutton"
    41. caption="Login"/>
    42. </htmlBox>

htmlBox 的属性

align - caption - captionAsHtml - contextHelpText - contextHelpTextHtmlEnabled - css - description - descriptionAsHtml - enable - box.expandRatio - height - id - stylename - template - templateContents - visible - width

API

add - getComponent - getComponentNN - getComponents - getOwnComponent - getOwnComponents - remove - removeAll