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