div实时还原textarea的输入
本帖最后由 马黑黑 于 2023-1-5 22:54 编辑 <br /><br /><style>#inputbox {
width: 600px;
height: 360px;
display: block;
margin: auto;
padding: 8px;
border: 1px solid #ccc;
font: normal 16px/20px sans-serif;
word-break: break-all;
}
#showbox {
margin: auto;
margin-bottom: 10px;
padding: 8px;
border: 1px solid #ccc;
width: 600px;
height: 360px;
font: normal 16px/20px sans-serif;
white-space:pre-wrap;
word-break: break-all;
}
</style>
<div id="showbox"></div>
<textarea id="inputbox"></textarea>
<script>
inputbox.oninput = () => {
showbox.innerText = inputbox.value;
showbox.scrollTop = inputbox.scrollTop;
showbox.style.cssText += inputbox.clientHeight < inputbox.scrollHeight ? 'overflow-y : scroll' : 'overflow-y: auto';
}
inputbox.onscroll = () => showbox.scrollTop = inputbox.scrollTop;
</script> 本帖最后由 马黑黑 于 2023-1-5 21:30 编辑
这是通过 pencil code 敲出来的代码:<style>
#inputbox {
width: 600px;
height: 360px;
display: block;
margin: auto;
padding: 8px;
border: 1px solid #ccc;
font: normal 16px/20px sans-serif;
}
#showbox {
margin: auto;
margin-bottom: 10px;
padding: 8px;
border: 1px solid #ccc;
width: 600px;
height: 360px;
font: normal 16px/20px sans-serif;
white-space:pre-wrap;
word-break: break-all;
}
</style>
<div id="showbox"></div>
<textarea id="inputbox"></textarea>
<script>
inputbox.oninput = () => {
showbox.innerText = inputbox.value;
showbox.scrollTop = inputbox.scrollTop;
showbox.style.cssText += inputbox.clientHeight < inputbox.scrollHeight ? 'overflow-y : scroll' : 'overflow-y: auto';
}
inputbox.onscroll = () => showbox.scrollTop = inputbox.scrollTop;
</script>
下面那个框里输入的内容,都时时在上面的框里显示出来了,好神奇{:4_187:} 红影 发表于 2023-1-5 21:47
下面那个框里输入的内容,都时时在上面的框里显示出来了,好神奇
JS里设计了文本框的 oninput 事件,就是输入事件,它的每一次输入更新,div都同步接收文本框的内容,并且,两者的 scrollTop 即滚动高度保持一致,还根据文本框滚动条的有无同步设置div的垂直方向的滚动条。
JS还有一个事件,onscroll 事件,滚动事件,将div的滚动高度和自己的保持一致。
CSS也很重要,各属性尽可能与文本框默认的相关属性值一致。其中,高宽、边框、内边距、字体等要相一致,还有,由于div的特性,还需要设置 white-space 和 word-break,不然经不起推敲。 马黑黑 发表于 2023-1-5 22:07
JS里设计了文本框的 oninput 事件,就是输入事件,它的每一次输入更新,div都同步接收文本框的内容,并且 ...
这里面要考虑这么多细节的呢。学习了{:4_187:} 红影 发表于 2023-1-6 13:27
这里面要考虑这么多细节的呢。学习了
细节很多,方方面面都需要考虑的 马黑黑 发表于 2023-1-6 13:36
细节很多,方方面面都需要考虑的
做个工具真不容易{:4_204:} 红影 发表于 2023-1-6 15:49
做个工具真不容易
其实做什么都不是容易的,你觉得容易的时候,是你精于此道了 马黑黑 发表于 2023-1-6 18:01
其实做什么都不是容易的,你觉得容易的时候,是你精于此道了
是的,当隔行如隔山的时候,更觉得难上加难。 红影 发表于 2023-1-6 20:38
是的,当隔行如隔山的时候,更觉得难上加难。
入门很重要,入门了就能理解 马黑黑 发表于 2023-1-6 20:46
入门很重要,入门了就能理解
门都找不着{:4_173:} 红影 发表于 2023-1-7 10:34
门都找不着
导航用上 马黑黑 发表于 2023-1-7 11:16
导航用上
这个对导航没用{:4_173:} 红影 发表于 2023-1-7 16:37
这个对导航没用
导航用得好,入门就快 马黑黑 发表于 2023-1-7 17:57
导航用得好,入门就快
大门没在导航的搜索范围内{:4_173:} 红影 发表于 2023-1-7 21:31
大门没在导航的搜索范围内
精细点的导航都有 马黑黑 发表于 2023-1-7 21:51
精细点的导航都有
那还不如放大镜呢{:4_173:} 红影 发表于 2023-1-7 22:48
那还不如放大镜呢
也可以 马黑黑 发表于 2023-1-8 21:45
也可以
你最喜欢用的东东{:4_173:} 红影 发表于 2023-1-8 22:39
你最喜欢用的东东
必须用用