调整网格大小

问题描述 投票:0回答:1

所以我有这个网格,我想让它水平调整大小

<div id="grid">
        <div class="editor-container" id="editor-container">
            <!-- Ensure each textarea has a unique ID -->
            <textarea class="editor" id="htmlEditor"><!--Your initial HTML content here-->
            <b>Hello World!</b></textarea>
            <textarea class="editor" id="jsEditor" style="display: none;"><!--Your initial JS content here--></textarea>
            <textarea class="editor" id="cssEditor" style="display: none;">  body, html {
                height: 100%;
                margin: 0;
                font-family:'Helvetica Neue', sans-serif;
            }
            </textarea>
        </div>
        <div id="divider"> </div>
        <div class="output-container">
            <iframe id="output"></iframe>
        </div>
    </div>

如何调整其大小,以便我可以拖动分隔线并调整其大小并具有响应能力?

我尝试使用鼠标按下事件,但它仅在向左拖动时才有效,当我向右拖动时,它会断开连接,除非我拖动得很慢

javascript html css css-grid
1个回答
-1
投票

要创建具有可拖动分隔线的可调整大小的网格,您可以使用 JavaScript 和 CSS。这是一个帮助您入门的简化示例:

<div id="grid">
  <div class="editor-container" id="editor-container">
    <!-- Your textareas go here -->
  </div>
  <div id="divider"></div>
  <div class="output-container">
    <iframe id="output"></iframe>
  </div>
</div>

<style>
  #grid {
    display: grid;
    grid-template-columns: 1fr auto 1fr; /* Three columns with a resizable middle column */
    height: 100vh; /* Adjust the height as needed */
  }

  #divider {
    cursor: ew-resize; /* Set cursor to show resize direction */
    background-color: #ddd;
    width: 10px;
    height: 100%;
  }

  #editor-container,
  .output-container {
    overflow: hidden; /* Ensure child elements do not overflow */
  }
</style>

<script>
  const divider = document.getElementById('divider');
  const editorContainer = document.getElementById('editor-container');

  let isResizing = false;

  divider.addEventListener('mousedown', (event) => {
    isResizing = true;
    document.addEventListener('mousemove', handleMouseMove);
    document.addEventListener('mouseup', () => {
      isResizing = false;
      document.removeEventListener('mousemove', handleMouseMove);
    });
  });

  function handleMouseMove(event) {
    if (isResizing) {
      const newWidth = event.clientX;
      editorContainer.style.width = `${newWidth}px`;
    }
  }
</script>

此示例设置了一个包含三列的网格布局,并在中间列中使用了可调整大小的分隔线。 JavaScript 代码向分隔线添加了 mousedown 事件监听器,当用户拖动时,它会动态调整左列的宽度。您可以根据您的特定需求调整此示例,并根据需要添加更多样式。

© www.soinside.com 2019 - 2024. All rights reserved.