Я должен производить ниже HTML.
<div class='container'>
<div class='row'>
<div class='col-sm border border-right-0'>column 1</div>
<div class='col-sm border'>column 2</div>
<div class='col-sm border border-left-0'>column 3</div>
</div>
</div>
То есть Bootstrap Grid.
Когда я пытаюсь расширить BlockEmbed, результат HTML такой же, как и выше.
Новнутри тега DIV форматирование невозможно.
Когда я пытаюсь расширить блок, результат HTML будет
<div class='container dv_container_border'><br></div>
, и на этот раз форматирование возможно.
ниже приведен код и весьНапример: https://codepen.io/youngjin-lee/pen/ExxYRBY?editors=1111
Как создать форматируемую вложенную структуру div?
let BlockEmbed = Quill.import('blots/block/embed');
class Div1 extends BlockEmbed {
static create(value) {
var node = super.create();
node.classList.add("dv_container");
var childNode = document.createElement('div');
childNode.classList.add("row", "hfull");
node.appendChild(childNode);
var ctNode1 = document.createElement('div');
var ctNode2 = document.createElement('div');
var ctNode3 = document.createElement('div');
ctNode1.classList.add("col-sm-4", "border", "border-right-0");
ctNode2.classList.add("col-sm-4", "border");
ctNode3.classList.add("col-sm-4", "border", "border-left-0");
childNode.appendChild(ctNode1);
childNode.appendChild(ctNode2);
childNode.appendChild(ctNode3);
return node;
}
}
Div1.blotName = 'div1';
Div1.className = 'container';
Div1.tagName = 'DIV';
Quill.register(Div1, true);
let Block = Quill.import('blots/block');
class Div2 extends Block {
static create(value) {
var node = super.create();
node.classList.add("dv_container_border");
var childNode = document.createElement('div');
childNode.classList.add("row", "hfull");
node.appendChild(childNode);
var ctNode1 = document.createElement('div');
var ctNode2 = document.createElement('div');
var ctNode3 = document.createElement('div');
ctNode1.classList.add("col-sm-4", "border", "border-right-0");
ctNode2.classList.add("col-sm-4", "border");
ctNode3.classList.add("col-sm-4", "border", "border-left-0");
childNode.appendChild(ctNode1);
childNode.appendChild(ctNode2);
childNode.appendChild(ctNode3);
return node;
}
}
Div2.blotName = 'div2';
Div2.className = 'container';
Div2.tagName = 'DIV';
Quill.register(Div2, true);
var div1 = document.querySelector('#div1');
div1.addEventListener('click', function () {
let range = quill.getSelection(true);
quill.insertText(range.index, '\n', Quill.sources.USER);
var dval = quill.insertEmbed(range.index + 1, 'div1', '', Quill.sources.USER);
quill.setSelection(range.index + 2, Quill.sources.SILENT);
console.log(quill.root.innerHTML + '\n');
console.log(JSON.stringify(dval));
});
var div2 = document.querySelector('#div2');
div2.addEventListener('click', function () {
let range = quill.getSelection(true);
quill.insertText(range.index, '\n', Quill.sources.USER);
var dval = quill.insertEmbed(range.index + 1, 'div2', '', Quill.sources.USER);
quill.setSelection(range.index + 2, Quill.sources.SILENT);
console.log(quill.root.innerHTML + '\n');
console.log(JSON.stringify(dval));
});