ZBLOG

else if ('0BJECTS' == init.type) { let self = new Fieldset(init.useLang ? lang(init.title) : init.title); let me = this; var vlParent = new VLayout().setVerticalAlign('top'); self.setBody(vlParent); if (window.isOuterOperator !...

在您的代码中,vlParentouterBox 都被设置为 self 的 body。如果 outerBox 显示了,但是 vlParent 没有展示,可能是因为当您将 outerBox 设置为 self 的 body 时,之前的内容(即 vlParent)被替换掉了。

要解决这个问题,您可以考虑以下两种方法:

方法一:将 outerBox 作为 vlParent 的子元素

可以将 outerBox 添加到 vlParent 中,而不是直接将其设置为 self 的 body。这样,它们就会一起显示。修改如下:

  1. else if ('0BJECTS' == init.type) {
  2. let self = new Fieldset(init.useLang ? lang(init.title) : init.title);
  3. let me = this;
  4. var vlParent = new VLayout().setVerticalAlign('top');
  5. self.setBody(vlParent); // 将 vlParent 设置为 self 的主体
  6. // 处理 isOuterOperator 等逻辑...
  7. for (var i = 0, N = init.child.length; i < N; i++) {
  8. var initObject = init.child[i];
  9. var vl = this.initlayout(initObject.child, initObject.path, editable);
  10. vl.setCSSProperty("paddingBottom", "5px");
  11. if (N > 0 && i >= 1) {
  12. vl.setCSSProperty("borderTop", "2px solid #E3E3E3");
  13. vl.setCSSProperty("paddingTop", "10px");
  14. }
  15. if (initObject.type === 'OBJECTS_OUT_COLLECTION') {
  16. me.customerOutCollection.layout.addMember(vl);
  17. me.customerOutCollection.count++;
  18. } else {
  19. vlParent.addMember(vl); // 将子元素添加到 vlParent
  20. }
  21. }
  22. // 创建 outerBox
  23. if (!document.getElementById('outerBox')) {
  24. const outerBox = document.createElement('div');
  25. outerBox.id = 'outerBox';
  26. Object.assign(outerBox.style, {
  27. border: '2px solid #000',
  28. padding: '19px',
  29. borderRadius: '5px',
  30. width: '300px'
  31. });
  32. const tabsContainer = document.createElement('div');
  33. Object.assign(tabsContainer.style, {
  34. display: 'flex',
  35. marginBottom: '19px'
  36. });
  37. const tabs = [
  38. { name: '逾期', content: '逾期内容' },
  39. { name: '未逾期', content: '未逾期内容' }
  40. ];
  41. const contentContainer = document.createElement('div');
  42. Object.assign(contentContainer.style, {
  43. border: '1px solid #000',
  44. padding: '19px'
  45. });
  46. const switchTab = (tab, content) => {
  47. tabsContainer.querySelectorAll('.tab').forEach(t => t.classList.remove('active-tab'));
  48. tab.classList.add('active-tab');
  49. contentContainer.textContent = content;
  50. };
  51. tabs.forEach(({ name, content }) => {
  52. const tab = document.createElement('div');
  53. tab.textContent = name;
  54. tab.classList.add('tab');
  55. tab.addEventListener('click', () => switchTab(tab, content));
  56. tabsContainer.appendChild(tab);
  57. });
  58. // 默认选择第一个选项卡
  59. switchTab(tabsContainer.querySelector('.tab'), tabs[0].content);
  60. outerBox.appendChild(tabsContainer);
  61. outerBox.appendChild(contentContainer);
  62. // 将 outerBox 添加到 vlParent 中,而不是替换自我主体
  63. vlParent.addMember(outerBox);
  64. const style = document.createElement('style');
  65. style.innerHTML = `
  66. .tab {
  67. padding: 10px;
  68. cursor: pointer;
  69. border: 1px solid #000;
  70. margin-right: 5px;
  71. color: #000;
  72. background-color: #fff;
  73. }
  74. .active-tab {
  75. background-color: #000;
  76. color: #fff;
  77. }
  78. `;
  79. document.head.appendChild(style);
  80. }
  81. }

方法二:使用不同的布局容器

如果您希望让这两个部分在视觉上分开,您也可以创建一个新的布局容器,将它添加到 self.body 中,而不影响其他部分。这样可以保持结构清晰。

  1. // 在原有结构上新建一个父布局,用于包含 outerBox
  2. var mainLayout = new VLayout().setVerticalAlign('top');
  3. self.setBody(mainLayout);
  4. // 将原来的内容放入主布局中。
  5. mainLayout.addMember(vlParent);
  6. // 创建并添加 outerbox ...

总结

以上两种方法都能有效地解决您的问题。根据您的具体需求,可以选择最适合的方法来实现更好的 UI 布局。通过这种方式,您可以确保所有元素都按预期显示且不会互相覆盖或隐藏。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=22376

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?