【发布时间】:2020-12-23 21:52:54
【问题描述】:
我正在使用 contenteditable div 创建一个文本编辑器。当有人按下Enter 键时,它会创建一个新块,现在我需要专注于新块,并且我想在这个新块上添加一个新类.is-focused。
[注意]:我使用 javascript 作为新块,因为它只是在默认的 contenteditable 行为下复制前一个块。我不需要前一个区块,但需要一个全新的区块。
let
root = document.querySelector('.root'),
old_block = document.querySelectorAll('.block'),
dummy_id = 2;
root.addEventListener('keydown', (e) => {
if (e.key !== 'Enter')
return;
e.preventDefault();
dummy_id++;
let template =
`<div id="block-${dummy_id}" class="block">Block ${dummy_id}</div>`;
root.insertAdjacentHTML('beforeend', template);
document.querySelector(`#block-${dummy_id}`).focus();
})
*,
*::before,
*::after {
box-sizing: border;
}
body {
margin: 0;
}
.root {
max-width: 700px;
margin: 1rem auto;
}
.root:focus {
outline: 0;
}
.block {
font-size: 21px;
line-height: 1.8;
color: rgba(0, 0, 0, .83)
}
.is-focused {
background-color: rgb(240, 254, 255);
}
<div class="root" contenteditable="true">
<div id="block-1" class="block">Block 1 [Paragraph]</div>
<div id="block-2" class="block">Block 2 [IMG]</div>
</div>
【问题讨论】:
-
我认为这可能与您的问题有关:stackoverflow.com/questions/2388164/…
-
对不起,这不是我的回答
标签: javascript