代码之家  ›  专栏  ›  技术社区  ›  MaxCore

将窗口滚动到ContentEditable块的当前行

  •  3
  • MaxCore  · 技术社区  · 6 年前

    我有一张很简单的表格,页脚很粘

    <div contenteditable>Start typing ...</div>
    
    <div class="sticky-footer">
      <button>Submit</button>
    </div>
    

    https://codepen.io/anon/pen/vaNgQV

    当文本到达页脚时,它就在它下面

    因此,我正在寻找一个简单的解决方案,自动滚动窗口,如果有些内容是重叠的,而键入

    编辑

    我想如果 contenteditable div有自己的滚动条,但是是否有全局滚动条的解决方案?

    5 回复  |  直到 6 年前
        1
  •  3
  •   wintercounter    6 年前

    试用 https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView

    const el = document.querySelector('[contenteditable]')
    el.addEventListener('keyup', ({target: {lastChild}}) => lastChild.scrollIntoView())
    

    https://codepen.io/wintercounter/pen/pZjeLW

    ContentEditable正在创建 div 每次换行都是S。我们只是滚动到整个可编辑区域的最后一个子区域。

        2
  •  4
  •   Mateusz Byczkowski    6 年前

    也许用 style="overflow: scroll"; <div contenteditable>Start typing ...</div>

    <div contenteditable style="overflow: scroll";>Start typing ...</div>
    
    <div class="sticky-footer">
      <button>Submit</button>
    </div>
    
        3
  •  4
  •   Sakkeer A    6 年前

    我在这里修改了你的代码。

    Click Here To See

    <div contenteditable class="editableContent">Start typing ...</div>
    
    <div class="sticky-footer">
      <button>Submit</button>
    </div>
    
    
    .sticky-footer {
     position:sticky;
     bottom:0;
     padding:20px 0;
     background:#eee
     }
    
     .editableContent{
    
      min-height: 30px;
      overflow: auto;
      max-height: 50px;
      }
    
        4
  •  2
  •   Girisha C    6 年前

    使用 overflow: auto 通过设置 max-height 通过计算视图端口高度减去粘性页脚的高度,可编辑内容容器的。请检查下面的工作示例:

    .sticky-footer {
      position:sticky;
      bottom:0;
      padding:20px 0;
      background:#eee
    }
    .content-editable{
      min-height: 30px;
      overflow: auto;
      max-height: calc(100vh - 65px);
    }
    <div contenteditable class="content-editable">Start typing ...</div>
    <div class="sticky-footer">
      <button>Submit</button>
    </div>
        5
  •  2
  •   Code_Ninja Julius S.    6 年前

    您只需在笔中添加以下代码:

    div[contenteditable]{
      height:calc(100vh - 70px);
      overflow-y:scroll;
    }
    body{
      overflow:hidden;
    }
    

    下面是代码的工作示例:

    .sticky-footer {
      position:sticky;
      bottom:0;
      padding:20px 0;
      background:#eee
    }
    div[contenteditable]{
      height:calc(100vh - 70px);
      overflow-y:scroll;
    }
    body{
      overflow:hidden;
    }
     <div contenteditable>Start typing ...</div>
    <div class="sticky-footer">
      <button>Submit</button>
    </div> 

    希望这有帮助。