【问题标题】:Margin of right div should match the left textarea width while resizing调整大小时,右侧 div 的边距应与左侧 textarea 宽度匹配
【发布时间】:2017-09-25 22:06:05
【问题描述】:

在调整左侧<textarea>(带有右下角调整区域)的大小时,如何让右侧<div> 的边距自动匹配<textarea> 的宽度?

* { margin: 0; padding: 0; }
#a {  width: 50%; resize: horizontal; height: 100%; position: fixed; }
#b { margin-left: 50%; }
<textarea id="a">hello</textarea>
<div id="b">h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h</div>

注意:左侧 textarea 应始终占据浏览器高度的 100%(始终显示编辑器),而右侧 div 可以具有非常长的高度(要滚动的页面很多)。


编辑:这几乎有效:

$('#a').data('x', $('#a').outerWidth()).mousemove(function () {
        if ($('#a').outerWidth() != $('#a').data('x')) {
            $('#b').css('margin-left', $('#a').outerWidth());
            $('#a').data('x', $('#a').outerWidth());
        }
    });
* { margin: 0; padding: 0; }
#a {  width: 50%; resize: horizontal; height: 100%; position: fixed; }
#b { margin-left: 50%; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<textarea id="a">hello</textarea>
<div id="b">h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h</div>

但是如果你点击 textareas 的大小调整区域,然后将鼠标拖出浏览器窗口(或者如果你将窗口拖到浏览器的控制台面板上),它就不起作用)。

【问题讨论】:

    标签: javascript html css


    【解决方案1】:

    我认为 position: fixed 不可能做到这一点 - 你可以将所有内容放在一个弹性容器中并将 textarea 设置为 height: 100vh。尝试运行下面的 sn-p。

    * {
      margin: 0;
      padding: 0;
    }
    #flex {
      display: flex;
    }
    #a {
      width: 50%;
      resize: horizontal;
    }
    <div id='flex'>
      <textarea id="a">hello</textarea>
      <div id="b">h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h<br>h</div>
    </div>

    【讨论】:

    • 感谢@DanKreiger,但左侧文本区域应始终保持浏览器高度的 100%,并且在我们滚动页面时不要移动。 (看看当你垂直滚动整个页面时我的代码 sn-p 会发生什么:左边的 textarea 不动)如何修改你的代码来做到这一点?
    • 我刚刚注意到 - 我去看看。
    • 我刚刚更新了sn-p。你可以在右边滚动&lt;div&gt;,但也许你想滚动一切?
    • 这不起作用@DanKreiger,因为当您在浏览器中打印页面时,它只会打印一页(也打印内部滚​​动条:))
    【解决方案2】:

    这应该有效:

    var a_width = $("#a").outerWidth();
        $("#a").mouseup(function () {
        	if (a_width != $("#a").outerWidth()) {
        		a_width = $("#a").outerWidth();
        		$("#b").css( { marginLeft : a_width });
        	}
        });

    【讨论】:

    • 这不是和我在问题末尾的 sn-p 几乎一样(在“编辑”之后)。您可以编辑您的答案以使用code snippet(它允许我们快速测试它)。提前致谢。
    猜你喜欢
    • 2011-08-04
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 2015-07-03
    • 1970-01-01
    • 2018-02-19
    相关资源
    最近更新 更多