ZBLOG

再换方法

当然可以!如果你希望使用另一种方法来解决 vlParentouterBox 的冲突,我们可以考虑使用 CSS Flexbox 或 Grid 布局来同时展示这两个元素,而不是在 DOM 结构中直接嵌套它们。这样,两个组件可以并排或垂直排列,从而达到你想要的效果。

修改方案三:使用 Flexbox 布局

  1. 创建一个包含 vlParentouterBox 的外部容器。
  2. 将这个外部容器的样式设置为 Flexbox,以便能够并排显示。

以下是实现这一点的示例代码:

  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. // 创建外部容器
  6. const container = document.createElement('div');
  7. // 设置容器为 flexbox
  8. Object.assign(container.style, {
  9. display: 'flex',
  10. flexDirection: 'column', // 可以改为 'row' 如果你想并排显示
  11. gap: '10px', // 间距
  12. padding: '10px'
  13. });
  14. // 添加 vlParent 到容器中
  15. container.appendChild(vlParent);
  16. // 创建 outerBox
  17. if (!document.getElementById('outerBox')) {
  18. const outerBox = document.createElement('div');
  19. outerBox.id = 'outerBox';
  20. Object.assign(outerBox.style, {
  21. border: '2px solid #000',
  22. padding: '19px',
  23. borderRadius: '5px',
  24. width: '300px'
  25. });
  26. const tabsContainer = document.createElement('div');
  27. Object.assign(tabsContainer.style, {
  28. display: 'flex',
  29. marginBottom: '19px'
  30. });
  31. const tabs = [
  32. { name: '逾期', content: '逾期内容' },
  33. { name: '未逾期', content: '未逾期内容' }
  34. ];
  35. const contentContainer = document.createElement('div');
  36. Object.assign(contentContainer.style, {
  37. border: '1px solid #000',
  38. padding: '19px'
  39. });
  40. const switchTab = (tab, content) => {
  41. tabsContainer.querySelectorAll('.tab').forEach(t => t.classList.remove('active-tab'));
  42. tab.classList.add('active-tab');
  43. contentContainer.textContent = content;
  44. };
  45. tabs.forEach(({ name, content }) => {
  46. const tab = document.createElement('div');
  47. tab.textContent = name;
  48. tab.classList.add('tab');
  49. tab.addEventListener('click', () => switchTab(tab, content));
  50. tabsContainer.appendChild(tab);
  51. });
  52. switchTab(tabsContainer.querySelector('.tab'), tabs[0].content);
  53. outerBox.appendChild(tabsContainer);
  54. outerBox.appendChild(contentContainer);
  55. // 将 outerBox 添加到外部容器中
  56. container.appendChild(outerBox);
  57. // 将最终的 container 设置为 self 的主体
  58. self.setBody(container);
  59. const style = document.createElement('style');
  60. style.innerHTML = `
  61. .tab {
  62. padding: 10px;
  63. cursor: pointer;
  64. border: 1px solid #000;
  65. margin-right: 5px;
  66. color: #000;
  67. background-color: #fff;
  68. }
  69. .active-tab {
  70. background-color: #000;
  71. color: #fff;
  72. }
  73. `;
  74. document.head.appendChild(style);
  75. }
  76. }

说明

  • Flexbox 布局:我们将外部容器 (container) 设置为 Flexbox,可以通过调整 flexDirection 属性来控制其子元素是垂直排列(column)还是水平排列(row)。
  • 间距:通过设置 gap 属性,可以轻松调整两个组件之间的间距。
  • 可扩展性:这种布局方式使得将来添加其他组件时会更方便,同时也保持了良好的结构和样式。

这种方法能够有效地管理多个 DOM 元素,并且具有较强的灵活性和可维护性。希望这对你有帮助!如果还有其他需求,请随时告诉我。


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?