一个 contenteditable div 怎么能不在非空白处打断单词并表现得像一个正常的 div?
How can a contenteditable div not break words on non-whitespace and behave as a normal div?
我有一个案例,用户将文本输入到一个 contenteditable div 中,结果稍后显示在一个正常的 div 中。输入 div 设置了最大宽度以允许文本换行。
问题是文本在输入和输出中的显示不同。输入似乎在单词内部中断,而输出让文本溢出并且只在空白处中断。是否有可能在输入中获得相同的行为?
查看此 fiddle 示例:https://jsfiddle.net/s1m40m2p/1/
html
<body>
<div contenteditable="true" id="input-div" class="both-divs"></div>
<div id="output-div" class="both-divs"></div>
</body>
css
.both-divs {
min-height : 20px;
max-width: 100px;
font-size: 16px;
font-family: monospace;
overflow: visible;
}
#input-div {
outline: 1px solid red;
}
#output-div {
outline: 1px solid blue;
}
js
const inputElt = document.getElementById('input-div')
const outputElt = document.getElementById('output-div')
inputElt.addEventListener('input', () => {
outputElt.innerText = inputElt.innerText;
})
输出
尝试在 #input-div 中添加 overflow-wrap:normal
{` 您的问题将得到解决
const inputElt = document.getElementById('input-div')
const outputElt = document.getElementById('output-div')
inputElt.addEventListener('input', () => {
outputElt.innerText = inputElt.innerText;
})
.both-divs {
min-height : 20px;
max-width: 100px;
font-size: 16px;
font-family: monospace;
overflow: visible;
}
#input-div {
outline: 1px solid red;
overflow-wrap:normal;
}
#output-div {
outline: 1px solid blue;
}
<html>
<body>
<div contenteditable="true" id="input-div" class="both-divs">
</div>
<div id="output-div" class="both-divs">
</div>
</body>
</html>
我有一个案例,用户将文本输入到一个 contenteditable div 中,结果稍后显示在一个正常的 div 中。输入 div 设置了最大宽度以允许文本换行。
问题是文本在输入和输出中的显示不同。输入似乎在单词内部中断,而输出让文本溢出并且只在空白处中断。是否有可能在输入中获得相同的行为?
查看此 fiddle 示例:https://jsfiddle.net/s1m40m2p/1/
html
<body>
<div contenteditable="true" id="input-div" class="both-divs"></div>
<div id="output-div" class="both-divs"></div>
</body>
css
.both-divs {
min-height : 20px;
max-width: 100px;
font-size: 16px;
font-family: monospace;
overflow: visible;
}
#input-div {
outline: 1px solid red;
}
#output-div {
outline: 1px solid blue;
}
js
const inputElt = document.getElementById('input-div')
const outputElt = document.getElementById('output-div')
inputElt.addEventListener('input', () => {
outputElt.innerText = inputElt.innerText;
})
输出
尝试在 #input-div 中添加 overflow-wrap:normal
{` 您的问题将得到解决
const inputElt = document.getElementById('input-div')
const outputElt = document.getElementById('output-div')
inputElt.addEventListener('input', () => {
outputElt.innerText = inputElt.innerText;
})
.both-divs {
min-height : 20px;
max-width: 100px;
font-size: 16px;
font-family: monospace;
overflow: visible;
}
#input-div {
outline: 1px solid red;
overflow-wrap:normal;
}
#output-div {
outline: 1px solid blue;
}
<html>
<body>
<div contenteditable="true" id="input-div" class="both-divs">
</div>
<div id="output-div" class="both-divs">
</div>
</body>
</html>