<small id='KRiCI'></small><noframes id='KRiCI'>

    1. <i id='KRiCI'><tr id='KRiCI'><dt id='KRiCI'><q id='KRiCI'><span id='KRiCI'><b id='KRiCI'><form id='KRiCI'><ins id='KRiCI'></ins><ul id='KRiCI'></ul><sub id='KRiCI'></sub></form><legend id='KRiCI'></legend><bdo id='KRiCI'><pre id='KRiCI'><center id='KRiCI'></center></pre></bdo></b><th id='KRiCI'></th></span></q></dt></tr></i><div id='KRiCI'><tfoot id='KRiCI'></tfoot><dl id='KRiCI'><fieldset id='KRiCI'></fieldset></dl></div>
        <bdo id='KRiCI'></bdo><ul id='KRiCI'></ul>
      <legend id='KRiCI'><style id='KRiCI'><dir id='KRiCI'><q id='KRiCI'></q></dir></style></legend><tfoot id='KRiCI'></tfoot>

      您如何允许用户手动调整 &lt;div&gt;垂直元素?

      How do you allow a user to manually resize a lt;divgt; element vertically?(您如何允许用户手动调整 lt;divgt;垂直元素?)
      <legend id='v66Px'><style id='v66Px'><dir id='v66Px'><q id='v66Px'></q></dir></style></legend>
            <bdo id='v66Px'></bdo><ul id='v66Px'></ul>

            <small id='v66Px'></small><noframes id='v66Px'>

            <i id='v66Px'><tr id='v66Px'><dt id='v66Px'><q id='v66Px'><span id='v66Px'><b id='v66Px'><form id='v66Px'><ins id='v66Px'></ins><ul id='v66Px'></ul><sub id='v66Px'></sub></form><legend id='v66Px'></legend><bdo id='v66Px'><pre id='v66Px'><center id='v66Px'></center></pre></bdo></b><th id='v66Px'></th></span></q></dt></tr></i><div id='v66Px'><tfoot id='v66Px'></tfoot><dl id='v66Px'><fieldset id='v66Px'></fieldset></dl></div>
          • <tfoot id='v66Px'></tfoot>
                  <tbody id='v66Px'></tbody>
                本文介绍了您如何允许用户手动调整 &lt;div&gt;垂直元素?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                问题描述

                我在另一个 div 中有 2 个 div 元素,它们每个都显示为一个块.所以 div1 就在 div2 的上方.

                I have 2 div elements inside another div, and they are displayed as a block each. So div1 ends up right above div2.

                我想添加一个用户可以单击并拖动的栏",最终会调整 div2 的大小,并且 div1 将由数量相同.

                I want to add a "bar" of some kind that the user can click and drag which will end up resizing div2, and div1 will be automatically resized by the same amount.

                div1div2 的父级有样式:display:flex;flex-direction:column;div1flex-grow:1 所以它会自动调整大小.

                The parent of div1 and div2 has style: display:flex;flex-direction:column; and div1 has flex-grow:1 so it automatically resizes.

                我希望调整大小栏是这样的:

                I want the resize bar to be something like this:

                如何添加这样的内容?还有什么方法可以改变它在 CSS 中的外观吗?

                How do I add something like this? Also is there any way I can change the look of it in CSS?

                推荐答案

                在你的 column flexbox 你可以使用 resize 在其中一个 div 上,并使用 flex-grow 自动调整另一个 设置为 1 - 缺点滑块 不是很可定制:

                In your column flexbox you can use resize on one of the divs and adjust the other automatically using flex-grow set to one - the downside is that the slider is not very customizeable:

                • resize: vertical 添加到弹性项目之一
                • flex: 1 添加到另一个 flex 项(以便 this flex 项将在调整大小时自动调整以响应另一个 flex 项的高度变化)
                • add resize: vertical to one of the flex items
                • add flex: 1 to the other flex item (so that this flex item will adjust automatically in response to the changing height of the other flex item as it is resized)

                body {
                  margin: 0;
                }
                
                .outer {
                  display: flex;
                  flex-direction: column;
                  height: 100vh;
                }
                
                .block {
                  height: 50%;
                }
                
                .block-1 {
                  background-color: red;
                  resize: vertical; /* resize vertical */
                  overflow: auto; /* resize works for overflow other than visible */
                }
                
                .block-2 {
                  background-color: green;
                  flex: 1; /* adjust automatically */
                }

                <div class="outer">
                  <div class="block block-1">
                    Block 1
                  </div>
                  <div class="block block-2">
                    Block 2
                  </div>
                </div>

                相反,您可以使用 注册 mousemove 监听器的 mousedown 监听器来更新 block-1 高度(以及 reset mouseup 事件) - 参见下面的演示:

                Instead you can use a mousedown listener that registers a mousemove listener that updates the block-1 height (and reset the mouseup event) - see demo below:

                let block = document.querySelector(".block-1"),
                  slider = document.querySelector(".slider");
                
                // on mouse down (drag start)
                slider.onmousedown = function dragMouseDown(e) {
                  // get position of mouse
                  let dragX = e.clientY;
                  // register a mouse move listener if mouse is down
                  document.onmousemove = function onMouseMove(e) {
                    // e.clientY will be the position of the mouse as it has moved a bit now
                    // offsetHeight is the height of the block-1
                    block.style.height = block.offsetHeight + e.clientY - dragX + "px";
                    // update variable - till this pos, mouse movement has been handled
                    dragX = e.clientY;
                  }
                  // remove mouse-move listener on mouse-up (drag is finished now)
                  document.onmouseup = () => document.onmousemove = document.onmouseup = null;
                }

                body {
                  margin: 0;
                }
                
                .outer {
                  display: flex;
                  flex-direction: column;
                  height: 100vh;
                }
                
                .block {
                  height: 50%;
                }
                
                .block-1 {
                  background-color: red;
                  resize: vertical; /* resize vertical */
                  overflow: auto; /* resize works for overflow other than visible */
                }
                
                .block-2 {
                  background-color: green;
                  flex: 1; /* adjust automatically */
                  min-height: 0;
                  overflow: hidden; /* hide overflow on small width */
                }
                
                .slider {
                  text-align: center;
                  letter-spacing: 10px;
                  background-color: #dee2e6;
                  cursor: row-resize;
                  user-select: none; /* disable selection */
                }

                <div class="outer">
                  <div class="block block-1">
                    Block 1
                  </div>
                  <div class="slider">slider</div>
                  <div class="block block-2">
                    Block 2
                  </div>
                </div>

                这篇关于您如何允许用户手动调整 &lt;div&gt;垂直元素?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                相关文档推荐

                quot;Each child in an array should have a unique key propquot; only on first time render of page(“数组中的每个孩子都应该有一个唯一的 key prop仅在第一次呈现页面时)
                How do I make a TextGeometry multiline? How do I put it inside a square so it wraps like html text does inside a div?(如何制作 TextGeometry 多线?如何将它放在一个正方形内,以便它像 html 文本一样包裹在 div 内?) - IT屋-程序员软件开发技术分享社
                Scale background image to fit ie8 window(缩放背景图像以适合 ie8 窗口)
                @fontface in IE7 (IETEster) not working properly(IE7 (IETEster) 中的@fontface 无法正常工作)
                Safari 5.1 breaks CSS table cell spacing(Safari 5.1 打破 CSS 表格单元格间距)
                Put in bold part of description in metatag Drupal module(将描述的粗体部分放在元标记 Drupal 模块中)
              • <legend id='VDnIG'><style id='VDnIG'><dir id='VDnIG'><q id='VDnIG'></q></dir></style></legend>

                    <bdo id='VDnIG'></bdo><ul id='VDnIG'></ul>

                      <tfoot id='VDnIG'></tfoot>
                          <i id='VDnIG'><tr id='VDnIG'><dt id='VDnIG'><q id='VDnIG'><span id='VDnIG'><b id='VDnIG'><form id='VDnIG'><ins id='VDnIG'></ins><ul id='VDnIG'></ul><sub id='VDnIG'></sub></form><legend id='VDnIG'></legend><bdo id='VDnIG'><pre id='VDnIG'><center id='VDnIG'></center></pre></bdo></b><th id='VDnIG'></th></span></q></dt></tr></i><div id='VDnIG'><tfoot id='VDnIG'></tfoot><dl id='VDnIG'><fieldset id='VDnIG'></fieldset></dl></div>
                            <tbody id='VDnIG'></tbody>

                        • <small id='VDnIG'></small><noframes id='VDnIG'>